python-telegram-bot 20.4版本job_queue为None,求定时发消息可行示例
解决python-telegram-bot 20.4中JobQueue为None的问题
问题原因
在python-telegram-bot 20.x版本中,JobQueue不再是Application的默认内置组件,需要手动导入并注册到应用实例中,直接访问application.job_queue会返回None。
可行示例代码
以下是实现每隔60秒向指定聊天发送消息的完整可运行代码:
from telegram.ext import Application, ContextTypes from telegram.ext.jobqueue import JobQueue # 定时任务的回调函数 async def send_periodic_message(context: ContextTypes.DEFAULT_TYPE): # 替换为你的目标聊天ID(私人聊天ID或频道ID) target_chat_id = "123456789" await context.bot.send_message(chat_id=target_chat_id, text="每隔60秒发送的定时消息") def main(): # 替换为你的机器人Token BOT_TOKEN = "你的机器人Token" # 创建Application实例 application = Application.builder().token(BOT_TOKEN).build() # 初始化JobQueue并注册到应用 job_queue = JobQueue() job_queue.set_application(application) application.add_handler(job_queue) # 添加重复执行任务:每隔60秒执行一次,首次执行延迟10秒 job_queue.run_repeating(send_periodic_message, interval=60, first=10) # 启动机器人 application.run_polling() if __name__ == "__main__": main()
关键说明
- 必须手动导入
JobQueue并完成注册,这是20.x版本与旧版本的核心差异。 target_chat_id需替换为实际值:私人聊天ID可通过给机器人发消息后,从update.message.chat.id获取;频道需确保机器人是管理员且拥有发消息权限。- 确认机器人Token正确,且机器人已正常接入Telegram服务。
内容的提问来源于stack exchange,提问作者Kostadin Krushkov
相关产品推荐
相关产品推荐

