Saltar a contenido

Trabajar con fechas y horas en VisualMaker

VisualMaker ofrece herramientas poderosas para manejar fechas y horas. Estas capacidades te permiten formatear fechas, realizar cálculos temporales, y personalizar el comportamiento de tus bots con base en el tiempo.


Formato de fechas y horas

En VisualMaker, las fechas y horas se representan en el formato:

DD-MM-YYYY HH:MM:SS
  • DD: Día del mes (01-31).
  • MM: Mes del año (01-12).
  • YYYY: Año (4 dígitos).
  • HH: Hora en formato de 24 horas (00-23).
  • MM: Minutos (00-59).
  • SS: Segundos (00-59).

Por ejemplo:

19-01-2025 12:01:55

Variables de fechas

Las variables de tipo fecha pueden almacenar fechas para ser reutilizadas en tu bot.

Crear una variable de fecha

  1. Primeramente necesitas crear la variable, para ello, en tu bot ve a:

    🔑 Gestionar🗃 Variables💠 Crear variable 💠

  2. En ➡️ Tipo de datos: selecciona fecha 📅.

  3. Escribe el nombre de la variable.

Uso de las variables de fechas

Las variables de fechas te permiten almacenar fechas para realizar validaciones, por ejemplo, si deseas que un botón sea pulsado solo una vez cada 15 minutos, una variable de fecha te permitirá hacerlo posible. Veremos ejemplos de esto más adelante.

Representar una variable de fecha

Una vez creada la variable y guardada una fecha en su interior (veremos cómo más adelante), puedes representar su contenido en mensajes y en acciones de la siguiente forma:

{mi_variable}

Asumiendo que creaste la variable llamada mi_variable, esto mostrará algo como:

19-01-2025 14:05:30

¿Qué son las variables?

Para más información acerca de las variables mira aquí.


Fechas en UTC

Se recomienda trabajar con fechas y horas en UTC (Tiempo Universal Coordinado), puedes usar la función date_now() para obtener la fecha y hora actual sin ajustes locales. Esta es la función que más usarás al trabajar con fechas en VisualMaker.


Mostrar fechas y horas en mensajes

Puedes insertar fechas y horas en mensajes utilizando funciones dentro de expresiones:

Ejemplo básico:

La fecha y hora actual es: {date_now()}

Esto mostrará algo como:

La fecha y hora actual es: 20-01-2025 15:45:12

Expresiones

Las funciones se representan usando expresiones, por tanto deben ir entre llaves { }.


Funciones para trabajar con fechas y horas

1. date_now()

Devuelve la fecha y hora actual en UTC.

{date_now()}"20-01-2025 15:48:00"

2. date_now_tz()

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

{date_now_tz()}"20-01-2025 13:48:00"

3. apply_tz()

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

{apply_tz("01-03-2024 00:07:48")}"01-03-2024 02:07:48"

4. date_format()

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

{date_format("20-01-2025 15:30:00", "%d/%m/%Y")}"20/01/2025"

5. time_passed()

Calcula el tiempo transcurrido desde una fecha hasta ahora.

{time_passed("19-01-2025 15:30:00", "hours")}"24"

6. time_left()

Calcula el tiempo restante hasta una fecha.

{time_left("21-01-2025 15:30:00", "days")}"1"

7. time_add()

Agrega una cantidad de tiempo a una fecha.

{time_add("20-01-2025 15:30:00", 2, "days")}"22-01-2025 15:30:00"

8. time_diff()

Calcula la diferencia entre dos fechas.

{time_diff("20-01-2025", "22-01-2025", "days")}"2"


Comparando fechas y horas

VisualMaker permite comparar fechas y horas para verificar condiciones específicas y ver si un evento ha ocurrido o si falta tiempo para que suceda.

Puedes comparar usando:

  • Fechas textuales, ejemplo: 01-03-2024 02:07:48
  • Funciones, ejemplo: {date_now()}
  • Variables, ejemplo: {mi_variable}

