【发布时间】: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