【问题标题】:Python Telegram Bot. How to add a catch-all handlerPython电报机器人。如何添加一个包罗万象的处理程序
【发布时间】:2021-03-29 17:50:07
【问题描述】:

我正在使用库python-telegram-bot,并添加了一些命令和消息处理程序。 消息处理程序特定于消息,这意味着每个命令处理程序都有一个相应的消息处理程序。 例如,

dispatcher.add_handler(CommandHandler("Start", self.start_cmd_callback))
dispatcher.add_handler(MessageHandler(Filters.regex(re.compile('Start', re.IGNORECASE)), self.start_msg_callback))
dispatcher.add_handler(CommandHandler("Help", self.start_cmd_callback))
dispatcher.add_handler(MessageHandler(Filters.regex(re.compile('Help', re.IGNORECASE)), self.start_msg_callback))
dispatcher.add_handler(CommandHandler("Set", self.start_cmd_callback))
dispatcher.add_handler(MessageHandler(Filters.regex(re.compile('Set', re.IGNORECASE)), self.start_msg_callback))

还有一些其他类似的命令+消息处理程序。

现在的问题是,如何添加一个包罗万象的处理程序,或者一个默认的回退处理程序? 由于这不是一个对话机器人,我想回退不是commandalias message 的所有其他内容(消息/命令)以转到那个。

【问题讨论】:

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


    【解决方案1】:

    如果您想要一个 MessageHandler 来处理每条消息,无论文本是什么,那么您可以添加(在您已经拥有的每个处理程序之后)MessageHandler(Filters.all, handle_everything_else)

    如果您想为命令和消息使用不同的后备处理程序,那么您可以执行类似的操作

    MessageHandler(~Filters.command, handle_every_message)
    MessageHandler(Filters.command, handle_every_command)
    

    您可以查看过滤器的文档here

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多