【问题标题】:Is it possible to make text message = command with slash? Telegram python bot是否可以使用斜线制作文本消息 = 命令?电报 python 机器人
【发布时间】:2021-09-13 22:11:36
【问题描述】:

我创建了电报机器人,现在它通过带有斜杠的命令处理程序使用命令来激活不同的功能,但问题是 - 是否有可能让他理解 text = /command,例如(“是,是,是,是" = /是)。

我想保留我的命令处理程序,但想用不带斜杠的命令制作键盘按钮。

self._keyboard: List[List[Union[str, KeyboardButton]]] = [
                                   ['/yes', '/no', '/sure'],
                                   ['/absolutely', '/allright'],


handles = [
CommandHandler('yes', self._yes),
CommandHandler('no', self._no),
CommandHandler('sure', self._sure),
CommandHandler('absolutely', self._absolutely),
CommandHandler('allright', self._allright),

#New added string: (Big Thanks to the user CallMeStag)
MessageHandler(Filters.regex('^yes$'), self._yes),
]



#I can start bot, bot not every function working, under is error which i got:
AttributeError: MessageHandler object has no attribute command

【问题讨论】:

  • 如果不了解您是如何实现命令的,就很难回答这个问题。请发布您的代码的相关部分,以便其他人可以帮助您。

标签: python python-3.x telegram telegram-bot python-telegram-bot


【解决方案1】:

KeyboardButtons 只是发送带有它们显示的文本的消息的快捷方式。你不能让他们发送不同的文本。 你可以做的也只是简单地处理非命令消息。如果您收到带有文本 yes/Y/Yes/YES 的消息,只需运行与 /yes 相同的代码即可。

编辑:使用python-telegram-bot,您可以使用MessageHandler 来执行此操作,例如Filters.regex:

MessageHandler(Filters.regex('^yes|Y|Yes|YES$'), self._yes)

【讨论】:

  • 这正是我想要做的,但无法理解在代码中编写它的正确方法。正是我想让机器人运行相同的代码,例如 (/yes) 短信和 (yes/Y/Yes/YES) 短信。你能展示代码示例吗?这对我理解有很大帮助。谢谢:)
  • 我找到了写正确论点的方法,非常感谢您的帮助:)
猜你喜欢
  • 2017-11-20
  • 2022-06-17
  • 2021-09-08
  • 1970-01-01
  • 2018-03-01
  • 2018-06-13
  • 2021-10-06
  • 2020-10-05
  • 2018-04-18
相关资源
最近更新 更多