MaviBot fonctionne avec les formats de DATE et d'HEURE suivants :

pour les dates – "jj.mm.aaaa"

pour l'heure – "HH:MM"

Variables

Pour travailler avec les dates et l'heure, vous pouvez utiliser les variables suivantes :

current_date - date actuelle au format jj.mm.aaaa, basée sur le fuseau horaire du projet
next_day - date de demain au format jj.mm.aaaa ; utile pour planifier des messages
current_time - heure actuelle au format hh:mm, basée sur le fuseau horaire du projet
weekday - jour de la semaine sous forme de nombre : Lundi = 1, Mardi = 2, etc.

Accès rapide aux descriptions des fonctions :

Comment ajouter du temps à une heure

Vous pouvez comparer des dates et des heures à l'aide d'opérateurs logiques, comme pour les nombres.

addYear() | addMonth() | addDays() | addMinutes()

addYear(date, années_à_ajouter) - calcule une nouvelle date en ajoutant un nombre spécifié d'années à une date donnée, en tenant compte des années bissextiles. Utilisez un nombre négatif pour soustraire des années.

addMonth(date, mois_à_ajouter) - calcule une nouvelle date en ajoutant un nombre spécifié de mois à une date donnée, en tenant compte des années bissextiles. Utilisez un nombre négatif pour soustraire des mois.

addDays(date, jours_à_ajouter) - ajoute un nombre spécifié de jours à une date. Utilisez un nombre négatif pour soustraire des jours. Exemple : addDays(current_date, 20) ou addDays('20.08.2019', -99)

addMinutes(heure, minutes_à_ajouter) - ajoute un nombre spécifié de minutes à une heure. Utilisez un nombre négatif pour soustraire des minutes. Exemple : addMinutes(current_time, 20) ou addMinutes('20:08', -30)

'date' + jours - ajoute un nombre spécifié de jours à une date

'heure' + minutes - ajoute un nombre spécifié de minutes à une heure

Exemple d'ajout d'un certain nombre d'années à une date :

Exemple d'ajout d'un certain nombre de mois à une date :

Exemple d'utilisation d'une opération mathématique simple — ajout de jours à une date et de minutes à une heure :

count = 2
date = '29.02.2020'
x = addYear(date, count)
y = addYear('31.12.2021', -1*count)

count = 10
date = '30.04.2019'
x = addMonth(date, count)
y = addMonth('31.12.2020', -1*count)

count = 10
date = '30.04.2019'
x = addMonth(date, count)
y = addMonth('31.12.2020', -1*count)

Comment comparer des heures

Vous pouvez comparer des dates et des heures à l'aide d'opérateurs logiques, comme pour les nombres :

supérieur à > , inférieur à <

égal à == , différent de !=

supérieur ou égal à >= , inférieur ou égal à <=

Les conditions de comparaison peuvent également être combinées à l'aide des opérateurs logiques AND et OR.

Les conditions de comparaison doivent être logiquement cohérentes, ce qui signifie que vous ne pouvez pas créer des conditions comme a == 1 et a != 1, car une valeur ne peut pas être à la fois égale et différente de 1.

Les conditions de comparaison sont saisies dans le champ "Variable".

Assurez-vous d'utiliser des délais lors de la spécification des conditions de comparaison dans une flèche.

'01.09.2020'`` < '11.10.2020'

'11.10.2020' >= ``current_date

current_date == date

current_time >= '18:00'

current_time <= '21:00'

Comment définir des intervalles de temps

Une fonction très utile pour travailler avec des intervalles de temps est :

time_interval('heure_debut', 'heure_fin')

La fonction renvoie la valeur logique True ou False.

Utilisez cette fonction dans les blocs comme condition dans le champ "Variable à comparer" ou dans une calculatrice en utilisant IF().

La fonction vous permet de vérifier si l'heure actuelle se situe dans l'intervalle spécifié.

time_interval('10:00','19:00') - vérifie l'intervalle de temps de 10h00 à 19h00

time_interval('19:00','07:00') - vérifie l'intervalle de temps de 19h00 à 07h00

time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - vérifie l'intervalle de temps entre différentes dates

time_interval('#{current_date} 10:00','#{date} 19:00') - vérifie l'intervalle de temps défini à l'aide de variables

Examinons de plus près le premier exemple. La fonction se lit comme suit :

Si l'utilisateur envoie un message contenant le mot "heure" pendant la période de 10h00 à 19h00, la condition renvoie vrai ; sinon, elle renvoie faux.

