跳转到主要内容

内联键盘按钮:url、web_app、callback_data 与 copy_text

讲解 sendMessage 的 reply_markup 四类内联按钮:url、web_app、callback_data 与 copy_text,并说明排版上限(每行 8 / 共 100 / 文案 64)、每按钮 style 颜色,以及客户端按类型自动展示的右侧图标。

一句话结论

内联键盘挂在消息气泡上,经 sendMessagereply_markup.inline_keyboard 下发。四类按钮:urlweb_appcallback_datacopy_text。不在 BotFather 里配置气泡按钮。


总览

需要动作留在消息上时用内联键盘;底部输入区快捷键见 Reply Keyboard 指南。参数级权威:core.mp.net/bots

按钮随消息走,不在 BotFather 配置

  • 只能通过消息 reply_markup(通常是 sendMessage)下发。

  • BotFather 的菜单按钮 / 欢迎语设置不会在气泡上造内联行。

  • 事后改键盘用 editMessageReplyMarkup(见回调指南)。

四类语义

字段

行为

url

打开 HTTP/HTTPS 链接。

web_app

打开本 Bot 已启用的 MiniApp(entryUrlhttps://mp.net/{botUsername}/{shortName},可带 ?startapp=)。MiniApp 客户端回流(web_app_data / sendData / answerWebAppQuery)仍关闭。

callback_data

向后台发送 callback_query(必须 answerCallbackQuery)。

copy_text

对象形式 copy_text: { "text": "…" }——客户端本地复制,不产生 Update。

排版上限

  • 同一行按钮等宽(与文案长短无关)。

  • 行间距约 2pt(客户端排版)。

  • 每行最多 8 个;整键盘最多 100 个。

  • 按钮 text 最长 64,超出省略。

style 颜色

可选 style 挂在每个 InlineKeyboardButton 上:success(绿)/ danger(红)/ primary(蓝);不设则客户端默认。其它未开放的 Telegram 按钮字段会返回 400

右侧图标

图标由按钮类型决定(MiniApp / URL / 复制 / 跳转),开发者不必传图标 URL。

最小 JSON 示例(四类各一)

{
"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" } }
]]
}
}

相关

  • 回调按钮与消息原地更新(answerCallbackQuery)

  • 核心消息方法详解:sendMessage(reply_markup)

  • MiniApp 标识、直链与 startapp

权威来源

与 PRD 冲突时以 core.mp.net/bots 为准。

这是否解答了您的问题?