Telegram bot api python - выполенение функции каждые N минут

Хотел бы узнать, как возможно реализовать вызов бота через какой-то промежуток времени.

Как я понял, библиотека telebot работает таким образом - Если приходит запрос, то выполняется функция, типа Callback. Сама по себе main() функция не будет вызываться если нет запроса от бота.

Но каким образом реализовать постоянную проверку времени. Меня интересует не сам метод проверки времени, а принцип. Понятное дело, что While true: или time.sleep() в данном контексте не сработает или же я ошибаюсь?

Запросы обрабатываю через @bot.message_handler(content_types=['text'])


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

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

Решил данную проблему потоками и cronjob'om

кому интересно, нижу решение.

import telebot
import schedule
import time
import threading

# Telegram variables
bot = telebot.TeleBot(config.TOKEN)

def cronTask():
    print("Я сработал")

def runBot():
    bot.polling(none_stop=True)

def runScheluders():
    schedule.every(1).minute.do(cronTask)

    # Start cron task after some time interval
    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    t1 = threading.Thread(target=runBot)
    t2 = threading.Thread(target=runScheluders)
    t1.start()
    t2.start()
→ Ссылка