gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:32:02 25 4
gpt4 key购买 nike

我正在编写一个 Telegram 机器人(使用 python-telegram-bot ),它基于命令,每小时循环向用户发送消息。

我想使用机器人命令启动/停止此操作,添加命令处理程序,例如 /start_cycle/stop_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()

令我困惑的是,Telegram 库是如何构思的,已经有一个基于事件的逻辑,由 updater.start_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())

关于python - 如何创建一个可以通过 python-telegram-bot 命令随时启动/停止的循环线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59857209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com