Saltar a contenido

¿Qué son las funciones?

Las funciones te permiten realizar operaciones más avanzadas dentro de las expresiones. Estas se escriben de la siguiente manera:

función(argumento1, argumento2)

Los argumentos son los datos que le pasas a la función para que haga su trabajo, van entre paréntesis y separados por comas.


Todas las funciones de VisualMaker

min()

Devuelve el número más pequeño entre los argumentos proporcionados.

Argumentos: números (sín límite).

Ejemplos:

{min(5, 7, 2, 6.1, 3)} ➡️ 2 (el número más pequeño)

{min(-5, -10, 3, 0)} ➡️ -10 (el menor considerando números negativos)

"El valor más bajo es {min(10, 20, 30)}" ➡️ "El valor más bajo es 10"


max()

Devuelve el número más grande entre los argumentos proporcionados.

Argumentos: números (sín límite).

Ejemplos:

{max(5, 7, 2, 6.1, 3)} ➡️ 7 (el número más grande)

{max(100, 50, 75)} ➡️ 100

"El número mayor es {max(3.5, 8.2, 6.8)}" ➡️ "El número mayor es 8.2"


round()

Redondea un número al entero más cercano o a una cantidad específica de decimales.

Argumento 1: número a redondear.

Argumento 2: (opcional) cantidad de decimales que debe tener el número redondeado.

Ejemplos:

{round(12.8649)} ➡️ 13 (redondea al entero más cercano)

{round(12.8649, 2)} ➡️ 12.86 (redondea a 2 decimales)

{round(0.44444, 3)} ➡️ 0.444 (redondea a 3 decimales)

"El valor aproximado es {round(7.5678, 1)}" ➡️ "El valor aproximado es 7.6"


ceil()

Redondea un número hacia arriba, al entero más cercano.

Argumento 1: número.

Ejemplos:

{ceil(8.5649)} ➡️ 9

{ceil(-3.4)} ➡️ -3 (el entero más cercano hacia arriba para números negativos)

"El número redondeado hacia arriba es {ceil(4.1)}" ➡️ "El número redondeado hacia arriba es 5"


floor()

Redondea un número hacia abajo, al entero más cercano.

Argumento 1: número.

Ejemplos:

{floor(8.5649)} ➡️ 8

{floor(-3.4)} ➡️ -4 (el entero más cercano hacia abajo para números negativos)

"El número redondeado hacia abajo es {floor(9.9)}" ➡️ "El número redondeado hacia abajo es 9"


random()

Genera un número aleatorio entre dos valores. Si uno de los argumentos tiene más decimales, el resultado los respetará.

Argumento 1: valor mínimo.

Argumento 2: valor máximo.

Ejemplos:

{random(1, 10)} ➡️ 3 (aleatorio entre 1 y 10)

{random(1.001, 2)} ➡️ 1.329 (aleatorio entre 1.001 y 2, el número devuelto tendrá 3 decimales)

"El número aleatorio es {random(100, 200)}" ➡️ "El número aleatorio es 152"


absolute()

Devuelve el valor absoluto de un número (remueve el signo negativo).

Argumento 1: número.

Ejemplos:

{absolute(-5)} ➡️ 5

{absolute(10)} ➡️ 10

"El valor absoluto de -3 es {absolute(-3)}" ➡️ "El valor absoluto de -3 es 3"


pick_one()

Selecciona un elemento al azar de los argumentos proporcionados.

Argumento 1: cualquier tipo de dato (sin límite).

Ejemplos:

{pick_one(5, "texto", True, 16)} ➡️ "texto" (elegido al azar)

{pick_one("rojo", "verde", "azul")} ➡️ "verde"

"El color elegido es {pick_one("rojo", "amarillo", "azul")}" ➡️ "El color elegido es azul"


pick_by_index()

Selecciona un elemento de una lista, tupla o texto según su posición (índice).

