跳至主要內容

內嵌鍵盤按鈕: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 為準。

是否回答了您的問題?