MaviBot келесі КҮН және УАҚЫТ пішімдерімен жұмыс істейді:
күндер үшін – "dd.mm.yyyy"
уақыт үшін – "HH:MM"
Айнымалылар
Күндер мен уақытпен жұмыс істеу үшін келесі айнымалыларды пайдалануға болады:
current_date - жобаның уақыт белдеуіне негізделген ағымдағы күн dd.mm.yyyy пішімінде
next_day - ертеңгі күн dd.mm.yyyy пішімінде; хабарламаларды жоспарлау үшін пайдалы
current_time - жобаның уақыт белдеуіне негізделген ағымдағы уақыт hh:mm пішімінде
weekday - апта күнінің нөмірі: Дүйсенбі = 1, Сейсенбі = 2, т.б.
Функция сипаттамаларына жылдам қол жеткізу:
- Уақытқа уақыт қосу
- Уақытты салыстыру
- Уақыт аралықтарын орнату
- D күніне дейін қанша уақыт қалғанын есептеу
- Келесі туған күнді табу
- Белгілі бір апта күнінің күнін алу
- Айдың белгілі бір күнінің күнін алу
- Жұмыс уақыты ішінде екенін тексеру
Уақытқа уақытты қалай қосуға болады
Күндер мен уақыттарды сандар сияқты логикалық операторлар арқылы салыстыруға болады.
addYear() | addMonth() | addDays() | addMinutes()
addYear(күн, қосылатын_жылдар) - берілген күнге кібісе жылдарды ескере отырып, жылдардың белгіленген санын қосу арқылы жаңа күнді есептейді. Жылдарды азайту үшін теріс санды пайдаланыңыз.
addMonth(күн, қосылатын_айлар) - берілген күнге кібісе жылдарды ескере отырып, айлардың белгіленген санын қосу арқылы жаңа күнді есептейді. Айларды азайту үшін теріс санды пайдаланыңыз.
addDays(күн, қосылатын_күндер) - күнге күндердің белгіленген санын қосады. Күндерді азайту үшін теріс санды пайдаланыңыз. Мысалы: addDays(current_date, 20) немесе addDays('20.08.2019', -99)
addMinutes(уақыт, қосылатын_минуттар) - уақытқа минуттардың белгіленген санын қосады. Минуттарды азайту үшін теріс санды пайдаланыңыз. Мысалы: addMinutes(current_time, 20) немесе addMinutes('20:08', -30)
'күн' + күндер - күнге күндердің белгіленген санын қосады
'уақыт' + минуттар - уақытқа минуттардың белгіленген санын қосады
Күнге белгілі бір жылдар санын қосу мысалы:


Күнге белгілі бір айлар санын қосу мысалы:


Қарапайым математикалық амалды қолдану мысалы — күнге күндерді және уақытқа минуттарды қосу:


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('басталу_уақыты', 'аяқталу_уақыты')
Функция логикалық True немесе False мәнін қайтарады.
Бұл функцияны блоктарда "Салыстырылатын айнымалы" өрісіндегі шарт ретінде немесе IF() көмегімен калькулятор ішінде пайдаланыңыз.
Функция ағымдағы уақыттың көрсетілген аралыққа түсетінін тексеруге мүмкіндік береді.
time_interval('10:00','19:00') - сағат 10-нан 19-ға дейінгі уақыт аралығын тексереді
time_interval('19:00','07:00') - сағат 19-дан 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-ге дейінгі кезеңде "уақыт" сөзін қамтитын хабарлама жіберсе, шарт true мәнін қайтарады; әйтпесе, false мәнін қайтарады.
Бұл клиенттің сұрау салу уақытына байланысты әртүрлі жауаптар жасауға мүмкіндік береді.
Мысалы, егер ағымдағы уақыт сағат 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-ден бастап жауап аласыз")
D күніне дейін қанша уақыт қалғанын қалай білуге болады

D күніне дейін қанша уақыт қалғанын есептеу үшін:
Кері санақ жасағыңыз келетін мақсатты сәттің күні мен уақытын анықтаңыз.
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(күн) - адамның туған күніне негізделген келесі туған күнді қайтарады: reminder = birthdate('28.04.1994')
Белгілі бір апта күнінің күнін қалай алуға болады
Егер сізде белгілі бір апта күндерінде қайталанатын жіберулер болса, жіберуді жоспарлау үшін апта күнінің күнін ала аласыз.
weekday_date(апта_күні, 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(күн, b) - көрсетілген күн нөмірі үшін айдың ең жақын күнін қайтарады. Ол екі параметрді қабылдайды:
күн - табу үшін айдың күн нөмірі (1-ден 31-ге дейін)
b - міндетті емес параметр; егер ол көрсетілген күнге сәйкес келсе, бүгінгі күнді қайтару керектігін көрсетеді. Әдепкі бойынша False.
Егер сіз 31-ді берсеңіз, бірақ ағымдағы айда тек 30 күн болса, функция айдың соңғы күнін қайтарады (мысалы, 30-ы).
Мысалы:
Егер бүгін 05.04.2022 болса және сіз t = month_date(1) шақырсаңыз, нәтиже 01.05.2022 болады - бүгіннен кейінгі ең жақын айдың 1-і.
Ағымдағы уақыттың жұмыс уақыты ішінде екенін қалай тексеруге болады
Мысалы, компания таңғы 9:00-ден кешкі 6:00-ге дейін жұмыс істейді және сенбі мен жексенбіде жабық. Тексерулерді кезең-кезеңімен құрастырайық:
- Уақыттың жұмыс уақыты ішінде екенін тексеру: current_time >= '9:00' ЖӘНЕ current_time <= '18:00'
- Уақыттың жұмыс уақытынан тыс екенін тексеру: current_time < '9:00' НЕМЕСЕ current_time > '18:00'
- Бүгіннің жұмыс күні екенін тексеру (сенбі немесе жексенбі емес): weekday != 6 ЖӘНЕ 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(күн, 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" мәніне түрлендіреді — секундтар немесе микросекундтар туралы ақпарат болмағандықтан, алынған timestamp ондық бөлшектен кейін нөлдерге ие.
Мысалы: 1736144700.000000
Егер ондық бөлшектен кейін миллисекундтарды қоссаңыз,
convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")
нәтиже келесідей болады: 1736166395.123456
get_datetime(пішім) - ағымдағы уақытты белгілі бір пішімде алу функциясы.
Функция бір параметрді — қажетті шығыс пішімін көрсететін жолды қабылдайды.
Маңызды! Функцияның жауабы (Дүйсенбі, Сейсенбі, т.б.) болады.
Мысалы: get_datetime("%A") шығысы Сәрсенбі болады
Функцияда тырнақшаға алынған жолдар ретінде көрсетілген пішім жолы параметрлерінің сипаттамасы:
Барлық басқа символдар өздерін білдіреді.
Ағымдағы timestamp мәнін келесі арқылы алуға болады: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")
Ағымдағы күнді "dd ай аты" пішімінде көрсету
Күнді "dd ай аты" пішімінде көрсету үшін current_date_eng() функциясын пайдаланыңыз.
Егер осы күнге белгілі бір күндер санын қосу қажет болса, функциядағы параметр ретінде қажетті күндер санын көрсету керек.
Мысалы, егер бүгінгі күн 3 сәуір болса, функция келесіні қайтарады:
current_date_eng() - April 3rd
current_date_eng(2) - April 5th
current_date_eng(-2) - April 1st