Argumento 1: Lista, tupla o string.

Argumento 2: Índice (empieza desde 0).

Ejemplos:

{pick_by_index(("John", "Mary", 10), 0)} ➡️ "John" (elegido el índice 0, es el primero)

{pick_by_index(["John", "Mary", 10], 1)} ➡️ "Mary" (elegido el índice 1, es el segundo)

{pick_by_index("texto", 3)} ➡️ "t" (elegido el índice 3 del texto, es el carácter número 4)

"El tercer elemento de la lista es {pick_by_index([5, 10, 15], 2)}" ➡️ "El tercer elemento de la lista es 15"

Nota sobre índices: Los índices siempre empiezan desde 0. Por ejemplo:

  • En ("a", "b", "c"), el índice 0 es "a", 1 es "b", y 2 es "c"

startswith()

Devuelve True si un texto comienza con un subtexto específico, en caso contrario devuelve False.

Argumento 1: Texto principal.

Argumento 2: Subtexto a verificar.

Ejemplos:

{startswith("esto es un string", "esto")} ➡️ True (el texto empieza por "esto")

{startswith("mi bot", "el")} ➡️ False


endswith()

Devuelve True si un texto termina con un subtexto específico, en caso contrario devuelve False.

Argumento 1: Texto principal.

Argumento 2: Subtexto a verificar.

Ejemplos:

{endswith("esto es un string", "ing")} ➡️ True (el texto termina en "ing")

{endswith("mi bot", "bot")} ➡️ True


capitalize()

Convierte la primera letra del texto en mayúscula y el resto en minúscula.

Argumento 1: Texto a capitalizar.

Ejemplos:

{capitalize("juan")} ➡️ "Juan"

{capitalize("HOLA")} ➡️ "Hola"

"Texto capitalizado: {capitalize('texto a modificar')}" ➡️ "Texto capitalizado: Texto a modificar"


capitalize_all()

Convierte la primera letra de cada palabra en mayúscula.

Argumento 1: Texto a capitalizar.

Ejemplo:

{capitalize_all("mi nombre es juan")} ➡️ "Mi Nombre Es Juan"

{capitalize_all("aprendiendo expresiones")} ➡️ "Aprendiendo Expresiones"

"Texto capitalizado completamente: {capitalize_all('hola desde telegram')}" ➡️ "Texto capitalizado completamente: Hola Desde Telegram"


len()

Devuelve la longitud de un texto, lista o tupla.

Argumento 1: Texto, lista o tupla.

Ejemplos:

{len("esto es un string")} ➡️ 17 (tiene una longitud de 17 caracteres)

{len(["rojo", "verde", "azul"])} ➡️ 3 (la lista tiene 3 elementos)

{len(("a", "b", "c", "d"))} ➡️ 4 (la tupla tiene 4 elementos)

"La longitud del texto es: {len('VisualMaker')}" ➡️ "La longitud del texto es: 11"


replace()

Eeemplaza todas las apariciones de un texto dentro de otro.

Argumento 1: Texto a reemplazar.

Argumento 2: Texto nuevo.

Argumento 3: Texto principal.

Ejemplos:

{replace("soleado", "lluvioso", "Hoy es un día soleado.")} ➡️ "Hoy es un día lluvioso."

{replace("perro", "gato", "Mi perro es adorable.")} ➡️ "Mi gato es adorable."

"Frase modificada: {replace('mañana', 'hoy', 'mañana será otro día')}" ➡️ "Frase modificada: hoy será otro día"


slice()

Realiza un corte en un texto, devolviendo una porción específica.

Argumento 1: Texto principal.

Argumento 2: Índice de inicio (opcional, si se omite se comienza desde el inicio)

Argumento 3: Índice de fin (opcional, si se omite se finaliza al final)

Ejemplos:

{slice("Hola Mundo", 2, 6)} ➡️ "la M"

