يعمل MaviBot مع تنسيقات التاريخ والوقت التالية:
للتواريخ – "dd.mm.yyyy"
للوقت – "HH:MM"
المتغيرات
للعمل مع التواريخ والوقت، يمكنك استخدام المتغيرات التالية:
current_date - التاريخ الحالي بتنسيق dd.mm.yyyy، بناءً على المنطقة الزمنية للمشروع
next_day - تاريخ الغد بتنسيق dd.mm.yyyy؛ مفيد لجدولة الرسائل
current_time - الوقت الحالي بتنسيق hh:mm، بناءً على المنطقة الزمنية للمشروع
weekday - يوم الأسبوع كرقم: الاثنين = 1، الثلاثاء = 2، إلخ.
وصول سريع إلى أوصاف الدوال:
- إضافة وقت إلى وقت
- مقارنة الوقت
- تعيين فترات زمنية
- حساب الوقت المتبقي حتى اليوم د
- العثور على عيد الميلاد التالي
- الحصول على تاريخ يوم أسبوعي محدد
- الحصول على تاريخ يوم محدد من الشهر
- التحقق مما إذا كان الوقت الحالي ضمن ساعات العمل
كيفية إضافة وقت إلى وقت
يمكنك مقارنة التواريخ والأوقات باستخدام العوامل المنطقية تمامًا مثل الأرقام.
addYear() | addMonth() | addDays() | addMinutes()
addYear(date, years_to_add) - يحسب تاريخًا جديدًا بإضافة عدد محدد من السنوات إلى تاريخ معين، مع مراعاة السنوات الكبيسة. استخدم رقمًا سالبًا لطرح السنوات.
addMonth(date, months_to_add) - يحسب تاريخًا جديدًا بإضافة عدد محدد من الأشهر إلى تاريخ معين، مع مراعاة السنوات الكبيسة. استخدم رقمًا سالبًا لطرح الأشهر.
addDays(date, days_to_add) - يضيف عددًا محددًا من الأيام إلى التاريخ. استخدم رقمًا سالبًا لطرح الأيام. مثال: addDays(current_date, 20) أو addDays('20.08.2019', -99)
addMinutes(time, minutes_to_add) - يضيف عددًا محددًا من الدقائق إلى الوقت. استخدم رقمًا سالبًا لطرح الدقائق. مثال: addMinutes(current_time, 20) أو addMinutes('20:08', -30)
'date' + days - يضيف عددًا محددًا من الأيام إلى التاريخ
'time' + minutes - يضيف عددًا محددًا من الدقائق إلى الوقت
مثال على إضافة عدد معين من السنوات إلى تاريخ:


مثال على إضافة عدد معين من الأشهر إلى تاريخ:


مثال على استخدام عملية حسابية بسيطة — إضافة أيام إلى تاريخ ودقائق إلى وقت:


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)
كيفية مقارنة الوقت
يمكنك مقارنة التواريخ والأوقات باستخدام العوامل المنطقية تمامًا مثل الأرقام:
أكبر من > ، أصغر من <
يساوي == ، لا يساوي !=
أكبر من أو يساوي >= ، أصغر من أو يساوي <=
يمكن أيضًا دمج شروط المقارنة باستخدام العوامل المنطقية AND و OR.
يجب أن تكون شروط المقارنة متسقة منطقيًا، مما يعني أنه لا يمكنك إنشاء شروط مثل a == 1 و a != 1، لأن القيمة لا يمكن أن تكون مساوية وغير مساوية لـ 1 في نفس الوقت.
يتم إدخال شروط المقارنة في حقل "المتغير".

تأكد من استخدام التأخيرات عند تحديد شروط المقارنة في سهم.

