如何创建一个可以通过python电报bot命令随时启动/停止的循环线程?

如何创建一个可以通过python电报bot命令随时启动/停止的循环线程?,python,python-3.x,telegram,python-telegram-bot,periodic-task,Python,Python 3.x,Telegram,Python Telegram Bot,Periodic Task,我正在写一个电报机器人,它基于一个命令,每小时周期性地向用户发送消息 我想使用bot命令启动/停止此操作,添加命令处理程序,如/start\u cycle和/stop\u cycle。澄清一下,我的想法是: def start_cycle() # start in some way send_hourly_message() def stop_cycle() # stop in some way send_hourly_message() def main(): ""

我正在写一个电报机器人,它基于一个命令,每小时周期性地向用户发送消息

我想使用bot命令启动/停止此操作,添加命令处理程序,如
/start\u cycle
/stop\u cycle
。澄清一下,我的想法是:

def start_cycle()
    # start in some way send_hourly_message()

def stop_cycle()
    # stop in some way send_hourly_message()

def main():
    """Entrypoint of the bot"""
    # Create updater and get dispatcher
    updater = Updater(...)
    dp = updater.dispatcher

    # Add command handlers
    dp.add_handler(CommandHandler("start_cycle", start_cycle))
    dp.add_handler(CommandHandler("stop_cycle", stop_cycle))

    # Start the bot until interrupt
    updater.start_polling(timeout=3)
    updater.idle()
让我困惑的是,对于电报库是如何构思的,已经有了一个基于事件的逻辑,由
updater.start\u polling()
updater.idle()启动。我没有找到任何文档/具体信息来说明如何使它在可触发的基于时间的事件中正常工作

你认为做我想做的事最好的方法是什么?我研究了一下asyncio,但对于我实际需要的东西来说,它可能太复杂了


提前感谢您的建议

多亏了@GaganTK,我找到了我需要的东西:

def start_notify(update, context):
    new_job = context.job_queue.run_repeating(my_callback, interval=3, first=0, name="my_job")

def stop_notify(update, context):
    job = context.job_queue.get_jobs_by_name("my_job")
    job[0].schedule_removal()

def my_callback(context: telegram.ext.CallbackContext):
    print(datetime.datetime.now())

欢迎来到SO!为此,您可以使用
job\u queue
。使用此选项,您可以安排作业在一天中的特定时间运行,或以特定间隔连续运行,或仅运行作业once@GaganTK谢谢你的洞察力,我不知道那个扩展!我已经研究了这个问题并找到了我需要的东西,我将发布一个片段来记录我的解决方案。