{slice("VisualMaker es increible", 12)} ➡️ "es increíble" (desde el índice 12 hasta el final)

"Porción extraída: {slice('Cortando texto', 3, 9)}" ➡️ "Porción extraída: tando"


is_inside()

Devuelve True si un elemento está presente dentro de una lista, tupla o texto, devuelve False si no está.

Argumento 1: Elemento a buscar.

Argumento 2: Lista, tupla o texto.

Ejemplos:

{is_inside("John", ("John", "Mary", 10))} ➡️ True ("John" SÍ está en la tupla)

{is_inside("Pablo", ["John", "Mary", 10])} ➡️ False ("Pablo" NO está en la lista)

{is_inside("ex", "texto")} ➡️ True ("ex" SÍ está dentro de "texto")


is_string()

Devuelve True si el argumento es una cadena de texto (string), de lo contrario devuelve False.

Argumento 1: Elemento a verificar.

{is_string("hello")} ➡️ True

{is_string(123)} ➡️ False

{is_string(True)} ➡️ False


is_numeric()

Devuelve True si el argumento es numérico, de lo contrario devuelve False.

Argumento 1: Elemento a verificar.

Ejemplos:

{is_numeric(123)} ➡️ True

{is_numeric("3.14")} ➡️ True

{is_numeric("hello")} ➡️ False


is_bool()

Devuelve True si el argumento es un booleano, (True o False), de lo contrario devuelve False.

Argumento 1: Objeto a verificar.

Ejemplos:

{is_bool(True)} ➡️ True

{is_bool(False)} ➡️ True

{is_bool("False")} ➡️ False ("False" está entre comillas, por lo que no es un booleano, sino un string)


to_string()

Convierte un objeto en su representación como cadena de texto (string).

Argumento 1: Objeto a convertir.

Ejemplos:

{to_string(123)} ➡️ "123"

{to_string(True)} ➡️ "True"


to_number()

Convierte un objeto en un número flotante.

Argumento 1: Objeto a convertir.

Ejemplo:

{to_number("3.14")} ➡️ 3.14


to_integer()

Convierte un objeto en un número entero.

Argumento 1: Objeto a convertir.

Ejemplos:

{to_integer(3.14)} ➡️ 3

{to_integer("10")} ➡️ 10


to_upper()

Convierte un texto a mayúsculas.

Argumento 1: Texto a convertir.

Ejemplo:

{to_upper("hola visualmaker")} ➡️ "HOLA VISUALMAKER"


to_lower()

Convierte un texto a minúsculas.

Argumento 1: Texto a convertir.

Ejemplo:

{to_lower("HOLA VISUALMAKER")} ➡️ "hola visualmaker"


fix()

Ajusta el número de decimales de un número. Remueve los ceros al final. Devuelve como un número.

Argumento 1: Número a ajustar, puede ser un string que represente un número.

Argumento 2: Número de decimales deseados.

Ejemplos:

{fix(3.141592653589793, 2)} ➡️ 3.14

{fix(10.124054, 4)} ➡️ 10.124

{fix("42.50000", 1)} ➡️ 42.5


hardfix()

Ajusta el número de decimales de un número. Se mantienen los ceros al final. Devuelve un valor numérico en formato de cadena de texto (string).

Argumento 1: Número a ajustar.

Argumento 2: Número de decimales deseados.

Ejemplos:

{hardfix(10.124054, 4)} ➡️ "10.1240"

{hardfix(8.31, 8)} ➡️ "8.31000000"

{hardfix("42", 2)} ➡️ "42.00"


count()

Cuenta las apariciones de un subtexto dentro de un texto.

Argumento 1: Texto principal.

Argumento 2: Subtexto a contar.

Ejemplos:

{count("hello world", "o")} ➡️ 2 (o aparece 2 veces)

{count("abababab", "ab")} ➡️ 4 (ab aparece 4 veces)

{count("este es un ejemplo", "es")} ➡️ 2