Puedes comparar usado también operadores de comparación

  • == Igual que
  • != Diferente que
  • > Mayor que
  • < Menor que
  • >= Mayor o igual que
  • <= Menor o igual que

Esto es sumamente útil para realizar comparaciones en acciones como la de Condición.

Ejemplo 1: Comparando dos fechas textuales

{"02-01-2024 01:02:03" > "01-01-2024 01:02:03"}

Eso compara si la primera fecha es mayor que la segunda. Será True (verdadero), ya que 02-01-2024 01:02:03 es una fecha mayor que 01-01-2024 01:02:03.

Ejemplo 2: Comparando usando variable

{"02-01-2024 01:02:03" < mi_variable}

Compara si la primera fecha es menor que la fecha almacenada en la variable. Devolverá True (verdadero) o False (falso), según la fecha almacenada en la variable.

Ejemplo 3: Comparando usando función

{time_passed("15-01-2025 01:01:01", "hours") > 3}
  • Primeramente la función time_passed() con el parámetro "hours" es usada para ver cuántas horas han pasado desde la fecha 15-01-2025 01:01:01, eso devolverá un número indicando las horas que han pasado.
  • Luego, se compara si ese número es mayor a 3. Si es mayor a 3, significa que han pasado más de 3 horas y devolverá True (verdadero), en caso contrario (si es menor a 3) devolverá False (falso).

Ejemplo 4: Comparando usando función y variable

{time_left(variable_fecha, "days") == 0}
  • Primeramente la función time_left() con el parámetro "days" es usada para ver cuántos días faltan hasta llegar a la fecha almacenada en la variable variable_fecha, devolverá un número indicando los días que faltan.
  • Luego, se compara si ese número es igual a 0. Si es igual a 0, significa que ya la fecha ha llegado y devolverá True (verdadero), en caso contrario (es mayor a 0) devolverá False (falso).

Nota

Al usar time_left(), una vez la fecha haya llegado o pasado, siempre devolverá 0, NUNCA devolverá números negativos.


Zona horaria del bot

  1. Configura la zona horaria de tu bot en:

    🔑 Gestionar⚙️ Ajustes🕒 Zona horaria

  2. Las funciones date_now_tz() y apply_tz(), respetarán esta configuración.


Ejemplo práctico: Botón de reclamar con condición de tiempo

En este ejemplo crearemos un botón llamado Reclamar que:

  1. Le incremente el balance al usuario en 1, al ser pulsado cada 15 minutos.
  2. Guarda la fecha del reclamo.
  3. Si se pulsa el botón sin haber pasado 15 minutos desde el último reclamo, saltará un error.

Requisitos previos

  1. Suscripción premium: Estas configuraciones requieren el uso de acciones, y variables, funcionalidades exclusivas de la suscripción premium en VisualMaker.
  2. Acciones necesarias:

Pasos para configurarlo:

1. Crear la variable de fecha

  1. Ve a 🔑 Gestionar🗃 Variables💠 Crear variable 💠
  2. En ➡️ Tipo de datos: selecciona fecha 📅.
  3. Escribe el nombre de la variable, por ejemplo: ultimo_reclamo.
  4. Sal del menú de gestionar pulsando en ↙️ Regresar ↘️, y luego en ⬅️ Salir.

2. Crear el botón Reclamar

  1. Entra al editor del bot pulsando 🛠 Editar.
  2. Crea un nuevo botón pulsando en ✳️ Nuevo botón | comando y nómbralo Reclamar.
  3. Pulsa en Acciones 🌟 para configurar las acciones del botón.

3. Configurar las acciones

a) Acción 1: Condición
  1. Pulsa en 🎯 Nueva acción🧭 Condición.
  2. Por ahora no hacemos nada aquí (la configuraremos más adelante).