Cela vous permet de créer différentes réponses en fonction de l'heure de la demande du client.

Par exemple, si l'heure actuelle est entre 10h00 et 19h00, le client recevra :
"Un responsable vous répondra bientôt."

À tout autre moment, il recevra :
"Le responsable n'est actuellement pas disponible ; vous recevrez une réponse pendant les heures de travail à partir de 10h00."

Dans le champ Calculatrice, saisissez :

response = if(time_interval('10:00','19:00'), "Un responsable vous répondra bientôt", "Le responsable n'est actuellement pas disponible ; vous recevrez une réponse pendant les heures de travail à partir de 10h00")

Dans le champ "Message", saisissez : #{response}

response = if(time_interval('10:00','19:00'), "Un responsable vous répondra bientôt", "Le responsable n'est actuellement pas disponible ; vous recevrez une réponse pendant les heures de travail à partir de 10h00")

Comment savoir combien de temps il reste avant le jour J

Pour calculer le temps restant avant le jour J :

Définissez la date et l'heure du moment cible à partir duquel vous voulez compter.

date_D = 10.10.2021 time_D = 12:00

Convertissez-le au format timestamp :

timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")

Capturez l'heure actuelle au format timestamp :

timestamp0 = #{timestamp}

Arrondissez les valeurs obtenues à des nombres entiers :

