一句话结论
内联键盘挂在消息气泡上,经 sendMessage 的 reply_markup.inline_keyboard 下发。四类按钮:url、web_app、callback_data、copy_text。不在 BotFather 里配置气泡按钮。
总览
需要动作留在消息上时用内联键盘;底部输入区快捷键见 Reply Keyboard 指南。参数级权威:core.mp.net/bots。
按钮随消息走,不在 BotFather 配置
只能通过消息
reply_markup(通常是sendMessage)下发。BotFather 的菜单按钮 / 欢迎语设置不会在气泡上造内联行。
事后改键盘用
editMessageReplyMarkup(见回调指南)。
四类语义
字段 | 行为 |
| 打开 HTTP/HTTPS 链接。 |
| 打开本 Bot 已启用的 MiniApp( |
| 向后台发送 |
| 对象形式 |
排版上限
同一行按钮等宽(与文案长短无关)。
行间距约 2pt(客户端排版)。
每行最多 8 个;整键盘最多 100 个。
按钮
text最长 64,超出省略。
style 颜色
可选 style 挂在每个 InlineKeyboardButton 上:success(绿)/ danger(红)/ primary(蓝);不设则客户端默认。其它未开放的 Telegram 按钮字段会返回 400。
右侧图标
图标由按钮类型决定(MiniApp / URL / 复制 / 跳转),开发者不必传图标 URL。
私聊示例:四类按钮混排
{
"chat_id": 12345,
"text": "请选择",
"reply_markup": {
"inline_keyboard": [[
{ "text": "文档", "url": "https://core.mp.net/bots" },
{ "text": "应用", "web_app": {
"url": "https://mp.net/MyBot/shop?startapp=home" } },
{ "text": "确认", "callback_data": "ok:1", "style": "success" },
{ "text": "复制", "copy_text": { "text": "ORDER-42" } }
]]
}
}
在群里分享 MiniApp
使用 sendMessage 发到 Bot 已加入的群或超级群。键盘必须恰好一行一个按钮,且按钮只含 text 和 web_app。频道、底部键盘和消息编辑不适用此例外。
{"chat_id":"REPLACE_WITH_GROUP_CHAT_ID","text":"Open the app","reply_markup":{"inline_keyboard":[[{"text":"Open","web_app":{"url":"https://mp.net/MyBot/shop?startapp=home"}}]]}}
