如何使用python电报机器人添加自定义命令



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

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

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

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

我想制作一个命令,让用户发送的所有文本都变成大写。它将通过写/大写字母来工作,之后用户将发送消息,机器人程序将用全大写的文本进行回复。所以我继续创建了一个新功能:

# 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))

这不起作用,机器人会用";未知命令";。如何添加自定义命令?

您显示的代码(几乎(没有任何问题。关于uppercase_command,唯一想到的是fura在评论中已经指出的upper的错误位置。

这不起作用,机器人会用";未知命令";。如何添加自定义命令?

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

如果你想让你的命令显示在应用程序的自动完成中,你可以使用Bot.set_my_commands,也可以使用@BotFather进行设置。

为了显示错误,请参阅此处和此处。


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

@dp.message_handler(text=['message'])
async def command_1(message : types.Message):
await bot.send_message(message.from_user.id, "answer?")

最新更新