timeD = int(#{timestampD}) time0 = int(#{timestamp0})

Calculez la différence en secondes :

time = timeD - time0

Divisez par le nombre de secondes dans une journée et arrondissez le résultat :

full_days = time/86400

days = int(#{full_days})

Calculez le nombre de secondes restantes de la journée partielle :

c = days*86400

d = time - c

Calculez à combien d'heures cela correspond et arrondissez la valeur :

e = d/3600 hours = int(e)

Calculez le nombre de secondes restantes des heures partielles :

g = hours*3600

h = d - g

Convertissez cela en minutes et arrondissez la valeur :

i = h/60

minutes = int(i)

Calculez le nombre de secondes restantes :

k = minutes*60

seconds = h - k

Et affichez le temps dans le champ "Texte du message" :

Temps restant avant le début : #{days} jours #{hours} heures #{minutes} minutes et #{seconds} secondes

Voici le code à insérer dans le champ "Calculatrice" :

timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
timestamp0 = #{timestamp}
timeD = int(#{timestampD})
time0 = int(#{timestamp0})
time = timeD - time0
full_days = time/86400
days = int(#{days})
c = days*86400
d = time - c
e = d/3600
hours = int(e)
g = hours*3600 
h = d - g
i = h/60 
minutes = int(i)
k = minutes*60 
seconds = h - k

La Calculatrice prend également en charge la soustraction de dates et d'heures sans conversion de type. Par exemple :

'11.12.2021' - '8.12.2021' renvoie 3 (jours)

'11:12' - '3:45' renvoie 447 (minutes)

Comment trouver le prochain anniversaire

Pour que le bot envoie des vœux d'anniversaire, vous pouvez utiliser la fonction :

birthdate(date) - renvoie le prochain anniversaire à venir en fonction de la date de naissance de la personne : reminder = birthdate('28.04.1994')

Comment obtenir la date d'un jour spécifique de la semaine

Si vous avez des envois récurrents sur des jours spécifiques de la semaine, vous pouvez obtenir la date d'un jour de la semaine pour planifier l'envoi.

weekday_date(weekday, b) - renvoie la date du jour de la semaine spécifié le plus proche. Il prend deux paramètres :

Le premier paramètre est le numéro du jour de la semaine à trouver (de 1 à 7, où 1 = Lundi, 7 = Dimanche).

Le deuxième paramètre indique s'il faut renvoyer la date d'aujourd'hui si le jour spécifié est aujourd'hui. Ce paramètre est facultatif et par défaut à False.

Regardons un exemple pour comprendre comment fonctionne le deuxième paramètre :

Vous voulez planifier l'envoi d'un message le jeudi.

Mais que faire si le client vient de s'inscrire un jeudi ?

Le message doit-il être envoyé ce jeudi ou le suivant ?

Le deuxième paramètre défini sur False signifie que le message ne sera envoyé que le jeudi suivant (en sautant aujourd'hui).

Le deuxième paramètre défini sur True signifie que le message sera envoyé ce jeudi, si aujourd'hui est jeudi (y compris le jour de l'inscription).

Dans notre exemple, l'utilisateur s'inscrit le jeudi 13.02.2025, et nous voulons envoyer le message le jeudi suivant.
Ainsi, la valeur renvoyée sera "20.02.2025".

Par exemple, weekday_date(4) renverra '20.02.2025'.

Si vous voulez que le jour actuel ne compte que jusqu'à une certaine heure, vous pouvez utiliser cette construction :

weekday_date(4, current_time < '13:00'), où la condition peut être remplacée par n'importe quelle condition dont vous avez besoin.

Voici un exemple d'utilisation de la fonction :

Exemple d'utilisation de la fonction dans le champ "Date d'envoi" d'une connexion

Comment obtenir la date d'un jour spécifique du mois

Si vous avez des actions récurrentes sur un jour spécifique du mois, vous pouvez obtenir la date de l'occurrence la plus proche de ce jour pour planifier votre envoi.

month_date(date, b) - renvoie la date la plus proche du mois pour le numéro de jour spécifié. Il prend deux paramètres :

date - numéro du jour du mois à trouver (de 1 à 31)

b - paramètre facultatif ; indique s'il faut renvoyer la date d'aujourd'hui si elle correspond au jour spécifié. Par défaut à False.

Si vous passez 31 mais que le mois en cours n'a que 30 jours, la fonction renverra le dernier jour du mois (par exemple, le 30).

Par exemple :

Si aujourd'hui est le 05.04.2022 et que vous appelez t = month_date(1), le résultat sera 01.05.2022 - le premier jour du mois le plus proche après aujourd'hui.

Comment vérifier si l'heure actuelle est dans les heures de travail

Par exemple, l'entreprise travaille de 9h00 à 18h00 et est fermée le samedi et le dimanche. Construisons les vérifications étape par étape :

  1. Vérifiez si l'heure est dans les heures de travail : current_time >= '9:00' AND current_time <= '18:00'
  2. Vérifiez si l'heure est en dehors des heures de travail : current_time < '9:00' OR current_time > '18:00'
  3. Vérifiez si aujourd'hui est un jour ouvrable (pas samedi ni dimanche) : weekday != 6 AND weekday != 7
  4. Combinez les conditions pour écrire pendant les heures de travail : current_time >= '9:00' AND current_time <= '18:00' AND weekday != 6 AND weekday != 7
  5. Combinez les conditions pour écrire en dehors des heures de travail : current_time < '9:00' OR current_time > '18:00' OR weekday == 6 OR weekday == 7

Comment convertir la date et l'heure

Le format de date-heure utilisé varie selon les systèmes, et il est possible que l'une des ressources intégrées renvoie une heure dans un format que MaviBot ne reconnaît pas. Vous devrez la convertir.

convert_datetime(date, fin, f_out) - convertit la date et l'heure

Il y a trois paramètres :

  • Chaîne de date d'entrée
  • Chaîne de format d'entrée
  • Chaîne de format de sortie

Exemple :
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") en sortie donnera 2011/11/03

Cette fonction convertit la date entrante en un timestamp.

#{current_date} #{current_time} - convertit en "06.01.2025 11:45" — comme il n'y a pas d'informations sur les secondes ou les microsecondes, le timestamp résultant a des zéros après la virgule.

Par exemple : 1736144700.000000

Si vous incluez les millisecondes après la virgule,

convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")

le résultat sera : 1736166395.123456

get_datetime(format) - une fonction pour obtenir l'heure actuelle dans un format spécifique.

La fonction prend un paramètre — une chaîne qui spécifie le format de sortie souhaité.

Important ! La réponse de la fonction sera (Lundi, Mardi, etc.).

Exemple : get_datetime("%A") la sortie sera Mercredi

Description des paramètres de la chaîne de format, qui sont spécifiés dans la fonction sous forme de chaînes entre guillemets :

Tous les autres symboles se représentent eux-mêmes.

Vous pouvez obtenir le timestamp actuel en utilisant : convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")

Afficher la date actuelle au format "jj nom du mois"

Pour afficher la date au format "jj nom du mois", utilisez la fonction current_date_eng().

Si vous devez ajouter un certain nombre de jours à cette date, vous devez spécifier le nombre de jours requis comme paramètre dans la fonction.

Par exemple, si la date d'aujourd'hui est le 3 avril, la fonction renverra :

current_date_eng() - 3 avril

current_date_eng(2) - 5 avril

current_date_eng(-2) - 1er avril