Python Telegram Bot Job Queue定时发消息触发RuntimeError问题咨询
报错原因
该报错是**Windows系统+Python 3.9+**环境下,python-telegram-bot v13.x 依赖的APScheduler调度器与Python标准库线程池生命周期冲突导致的典型问题,绝大多数情况是顶级代码没有加主程序入口保护触发。
修复方案
1. 优先添加主程序入口保护块
Windows系统下Python执行脚本时,若顶级代码没有if __name__ == '__main__'包裹,模块导入阶段会重复执行初始化逻辑,导致调度器线程池提前关闭。修改后的完整代码如下:
from telegram.ext import Updater def callback_minute(context): context.bot.send_message(chat_id='替换为实际数字chat_id', text='每小时发送的消息内容') if __name__ == '__main__': u = Updater('替换为实际bot_token', use_context=True) j = u.job_queue # 每小时发送interval参数设为3600,单位为秒 job_minute = j.run_repeating(callback_minute, interval=3600) u.start_polling() u.idle()
2. 版本适配修复
如果添加主入口块后仍报错,是依赖包版本不兼容导致,执行以下命令降级依赖即可:
pip install python-telegram-bot==13.7 apscheduler==3.6.3
额外注意事项
chat_id必须填写数字格式的ID,不能直接填用户名,可通过@userinfobot获取自己的ID- 调试结束后不要强行终止进程,否则残留的后台连接会导致下次启动时报错
内容的提问来源于stack exchange,提问作者Piotr F
相关产品推荐
相关产品推荐

