Telegram机器人Slash命令菜单定义全流程:从BotFather到API的完整实现指南

本文详细讲解Telegram机器人Slash命令菜单的作用、定义方法及如何显示在用户输入框中。涵盖BotFather设置与Bot API调用两种途径,并扩展多语言与作用范围配置,帮助开发者快速创建易用的命令界面。

阅读提示涉及账号和安全设置时,请边阅读边核对当前设备界面。

引言

Telegram机器人开发者经常面临一个痛点:用户不知道机器人支持哪些命令。通过自定义Slash命令菜单(即输入/时弹出的命令列表),可以让用户一目了然地发现可用功能,大幅降低使用门槛。本文将从零开始,详细演示如何定义Slash命令菜单并使其显示在输入框,并提供两种实现方案:适合初学者的BotFather图形化操作和适合开发者的API调用方法。

什么是Slash命令菜单?

Slash命令菜单是Telegram客户端中的一项原生功能。当用户在聊天输入框中输入/时,客户端会自动拉取机器人预设的命令列表并显示为快捷选项。每个命令由斜杠+命令名+可选描述组成,例如:/start - 启动机器人。这个菜单可以极大提升机器人可发现性和交互效率。

方法一:通过BotFather设置命令菜单

BotFather是Telegram官方提供的机器人管理工具,无需编写代码即可快速配置命令菜单。

步骤1:打开与BotFather的对话

在Telegram中搜索@BotFather,点击Start开始对话。

步骤2:选择要设置的机器人

发送/mybots,选择你的机器人,然后点击Edit Bot,再选择Edit Commands

步骤3:按格式输入命令列表

按照以下格式,每行一条命令:

start - 启动机器人
help - 查看帮助
settings - 打开设置

注意:命令名必须小写,只能包含字母、数字和下划线,且不能以数字开头。描述建议简短(不超过50字符)。发送后,BotFather会返回成功提示。

步骤4:验证效果

回到与机器人的对话窗口,在输入框中输入/,即可看到刚才定义的命令菜单。

方法二:通过Bot API的setMyCommands方法

对于需要动态更新命令的开发者,可以使用setMyCommands接口,它允许通过编程方式定义命令,支持更多高级配置。

使用curl调用示例

curl -X POST "https://api.telegram.org/bot<BOT_TOKEN>/setMyCommands" -H "Content-Type: application/json" -d '{"commands":[{"command":"start","description":"启动机器人"},{"command":"help","description":"获取帮助"}]}'

使用Python + python-telegram-bot库

from telegram.ext import Application, CommandHandler

app = Application.builder().token("BOT_TOKEN").build()

async def set_commands():
    commands = [
        ("start", "启动机器人"),
        ("help", "获取帮助")
    ]
    await app.bot.set_my_commands(commands)

app.run_until_disconnected()

注意:如果使用旧版库,方法可能为set_my_commandssetMyCommands,请查阅对应文档。

进阶:设置多语言与作用范围

多语言支持

通过language_code参数,可以为不同语言用户显示不同描述。例如:

{"commands":[{"command":"start","description":"Start bot"}],"language_code":"en"}

未指定语言时,用户看到的将是你设置的默认命令。

作用范围

使用scope参数可以控制命令显示在哪些聊天中(如群组、频道或私聊)。例如,只对私聊生效:

{"commands":[{"command":"start","description":"启动"}],"scope":{"type":"all_private_chats"}}

常用类型:defaultall_private_chatsall_group_chatsall_chat_administrators等。

注意事项与最佳实践

  • 命令数量建议控制在10个以内,过长会降低可读性。
  • 描述务必简洁明了,让用户能快速理解命令功能。
  • 删除已失效的命令时,可调用deleteMyCommands方法。
  • 命令名称尽量使用英文,输入更快捷,但描述可以使用本地语言。

总结

通过BotFather或API定义Slash命令菜单,是提升Telegram机器人专业度的关键一步。无论你是普通用户还是开发者,都可以在5分钟内完成设置。掌握setMyCommands的进阶用法后,你还能根据用户语言与使用场景动态调整菜单,真正实现个性化体验。立即为你的机器人添加一个清晰的命令菜单吧!

FAQ

下载与安装

常见问题

为什么会话中输入的Slash命令菜单不显示?

可能原因:机器人未设置任何命令;或者命令设置为无效作用域(例如只能私聊显示,而你在群组中使用)。请检查BotFather中的命令列表,或调用getMyCommands确认当前设置。

如何更新已存在的Slash命令菜单?

直接再次使用BotFather的/Edit Commands或调用setMyCommands覆盖原命令即可。新设置会立即生效,无需重新启动机器人。

命令描述中可以包含Emoji吗?

可以。Telegram官方建议在描述中使用Emoji来标亮重点,但需注意不要过度使用,以免影响可读性。