同时使用 scedule 和 Telebot

问题描述

我正在使用使用这些库的程序:

  • 电话机器人
  • 日程

我想像这样安排程序每隔一定时间执行函数

from time import sleep
import schedule,telebot

token = 'MY TOKEN'
bot = telebot.TeleBot(token)

def check():
    @bot.message_handler(commands=['start'])
    def send_ms(message):
        bot.send_message(message.chat.id,'Welcome '+str(message.from_user.first_name)+'!!')
        mss = 'Welcome to my bot!'
        bot.send_message(message.chat.id,mss)

def pr():
    print('Hello World')


schedule.every().second.do(pr)
schedule.every().second.do(check)

如果我在此代码下方放置 bot.polling() 而不是此行,它将被卡在 无限循环。

我可以这样做

while True:
    schedule.run_pending()
    sleep(1)

或者这个

bot.polling()

无论哪种方式,它都会陷入无限循环并忽略 下面的所有代码我该如何解决这个问题!

解决方法

你可以试试simple_scheduler。 由于作业并行运行,因此不会被另一个作业阻塞。 以下代码应该可以完成这项工作。

// from this:
measures.map(...).toList();
// to this:
measures(context).map(...).toList();