You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python-telegram-bot运行后无法响应/start命令求助

Python-Telegram-Bot v20.8 /start命令失效问题

问题现象

  • 机器人长时间频繁运行后,仅/start命令完全无响应,其他消息、命令均可正常处理
  • 重启机器人无法解决问题,需等待约1小时后/start命令才恢复正常
  • 将/start重命名为/start2并重启后,新命令可正常使用,但原/start仍需1小时后恢复
  • 启用调试日志后,get_updates()调用显示“No new updates found”,但/start命令确实已发送

初始化ConversationHandler代码

def init_application(self):
    # Create the Application and pass it bot's token.
    application = Application.builder().token(self.BOTTOKEN).read_timeout(10).get_updates_read_timeout(50).build()
    
    # Add conversation handler with the states 
    conv_handler = ConversationHandler(
        entry_points=[CommandHandler("start", self.start)],
        states={
            self.MENURESPONSE:    [MessageHandler(filters.Regex("^.*$"), self.menu_response)],
            self.TICKETING:       [MessageHandler(filters.Regex("^.*$"), self.ticketing)],
            self.TICKETING_CHECK: [MessageHandler(filters.Regex("^.*$"), self.ticketnumber_check)],
            self.ACCOMMODATION:   [MessageHandler(filters.Regex("^.*$"), self.accommodation)],
            self.PAYMENT:         [MessageHandler(filters.Regex("^.*$"), self.payment)],
            self.BANKING:         [MessageHandler(filters.Regex("^.*$"), self.banking)],
            self.BANKINGUPLOAD:   [MessageHandler(filters.Document.ALL, self.banking_file_upload)],
        },
        fallbacks=[CommandHandler("cancel", self.cancel)],
    )
    #application.add_handler(MessageHandler(filters.Document.ALL, self.banking_file_upload))
    application.add_handler(conv_handler)
    self.application = application
    return 

可能的原因分析

1. Telegram服务器端临时限流/命令缓存

Telegram服务器可能对高频触发的特定命令设置了临时限制机制。当/start被大量用户频繁调用后,服务器会暂时屏蔽该命令的推送,1小时的恢复窗口符合这类临时限制的常见时长。重命名为/start2后能正常使用,是因为新命令不在服务器的受限名单中,绕过了限制。

2. ConversationHandler会话状态未及时清理

你的代码中未设置conversation_timeout参数,默认情况下用户的会话状态会永久保留。如果大量用户未触发/cancel命令结束会话,会导致这些用户始终处于会话状态中。此时用户发送/start时,由于ConversationHandler的entry points仅在用户无会话状态时才会触发,而当前会话的states中没有处理/start的逻辑,所以机器人不会响应。若你使用了外部持久化存储(如数据库、文件)保存会话状态,重启机器人后状态依然存在,会导致问题持续。

3. Update Offset异常(可能性较低)

虽然调试日志显示“No new updates found”,但如果get_updates的offset出现异常,可能导致Telegram服务器认为/start的更新已被机器人处理,不再推送。不过该情况通常会导致所有更新无法接收,而不是仅/start失效,所以可能性较低。


内容的提问来源于stack exchange,提问作者HansenHans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:48:11