【问题标题】:How can I add custom command using python-telegram-bot?如何使用 python-telegram-bot 添加自定义命令?
【发布时间】:2022-02-28 17:33:49
【问题描述】:

我没有在网上找到任何关于此的信息。我已经阅读了文档,但可以理解的是绝对无法理解它。我也没有直接在其中找到有关(自定义)命令的任何内容。

我知道您可以添加 /start 命令,例如:

# Help command
def help_command(update, context):
    update.message.reply_text("This is the help")

dispatcher.add_handler(CommandHandler("help", help_command))

之后您可以使用 /help 来显示帮助。但是如果我想添加自己的命令怎么办? (我知道这是可能的,因为我看到了拥有它们的机器人)

我想创建一个命令,将用户发送的所有文本变为大写。它可以通过编写 /uppercase 来工作,之后用户将发送消息,机器人将回复所有大写的文本。所以我继续创建一个新函数:

# Custom commands
def uppercase_command(update, context):
    update.message.reply_text('Send any ???? message to make it uppercase. ⬆')
    text = update.message.text
    update.message.reply_text(text).upper()

dispatcher.add_handler(CommandHandler("uppercase", uppercase_command))

这不起作用,机器人以“未知命令”响应。如何添加自定义命令?

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 它是显示Unknown command uppercase 还是不同的东西?也许问题是不同的。您是否将消息与 /uppercase 放在同一行,例如 /uppercase my message ?如果您将消息放在下一行,那么它会将其视为下一个命令。或者也许你把你的命令放在错误的地方——在启动机器人的代码之后。
  • 更好地创建显示您的问题的最小工作代码。
  • 我看到一个错误——你在错误的地方使用了upper()——它必须是text.upper(),但你有reply_text(...).upper()——也许错误表明reply_text()没有@987654330 @。如果您会显示完整的错误消息,那么我们可以确认它。
  • 不幸的是,默认情况下,当您运行 not 时,它不会显示任何错误消息。我知道您可以为此启用日志记录,但我还没有设法设置它。下班后,我将发布完整的错误消息输出。我确实相信我实际上错误地将 .upper() 放在了对方法的回复之后,而不是 furas 在 cmets 中写的实际文本。

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


【解决方案1】:

您展示的代码(几乎)没有任何问题。关于uppercase_command,我唯一想到的是furas 已经在cmets 中指出的upper 的错误位置。

这不起作用,机器人以“未知命令”响应。如何添加自定义命令?

如果机器人实际上在聊天中将Unknown command 作为文本消息发送,这一定是因为您将其编码为。也就是说,更新已经由另一个处理程序处理,可能会阻止您的CommandHandler("uppercase", uppercase_command) 处理更新。请仔细阅读Dispatcher.add_handler 的文档,并仔细检查您添加处理程序的顺序是否正确。

如果您希望您的命令显示在应用程序的自动完成中,您可以使用 Bot.set_my_commands 或使用 @BotFather 进行设置。

为了显示错误,请参阅herehere


免责声明:我目前是python-telegram-bot 的维护者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多