b) Acción 2: Cambiar variable (balance)
  1. Pulsa en 🎯 Nueva acción🗃 Cambiar variable.
  2. Pulsa en Configurar 🛠 y configura lo siguiente:

    • Seleccionar variable: Escribe el nombre de la variable que deseas modificar:

      balance
      
    • Tipo de modificación:

      🔺 Incrementar 🔺
      
    • Valor a guardar: Especifica el valor a incrementar:

      1
      
  3. Regresa al menú de acciones y activa la acción pulsando en ✅ Activar.

c) Acción 3: Cambiar variable (ultimo_reclamo)
  1. Pulsa en 🎯 Nueva acción🗃 Cambiar variable.
  2. Pulsa en Configurar 🛠 y configura lo siguiente:

    • Seleccionar variable: Escribe el nombre de la variable que deseas modificar:

      ultimo_reclamo
      
    • Tipo de modificación:

      💢 Establecer 💢
      
    • Valor a guardar: Especifica la fecha 15 minutos en el futuro:

      {time_add(date_now(), 15, "minutes")}
      
  3. Regresa al menú de acciones y activa la acción pulsando en ✅ Activar.

d) Acción 4: Enviar mensaje
  1. Pulsa en 🎯 Nueva acciónEnviar mensaje.
  2. Pulsa en Configurar 🛠💬 Establecer mensaje 💬 e ingresa:

    ✅ Has reclamado 1 moneda, ahora tienes {balance} monedas.
    
    🕒 Regresa en 15 minutos.
    
  3. Regresa al menú de acciones y activa esta acción pulsando en ✅ Activar.

e) Agregar un Separador

Pulsa en Nuevo separador 📍 para agregar un separador al final y crear un nuevo bloque de acciones. Mira qué son los separadores.

f) Acción 5: Enviar mensaje
  1. Pulsa en 🎯 Nueva acciónEnviar mensaje.
  2. Pulsa en Configurar 🛠💬 Establecer mensaje 💬 e ingresa:

    ❌ Aún no es hora, regresa en {floor(time_left(ultimo_reclamo, "minutes"))} minutos y {ceil(time_left(ultimo_reclamo, "seconds") % 60)} segundos.
    

    Hemos usado las funciones floor() y ceil() para redondear el número hacia abajo y hacia arriba respectivamente, y time_left() para determinar el tiempo restante en minutos. Puedes ver todas las funciones aquí.

  3. Regresa al menú de acciones y activa esta acción pulsando en ✅ Activar.

  4. Copia el ID de esta acción, lo necesitarás en un momento.
g) Configurar acción de Condición
  1. Regresa a la acción de Condición (acción 1), y pulsa en Configurar 🛠.

    • Nueva condición:

      {date_now() > ultimo_reclamo}
      
    • Si es verdadero: Selecciona continuar.

    • Si es falso:
      • Pulsa en 🆔 Ejecutar acción por ID 🆔.
      • En ➡️ Después: asegúrate de que esté seleccionado detener.
      • Envía el ID de la acción de Enviar mensaje que acabas de copiar.
  2. Regresa al menú de acciones y activa esta acción pulsando en ✅ Activar.


Resultado final

  1. El usuario pulsa el botón Reclamar.
  2. El bot evalúa si ya pasaron 15 minutos desde el ultimo reclamo:

    • Si ya pasaron:

      1. Le incrementa el balance al usuario en 1.
      2. Establece una fecha en la variable ultimo_reclamo 15 minutos en el futuro.
      3. Le muestra al usuario un mensaje como el siguiente:
        ✅ Has reclamado 1 moneda, ahora tienes 3 monedas.
        
        🕒 Regresa en 15 minutos.
        
    • Si no han pasado, le muestra al usuario un mensaje como el siguiente:

      ❌ Aún no es hora, regresa en 9 minutos y 32 segundos.
      

Así quedaron las acciones

Date and time example (VisualMaker)


Con estas herramientas, puedes gestionar fechas y horas de manera eficiente en VisualMaker, desde cálculos simples hasta configuraciones avanzadas en tus bots.