Ежедневно отправлять 4 сообщения в определенное время всем пользователям Telegram-бота

Пользуюсь библиотекой pyTelegramBotAPI. Пытался найти ответ в интернете. Видел упоминание библиотеки Schedule. Но либо я тупой, либо что-то неправильно сделал и бот вообще перестал реагировать на команды.

Самая главная задача - сделать Telegram-бота который сможет каждый день, 3 или 4 раза в день отправлять сообщение с напоминанием выгулять собаку. Буду очень признателен если поможете мне!

P.s.(Если как то неправильно формулирую запрос, или ещё что-то не так. Простите, я просто новичок и не совсем понимаю что, и как надо делать)

Код неправильно вставлялся, поэтому прикрепил скриншот


Ответы (1 шт):

Автор решения: Gawain

Сейчас бот перестает реагировать на команды потому что программа обрабатывает бесконечный цикл в строках 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.

  1. Я очень надеюсь что на скриншоте не ваш настоящий токен
  2. Не стоит прикреплять ваш код скриншотом, это неудобно, когда пытаешься воспроизвести код на своей машине
→ Ссылка