¿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 índice0, es el primero)
{pick_by_index(["John", "Mary", 10], 1)}➡️"Mary"(elegido el índice1, es el segundo)
{pick_by_index("texto", 3)}➡️"t"(elegido el índice3del 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 índice0es"a",1es"b", y2es"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(oaparece 2 veces)
{count("abababab", "ab")}➡️4(abaparece 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 tienenestadocomoTrue.
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 tieneestadocomoTrue.