find()

Devuelve la posición de la primera ocurrencia de un subtexto dentro del texto. Si no se encuentra, devuelve None.

Argumento 1: Texto principal.

Argumento 2: Subtexto a buscar.

Ejemplo:

{find("hello world", "world")} ➡️ 6

{find("Visual Maker", "X")} ➡️ None


condition()

Evalúa una condición y devuelve un valor basado en si es verdadera (True) o falsa (False).

Argumento 1: Condición a evaluar.

Argumento 2: Valor si es verdadera.

Argumento 3: Valor si es falsa.

Ejemplos:

{condition(5 > 3, "Verdadero", "Falso")} ➡️ "Verdadero"

{condition(2 == 7, "Es verdadero", "Es falso")} ➡️ "Es falso"

{condition(is_numeric(3.14), "Es número", "No es número")} ➡️ "Es número"

"¿15 es mayor a 10? {condition(15 > 10, 'Sí', 'No')}" ➡️ "¿15 es mayor a 10? Sí"


date_now()

Devuelve la fecha y hora actual en el horario UTC. No requiere argumentos.

Ejemplo:

{date_now()} ➡️ "01-03-2024 00:07:48"


date_now_tz()

Devuelve la fecha y hora actual según la zona horaria configurada. No requiere argumentos.

Ejemplo:

{date_now_tz()} ➡️ "01-03-2024 03:08:28"


apply_tz()

Aplica la zona horaria del bot a una fecha y hora.

Argumento 1: Fecha y hora.

Ejemplos:

{apply_tz("01-03-2024 00:07:48")} ➡️ "01-03-2024 02:07:48" (asumiendo que la zona horaria del bot es +2)


date_format()

Formatea una fecha y hora en un formato específico.

Argumento 1: Fecha y hora a formatear.

Argumento 2: Formato deseado (por defecto: "%d-%m-%Y %H:%M:%S").

Desglose

%d: Día del mes (01-31).

%m: Mes del año (01-12).

%Y (mayúscula): Año (4 dígitos).

%y (mínuscula): Año (2 dígitos).

%H (mayúscula): Hora en formato de 24 horas (00-23).

%h (mínuscula): Hora en formato de 12 horas (01-12).

%M: Minutos (00-59).

%S: Segundos (00-59).

%p: Mostrar meríodo (AM y PM).

Ejemplos:

{date_format("01-03-2024 00:07:48", "%d/%m/%Y")} ➡️ "01/03/2024"

{date_format("01-03-2024 00:07:48", "día %d, del mes %m, del año %Y")} ➡️ "día 01, del mes 03, del año 2024"

{date_format("01-03-2024 00:07:48", "%h:%M %p")} ➡️ "12:07 AM"

{date_format(date_joined, "%m-%y")} ➡️ "03-24" (de acuerdo a la fecha en la cual el usuario se unió al bot)


time_passed()

Calcula el tiempo transcurrido desde una fecha hasta el momento actual en una unidad específica, según el horario UTC.

Argumento 1: Fecha de inicio.

Argumento 2: (opcional) Unidad de tiempo (por defecto: 'seconds', pero también puede ser 'minutes', 'hours', o 'days').

Otras formas de medida

minutes: minute, m

seconds: second, s

hours: hour, h

days: day, d

Ejemplo:

{time_passed("29-02-2024", "days")} ➡️ 1.02588 (asumiendo que hoy es 01-03-2014)


time_left()

Calcula el tiempo restante hasta una fecha desde el momento actual en una unidad específica, según el horario UTC.

Argumento 1: Fecha de fin.

Argumento 2: (opcional) Unidad de tiempo (por defecto: 'seconds', pero también puede ser 'minutes', 'hours', o 'days').
Otras formas de medida

minutes: minute, m

seconds: second, s

hours: hour, h

days: day, d

Ejemplo:

{time_left("02-03-2024", "days")} ➡️ 0.97458 (asumiendo que hoy es 01-03-2014)


time_add()

Agrega una cantidad específica de tiempo a una fecha.

Argumento 1: Fecha inicial (string con formato `dd-mm-yyyy hh:mm:ss`).

Argumento 2: Cantidad de tiempo a agregar (número flotante).

Argumento 3: (opcional) Unidad de tiempo (por defecto: 'seconds', pero también puede ser 'minutes', 'hours', o 'days').

Otras formas de medida

minutes: minute, m

seconds: second, s

hours: hour, h

days: day, d

Ejemplos:

{time_add("01-03-2024 00:07:48", 30, "days")} ➡️ "31-03-2024 00:07:48"

{time_add("01-03-2024 10:00:00", 2, "hours")} ➡️ "01-03-2024 12:00:00".

{time_add("01-03-2024 00:00:00", 90, "minutes")} ➡️ "01-03-2024 01:30:00".

"En 15 segundos será: {time_add(date_now(), 15, 's')}".


time_diff()

Calcula la diferencia entre dos fechas y la expresa en una unidad específica.

Argumento 1: Primera fecha (string con formato `dd-mm-yyyy hh:mm:ss`).

Argumento 2: Segunda fecha (string con formato `dd-mm-yyyy hh:mm:ss`).

Argumento 3: Unidad de tiempo (`seconds`, `minutes`, `hours`, `days`).

Otras formas de medida

minutes: minute, m

seconds: second, s

hours: hour, h

days: day, d

Ejemplos:

{time_diff("01-03-2024", "02-03-2024", "days")} ➡️ 1

{time_diff("02-03-2024", "01-03-2024", "days")} ➡️ -1


progress_bar()

Genera una barra de progreso visual basada en un porcentaje dado.

Argumento 1: Porcentaje completado (número entre 0 y 100).

Argumento 2: Longitud total de la barra (número entero positivo).

Argumento 3: (opcional) Carácter para bloques completados (por defecto: `🟩`).

Argumento 4: (opcional) Carácter para bloques pendientes (por defecto: `⬜`)..

Ejemplos:

{progress_bar(30, 10)} ➡️ 🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️

{progress_bar(60, 10, "*", "-")} ➡️ ******----


urlencode()

Codifica caracteres especiales en una cadena según las reglas de URL.

Argumento 1: Cadena de texto (string) a codificar.

Argumento 2: (opcional) Caracteres considerados seguros (por defecto: `":/&=?"`).

Ejemplo:

{urlencode("https://www.example.com/search?q=visualmaker bot creator")} ➡️ "https://www.example.com/search?q=visualmaker%20bot%20creator"

{urlencode("Hola Mundo")} ➡️ "Hola%20Mundo"


urldecode()

Decodifica una cadena URL codificada.

Argumento 1: Cadena de texto (string) codificada.

Argumento 2: (opcional) Esquema de codificación (por defecto: `utf-8`).

Ejemplo:

{urldecode("https://www.example.com/search?q=visualmaker%20bot%20creator")} ➡️ "https://www.example.com/search?q=visualmaker bot creator"

{urldecode("Hola%20Mundo")} ➡️ "Hola Mundo"


loop()

Representa cursores como ref_list (listado de referidos de un usuario) y bot_top_ref (listado de los usuarios con más referidos del bot), y otros datos, en el formato deseado, con opciones de paginación. Esta función consume 3 ejecuciones con su uso.

Argumento 1: data, el cursor o los datos que se desean representar.

Argumento 2: text, una cadena de texto (string) en el formato deseado para la representación.

Argumento 3: (opcional) page, un número entero que indica la página desde la cual comenzar (por defecto: `0`, la primera página).

Argumento 4: (opcional) max_per_page, un número entero que indica el máximo de elementos a representar por página. (por defecto: `10` para cursores y 50 para otros tipos de datos).

Argumento 5: (opcional) values, una tupla de cadenas de texto (strings) que ayudan a mejorar la representación del texto.

Información

Puedes acceder a los detalles de cada usuario o elemento a través de item.(variable_nativa), vea las variables nativas aquí.

Lo que verás en los ejemplos como \n, significa nueva línea, es para representar al siguiente usuario debajo.

Ejemplos:

{loop(ref_list, '{item.first_name}\n', page=0)}: Cadena de texto con los nombres de los 10 primeros referidos, empezando por la primera pagina.

{loop(ref_list, '{item.first_name}\n', page=1)}: Cadena de texto con los nombres de los 10 primeros referidos, empezando por la primera pagina, empezando por la segunda pagina.

{loop(ref_list, '@{item.username}\n', max_per_page=3)}: Cadena de texto con los 3 primeros usuarios referidos del usuario que ejecutó la función.

{loop(bot_top_ref, '{} {item.first_name} ({item.id}) - {item.ref_count} referidos\n', max_per_page=3, values=('1️⃣', '2️⃣', '3️⃣'))}: Cadena de texto con los nombres y los ID entre paréntesis de los 3 usuarios con más referidos, además se formatea para darle un aspecto mas atractivo, mostrará algo similar a lo siguiente:

1️⃣ John (1234567) - 85 referidos

2️⃣ Mary (2345678) - 62 referidos

3️⃣ Pedro (3456789) - 41 referidos


filter()

Filtra elementos de una lista o diccionario según una condición.

Argumento 1: Condición (cadena de texto).

Argumento 2: Lista o diccionario.

Ejemplos:

{filter('x > 5', [3, 7, 2, 9, 6, 1, 8])} ➡️ [7, 9, 6, 8]: Devuelve una lista con los elementos mayores que 5.

{filter("x % 2 == 0", [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])} ➡️ [2, 4, 6, 8, 10]: Devuelve una lista con todos los números pares.

{filter('len(x) > 5', ['apple', 'banana', 'orange', 'strawberry', 'grape'])} ➡️ ['banana', 'orange', 'strawberry']: Devuelve una lista con los elementos que tienen más de 5 caracteres.

{filter('x.edad > 25', {'Alice': {'edad': 30, 'genero': 'F'}, 'Bob': {'edad': 22, 'genero': 'M'}, 'Charlie': {'edad': 35, 'genero': 'M'}})} ➡️ [{'edad': 30, 'genero': 'F'}, {'edad': 35, 'genero': 'M'}]: Filtra un diccionario de personas para obtener las que tienen más de 25 años.

{filter('x.estado == True', {'123': {'nombre': 'John', 'estado': True}, '456': {'nombre': 'Mary', 'estado': False}, '789': {'nombre': 'Pedro', 'estado': True}})} ➡️ [{'nombre': 'John', 'estado': True}, {'nombre': 'Pedro', 'estado': True}]: Devuelve una lista con todos los diccionarios que tienen estado como True.


reduce()

Reduce los elementos de una lista o diccionario a un único valor según una condición.

Argumento 1: Condición (cadena de texto).

Argumento 2: Lista o diccionario a reducir.

Ejemplos:

{reduce('x + y', [1, 2, 3, 4, 5])} ➡️ 15: Devuelve la suma de todos los elementos de la lista.

{reduce('x + y', ['hello', ' ', 'world', '!'])} ➡️ "hello world!": Reducir una lista de cadenas a su concatenación.

{reduce('max(x, y)', {'Alice': 25, 'Bob': 35, 'Charlie': 30})} ➡️ 35: Determina la edad máxima.

{reduce('condition(x.estado == True, x, y)', {'123': {'nombre': 'John', 'estado': False}, '456': {'nombre': 'Mary', 'estado': True}})} ➡️ {'nombre': 'Mary', 'estado': True}: Devuelve el diccionario que tiene estado como True.