'01.09.2020'`` < '11.10.2020'
'11.10.2020' >= ``current_date
current_date == date
current_time >= '18:00'
current_time <= '21:00'
كيفية تعيين فترات زمنية
دالة مفيدة جدًا للعمل مع الفترات الزمنية هي:
time_interval('start_time', 'end_time')
ترجع الدالة قيمة منطقية True أو False.
استخدم هذه الدالة في الكتل كشرط في حقل "المتغير المراد مقارنته" أو داخل الآلة الحاسبة باستخدام IF().
تسمح لك الدالة بالتحقق مما إذا كان الوقت الحالي يقع ضمن الفترة المحددة.
time_interval('10:00','19:00') - تتحقق من الفترة الزمنية من 10 صباحًا إلى 7 مساءً
time_interval('19:00','07:00') - تتحقق من الفترة الزمنية من 7 مساءً إلى 7 صباحًا
time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - تتحقق من الفترة الزمنية بين تواريخ مختلفة
time_interval('#{current_date} 10:00','#{date} 19:00') - تتحقق من الفترة الزمنية المحددة باستخدام المتغيرات
دعنا نلقي نظرة فاحصة على المثال الأول. تُقرأ الدالة على النحو التالي:
إذا أرسل المستخدم رسالة تحتوي على كلمة "وقت" خلال الفترة من 10:00 إلى 19:00، فإن الشرط يُرجع صحيحًا؛ وإلا، فإنه يُرجع خطأ.
يسمح لك هذا بإنشاء ردود مختلفة اعتمادًا على وقت طلب العميل.
على سبيل المثال، إذا كان الوقت الحالي بين 10:00 و 19:00، سيتلقى العميل:
"سيرد عليك مدير قريبًا."
في أي وقت آخر، سيتلقون:
"المدير غير متاح حاليًا؛ ستتلقى ردًا خلال ساعات العمل من الساعة 10:00."
في حقل الآلة الحاسبة، أدخل:
response = if(time_interval('10:00','19:00'), "سيرد عليك مدير قريبًا", "المدير غير متاح حاليًا؛ ستتلقى ردًا خلال ساعات العمل من الساعة 10:00")
في حقل "الرسالة"، أدخل: #{response}


response = if(time_interval('10:00','19:00'), "سيرد عليك مدير قريبًا", "المدير غير متاح حاليًا؛ ستتلقى ردًا خلال ساعات العمل من الساعة 10:00")
كيفية معرفة مقدار الوقت المتبقي حتى اليوم د

