Ежедневно отправлять 4 сообщения в определенное время всем пользователям Telegram-бота
Пользуюсь библиотекой pyTelegramBotAPI. Пытался найти ответ в интернете. Видел упоминание библиотеки Schedule. Но либо я тупой, либо что-то неправильно сделал и бот вообще перестал реагировать на команды.
Самая главная задача - сделать Telegram-бота который сможет каждый день, 3 или 4 раза в день отправлять сообщение с напоминанием выгулять собаку. Буду очень признателен если поможете мне!
P.s.(Если как то неправильно формулирую запрос, или ещё что-то не так. Простите, я просто новичок и не совсем понимаю что, и как надо делать)
Ответы (1 шт):
Сейчас бот перестает реагировать на команды потому что программа обрабатывает бесконечный цикл в строках 12-14, и, соответственно, комманда
bot.polling(non_stop=True)
никогда не выполняется (интерпретотор попросту не доходит до нее, т.к. все время обрабатывается цикл, который отвечает за schedule)
Вам следует вынести этот бесконечный цикл в отдельный поток, для этого можно использовать библиотеку threading
import threading
import time
import schedule
import telebot
from telebot import types
bot = telebot.TeleBot('')
def schedule_func_1():
print('Я выполняюсь каждые 8 часов')
def schedule_func_2():
print('Я выполняюсь каждый день в 15:00')
def foo():
schedule.every(8).hours.do(schedule_func_1)
schedule.every().day.at("15:00").do(schedule_func_2)
while True:
schedule.run_pending()
time.sleep(1)
@bot.message_handler(commands=['start'])
def start(message: types.Message):
bot.send_message(message.chat.id, 'старт')
if __name__ == '__main__':
thread = threading.Thread(target=foo)
thread.start()
bot.polling(none_stop=True)
P.S.
- Я очень надеюсь что на скриншоте не ваш настоящий токен
- Не стоит прикреплять ваш код скриншотом, это неудобно, когда пытаешься воспроизвести код на своей машине
