在 Telegram 庞大的生态中,机器人(Bot)是最为亮眼的存在。无论是自动回复、定时提醒,还是复杂的业务处理,机器人都能极大提升效率。而指令(Commands)和键盘按钮(Keyboards)则是用户与机器人交互的两大核心入口。本文将从零开始,手把手教你如何为 Telegram 机器人设置指令和自定义键盘按钮,让机器人真正“听懂指令,看懂按钮”。
认识机器人指令和键盘按钮
首先,明确概念。指令是用户以“/”开头发送的命令,如 /start、/help;键盘按钮则分为两类:回复键盘(ReplyKeyboardMarkup)和 内联键盘(InlineKeyboardMarkup)。回复键盘出现在输入框替代普通键盘,内联键盘则附着在消息下方,两者都能让交互更直观。
通过 BotFather 设置机器人指令
BotFather 是 Telegram 官方的机器人管理工具,所有机器人的基础设置都通过它完成。要设置指令,请按照以下步骤操作:
- 打开与
@BotFather的对话。 - 发送
/mybots,选择你要设定的机器人。 - 点击 Edit Bot → 选择 Edit Commands。
- 按格式输入指令列表,每行一个,格式为:
command - 描述
例如:
start - 启动机器人
help - 获取帮助
tips - 查看今日小贴士 - 保存后,用户便可在输入框看到指令菜单。
此外,你可以随时修改或删除指令,但最基础的设置如上。指令描述建议简洁明了,方便用户快速理解。
如何设置回复键盘按钮(ReplyKeyboardMarkup)
回复键盘适合提供固定选项,用户无需输入文字,点击即可。以 Python 的 python-telegram-bot 库为例:
from telegram import ReplyKeyboardMarkup
from telegram.ext import Updater, CommandHandler
def start(update, context):
keyboard = [['🔍 查询', '📊 统计'], ['⚙️ 设置', '❓ 帮助']]
reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
update.message.reply_text('请选择功能:', reply_markup=reply_markup)
updater = Updater('YOUR_TOKEN')
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.start_polling()
要点:
reply_markup参数传入ReplyKeyboardMarkup对象。resize_keyboard=True让按钮自适应大小,避免按钮过大。- 使用 emoji 增强可读性,让按钮更生动。
- 如需移除键盘,可用
ReplyKeyboardRemove。
如何设置内联键盘按钮(InlineKeyboardMarkup)
内联键盘嵌入在消息中,可承载回调数据或链接,交互更丰富。以下是一个包含跳转链接和回调按钮的示例:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CallbackQueryHandler
def start(update, context):
keyboard = [
[InlineKeyboardButton("🔗 打开官网", url='https://new-telegram.com.cn')],
[InlineKeyboardButton("📢 关注频道", callback_data='subscribe')]
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('点击按钮继续:', reply_markup=reply_markup)
def button_handler(update, context):
query = update.callback_query
query.answer()
if query.data == 'subscribe':
query.edit_message_text('感谢订阅!')
updater.dispatcher.add_handler(CallbackQueryHandler(button_handler))
注意:
- 通过
url参数可直接跳转链接,无需额外处理。 callback_data必须为短字符串,用于后续回调处理。- 点击后需调用
query.answer()防止请求超时。
高级技巧:指令菜单与权限管理
对于大型机器人,建议:
- 为不同用户组设置不同权限,例如管理员指令只对特定用户开放。
- 使用
ChatPermissions限制用户可用的指令。 - 在内联键盘中,使用
edit_message_reply_markup动态更新按钮,实现分页效果。 - 结合 BotFather 的 /setcommands 命令,为不同聊天类型(群组、频道)设置专属指令。
常见问题与故障排查
- 为什么指令没有出现在菜单?
- 检查 BotFather 中是否已保存,且描述与指令间有空格和短横线。
- 按钮点击无反应?
- 确认 callback_data 是否唯一,并在代码中注册了对应的处理函数。
- 如何清除回复键盘?
- 使用
ReplyKeyboardRemove或在发送新按钮时替换。 - 内联键盘无法显示网址?
- 注意 Telegram 只允许 http/https 链接。
总结
设置机器人指令和键盘按钮并不复杂,善用 BotFather 和代码中的两种键盘类型,就能大幅提升机器人的可用性。本文从基础到进阶,涵盖了指令设置、回复键盘和内联键盘的实战用法,并提供了常见问题的解决方案。欢迎收藏本文,并在实践中灵活运用,打造属于你的高效 Telegram 机器人。