لحساب مقدار الوقت المتبقي حتى اليوم د:
حدد تاريخ ووقت اللحظة المستهدفة التي تريد العد التنازلي إليها.
date_D = 10.10.2021 time_D = 12:00
قم بتحويلها إلى تنسيق timestamp:
timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
التقط الوقت الحالي بتنسيق timestamp:
timestamp0 = #{timestamp}
قرّب القيم التي تم الحصول عليها إلى أعداد صحيحة:
timeD = int(#{timestampD}) time0 = int(#{timestamp0})
احسب الفرق بالثواني:
time = timeD - time0
اقسم على عدد الثواني في اليوم، وقرّب النتيجة:
full_days = time/86400
days = int(#{full_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
واعرض الوقت في حقل "نص الرسالة":
الوقت المتبقي حتى البداية: #{days} يوم #{hours} ساعة #{minutes} دقيقة و #{seconds} ثانية
إليك الكود لإدراجه في حقل "الآلة الحاسبة":
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

تدعم الآلة الحاسبة أيضًا طرح التواريخ والأوقات دون تحويل النوع. على سبيل المثال:
'11.12.2021' - '8.12.2021' يُرجع 3 (أيام)
'11:12' - '3:45' يُرجع 447 (دقيقة)
كيفية معرفة عيد الميلاد التالي
لجعل البوت يرسل تهنئة بعيد الميلاد، يمكنك استخدام الدالة:
birthdate(date) - تُرجع تاريخ عيد الميلاد التالي القادم بناءً على تاريخ ميلاد الشخص: reminder = birthdate('28.04.1994')
كيفية الحصول على تاريخ يوم أسبوعي محدد
إذا كان لديك إرسالات متكررة في أيام أسبوعية محددة، يمكنك الحصول على تاريخ يوم أسبوعي لجدولة الإرسال.
weekday_date(weekday, b) - تُرجع تاريخ أقرب يوم أسبوعي محدد. تأخذ معلمتين:
المعلمة الأولى هي رقم اليوم الأسبوعي المطلوب العثور عليه (من 1 إلى 7، حيث 1 = الاثنين، 7 = الأحد).
المعلمة الثانية تشير إلى ما إذا كان يجب إرجاع تاريخ اليوم إذا كان اليوم الأسبوعي المحدد هو اليوم. هذه المعلمة اختيارية والقيمة الافتراضية هي False.
دعنا نلقي نظرة على مثال لفهم كيفية عمل المعلمة الثانية:
تريد جدولة إرسال رسالة يوم الخميس.
ولكن ماذا لو سجل العميل للتو يوم الخميس؟
هل يجب إرسال الرسالة هذا الخميس أم الخميس التالي؟
المعلمة الثانية المضبوطة على False تعني أنه سيتم إرسال الرسالة فقط في الخميس التالي (تخطي اليوم).
المعلمة الثانية المضبوطة على True تعني أنه سيتم إرسال الرسالة هذا الخميس، إذا كان اليوم هو الخميس (بما في ذلك يوم التسجيل).
في مثالنا، يسجل المستخدم يوم الخميس، 13.02.2025، ونريد إرسال الرسالة في الخميس التالي.
لذا، ستكون القيمة المُرجعة هي "20.02.2025".
على سبيل المثال، weekday_date(4) سترجع '20.02.2025'.
إذا كنت تريد أن يحسب اليوم الحالي فقط حتى وقت معين، يمكنك استخدام هذا البناء:
weekday_date(4, current_time < '13:00')، حيث يمكن استبدال الشرط بأي شرط تحتاجه.
إليك مثال على كيفية استخدام الدالة:
مثال على استخدام الدالة في حقل "تاريخ الإرسال" لاتصال

كيفية الحصول على تاريخ يوم محدد من الشهر
إذا كان لديك إجراءات متكررة في يوم محدد من الشهر، يمكنك الحصول على تاريخ أقرب حدوث لذلك اليوم لجدولة إرسالك.
month_date(date, b) - تُرجع أقرب تاريخ من الشهر لرقم اليوم المحدد. تأخذ معلمتين:
date - رقم اليوم من الشهر المطلوب العثور عليه (من 1 إلى 31)
b - معلمة اختيارية؛ تشير إلى ما إذا كان يجب إرجاع تاريخ اليوم إذا كان يطابق اليوم المحدد. القيمة الافتراضية هي False.
إذا قمت بتمرير 31 ولكن الشهر الحالي يحتوي على 30 يومًا فقط، فستُرجع الدالة آخر يوم من الشهر (على سبيل المثال، اليوم 30).
على سبيل المثال:
إذا كان اليوم هو 05.04.2022 وقمت باستدعاء t = month_date(1)، ستكون النتيجة 01.05.2022 - أقرب أول يوم من الشهر بعد اليوم.
كيفية التحقق مما إذا كان الوقت الحالي ضمن ساعات العمل
على سبيل المثال، تعمل الشركة من الساعة 9:00 صباحًا إلى 6:00 مساءً وتكون مغلقة أيام السبت والأحد. دعنا نبني عمليات التحقق خطوة بخطوة:
- تحقق مما إذا كان الوقت ضمن ساعات العمل: current_time >= '9:00' و current_time <= '18:00'
- تحقق مما إذا كان الوقت خارج ساعات العمل: current_time < '9:00' أو current_time > '18:00'
- تحقق مما إذا كان اليوم هو يوم عمل (ليس السبت أو الأحد): weekday != 6 AND weekday != 7
- اجمع الشروط للكتابة خلال ساعات العمل: current_time >= '9:00' و current_time <= '18:00' و weekday != 6 و weekday != 7
- اجمع الشروط للكتابة خارج ساعات العمل: current_time < '9:00' أو current_time > '18:00' أو weekday == 6 أو weekday == 7

كيفية تحويل التاريخ والوقت
يختلف تنسيق التاريخ والوقت المستخدم عبر الأنظمة، ومن الممكن أن يقوم أحد الموارد المتكاملة بإرجاع وقت بتنسيق لا يتعرف عليه MaviBot. ستحتاج إلى تحويله.
convert_datetime(date, fin, f_out) - يحول التاريخ والوقت
هناك ثلاث معلمات:
- سلسلة تاريخ الإدخال
- سلسلة تنسيق الإدخال
- سلسلة تنسيق الإخراج
مثال:
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") سيكون الناتج 2011/11/03
تقوم هذه الدالة بتحويل التاريخ الوارد إلى timestamp.
#{current_date} #{current_time} - يحول إلى "06.01.2025 11:45" — نظرًا لعدم وجود معلومات عن الثواني أو الميكروثانية، فإن الطابع الزمني الناتج يحتوي على أصفار بعد الفاصلة العشرية.
على سبيل المثال: 1736144700.000000
إذا قمت بتضمين أجزاء من الثانية بعد الفاصلة العشرية،
convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")
ستكون النتيجة: 1736166395.123456
get_datetime(format) - دالة للحصول على الوقت الحالي بتنسيق محدد.
تأخذ الدالة معلمة واحدة — سلسلة تحدد تنسيق الإخراج المطلوب.
مهم! سيكون رد الدالة (الاثنين، الثلاثاء، إلخ).
مثال: get_datetime("%A") سيكون الناتج Wednesday
وصف معلمات سلسلة التنسيق، المحددة في الدالة كسلاسل محاطة بعلامات اقتباس:
جميع الرموز الأخرى تمثل نفسها.
يمكنك الحصول على الطابع الزمني الحالي باستخدام: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")
عرض التاريخ الحالي بتنسيق "dd month name"
لعرض التاريخ بتنسيق "dd month name"، استخدم الدالة current_date_eng().
إذا كنت بحاجة إلى إضافة عدد معين من الأيام إلى هذا التاريخ، فيجب عليك تحديد عدد الأيام المطلوب كمعامل في الدالة.
على سبيل المثال، إذا كان تاريخ اليوم هو 3 أبريل، فستُرجع الدالة:
current_date_eng() - April 3rd
current_date_eng(2) - April 5th
current_date_eng(-2) - April 1st


