@cashncarry
нагуглили

Как заставить бота автоматически отправлять сообщения в заданное время?

Новичок
Делаю первого бота в телеграмме для опыта. Нужно заставить его отправлять сообщения утром и вечером.
Пока выкручиваюсь через while который запускается после команды /start, но уверен что есть способы проще.
  • Вопрос задан
  • 24498 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Error4uk
через schedule

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)
Ответ написан
Комментировать
@nllm
Самый простой вариант.
В базу писать дату, время, id пользователя и текст сообщения. Для каждого сообщения существует статус: новое, отправка, отправлено.

С помощью крона запускать скрипт каждую минуту (или другой период времени). При запуске смотреть каким пользователям уже можно/пора отправлять сообщения.
Если уже пора, то делаем отметку в базе "идет отправка" и начинаем отправлять сообщения.
После отправки пишем в базу "отправлено".
Ответ написан
@danis_2014
Можешь использовать time.sleep(seconds). Например:
import time
while True:
    send_message()  # типа отправляешь сообщение
    time.sleep(60)  # останавливает выполнение кода на минуту


Но лучше использовать модуль datetime:
import datetime
datetime.datetime.now().time()  # вернет настоящее время

И уже по выводу времени делать проверки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы