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

Telegram Bot跨文件返回MENU状态失败,报未知状态错误

问题原因及解决方案

核心问题

你用range(0)作为对话状态标识是错误的选择。range(0)会生成一个空的range对象(range(0, 0)),虽然你在ConversationHandler的states里用它做键,但这类对象不适合作为对话状态——Telegram Bot的ConversationHandler要求状态是可哈希、语义明确的简单类型(比如字符串、整数),空range对象会被判定为未知状态,导致报错。

修复步骤

1. 替换状态标识类型

在main.py中,把MENU的定义从range(0)改为字符串或整数:

# 推荐用字符串,语义更清晰
MENU = "MENU"
# 或者用整数也可以:MENU = 1

2. 同步更新ConversationHandler的states

main.py里的ConversationHandler部分保持变量引用即可,此时MENU已是合法的状态标识:

conversation = ConversationHandler(
    entry_points=[self.start_handler],
    states={
        MENU: [self.menu_handler]
    },
    fallbacks=[]
)

3. 确保Start类返回正确状态

Start类的逻辑无需修改,只要传入的MENU是新定义的字符串/整数,返回self.MENU就能正确匹配对话状态。

额外提醒

你代码里还返回了CHOOSE_NETWORK,但这个状态并没有在ConversationHandler的states中定义,后续同样会触发类似的未知状态错误,记得补充对应的状态配置和处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:04:58