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

Python开发Telegram机器人如何将普通文本映射为带斜杠命令?

问题解决方法

报错根因

你新增的MessageHandler类本身没有内置command属性,只有CommandHandler实例才携带该属性。报错是因为你后续代码中存在遍历所有handler读取command属性的逻辑,遍历到MessageHandler时就会触发属性不存在的异常。

解决方案

  • 第一步:优化正则匹配规则,覆盖大小写、别名场景,同时导入re模块支持忽略大小写匹配
    你要实现yes、Y、Yes、YES都触发/yes的逻辑,正则规则调整为:Filters.regex(r'^(yes|Y)$', re.IGNORECASE)
  • 第二步:解决MessageHandler无command属性的问题,二选一即可:
    1. 手动给MessageHandler实例新增command属性,和对应CommandHandler的command值保持一致
    2. 调整你代码中遍历handler读取command的逻辑,先判断handler类型,只有isinstance(handler, CommandHandler)为真时才读取command属性
  • 第三步:调整键盘按钮文本,去掉斜杠即可实现不带斜杠的命令按钮

完整可运行代码示例

import re
from typing import List, Union
from telegram import KeyboardButton
from telegram.ext import CommandHandler, MessageHandler, Filters

# 调整后的键盘,直接用不带斜杠的展示文本
self._keyboard: List[List[Union[str, KeyboardButton]]] = [
    ['Yes', 'No', 'Sure'],
    ['Absolutely', 'All right']
]

# 构造普通文本匹配的handler,手动加command属性
yes_msg_handler = MessageHandler(Filters.regex(r'^(yes|Y)$', re.IGNORECASE), self._yes)
yes_msg_handler.command = 'yes'
no_msg_handler = MessageHandler(Filters.regex(r'^(no|N)$', re.IGNORECASE), self._no)
no_msg_handler.command = 'no'
sure_msg_handler = MessageHandler(Filters.regex(r'^sure$', re.IGNORECASE), self._sure)
sure_msg_handler.command = 'sure'
absolutely_msg_handler = MessageHandler(Filters.regex(r'^absolutely$', re.IGNORECASE), self._absolutely)
absolutely_msg_handler.command = 'absolutely'
allright_msg_handler = MessageHandler(Filters.regex(r'^allright$', re.IGNORECASE), self._allright)
allright_msg_handler.command = 'allright'

handles = [
    CommandHandler('yes', self._yes),
    CommandHandler('no', self._no),
    CommandHandler('sure', self._sure),
    CommandHandler('absolutely', self._absolutely),
    CommandHandler('allright', self._allright),
    # 加入普通文本匹配handler
    yes_msg_handler,
    no_msg_handler,
    sure_msg_handler,
    absolutely_msg_handler,
    allright_msg_handler
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:21:03