Реализация таймера, который раз в определённый промежуток выдаёт время, которое осталось до определённого события

Vins

Новичок
Пользователь
Янв 10, 2024
3
0
1
Здравствуйте. Для телеграмм-бота мне нужно реализовать код, который раз в 5 часов будет высылать информацию со временем, которое осталось до определённого события.
То есть дата события, например, стоит на каждый месяц (раз в 28 дней). Мне нужно, чтобы ежедневно раз в 5 часов информация по поводу времени, которое осталось до следующего месяца, обновлялась
 
Последнее редактирование:

calipso293

Новичок
Пользователь
Ноя 15, 2022
2
1
1
import datetime
import time
from telegram import Bot
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

# Ваш токен бота
TOKEN = 'YOUR_BOT_TOKEN'

# ID чата, куда будут отправляться сообщения (можно получить с помощью @getidsbot в Telegram)
CHAT_ID = 'YOUR_CHAT_ID'

# Дата и время события (первый запуск бота)
event_date = datetime.datetime.now() + datetime.timedelta(days=1)
event_date = event_date.replace(hour=0, minute=0, second=0, microsecond=0)

def send_message(context: CallbackContext):
now = datetime.datetime.now()
time_until_event = event_date - now

if time_until_event.days > 0:
hours, remainder = divmod(time_until_event.seconds, 3600)
minutes, seconds = divmod(remainder, 60)

message = f"До следующего месяца осталось: {time_until_event.days} дн. {hours} час. {minutes} мин."
context.bot.send_message(chat_id=CHAT_ID, text=message)

def start(update: Update, context: CallbackContext):
update.message.reply_text("Бот запущен! Ожидание первого события...")

def main():
updater = Updater(token=TOKEN, use_context=True)
dispatcher = updater.dispatcher

# Команда /start
dispatcher.add_handler(CommandHandler("start", start))

# Запуск отправки сообщения раз в 5 часов
job_queue = updater.job_queue
job_queue.run_repeating(send_message, interval=5 * 60 * 60, first=0)

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()
 
  • Мне нравится
Реакции: Vins

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
Ясно, чем помочь?
 

Форум IT Специалистов