跳至主要內容

MPChat 與 Telegram Bot API:接入時需要了解的差異

MPChat Bot API 與常見 Telegram 預期的關鍵行為差異:不支援 file_id 複用、banChatMember 為禁言、Bot 不能主動發起會話、訊息 callback 已支援、MiniApp 用戶端回流仍關閉、501 方法。

從 Telegram 遷移請先讀這篇。路徑形態相似,但若干行為不同。狀態以 core.mp.net/bots 為準。


總覽

MPChat Bot API 沿用 Telegram 風格的方法,但不是完整複刻。以下是會讓「無腦遷移」失敗的差異。

file_id 不可複用

已傳送媒體的 file_id 不能複用。sendPhoto、sendVideo、sendDocument、setChatPhoto 接受公網 URL 或 multipart 上傳。遷移時改用 URL 或自有儲存。

banChatMember 為禁言非踢人

banChatMember 將成員設為 restricted(禁言),不移除出群。until_date=0 或省略表示永久,直至 unbanChatMember。風險 L3,DocOnly。

Bot 不能主動發起會話

用戶須先建立上下文。向無會話的 chat_id 傳送可能回傳 400。流程:用戶發訊息 → getUpdates 取 chat_id → sendMessage。

sendMessage 按鈕與 MiniApp

sendMessage 屬 MP 差異:reply_markup 支援內嵌 url / web_app / callback_data / copy_text 與 Reply Keyboard。訊息 callback 走 answerCallbackQuery。MiniApp 用戶端回流(web_app_data / sendData / answerWebAppQuery)仍不可用。

速查表

主題

Telegram 預期

MP 現狀

媒體複用

file_id 可複用

不支援;URL / multipart

封禁成員

踢出群

禁言,仍在群內

主動私聊

部分情境可推送

用戶須先建立會話

訊息 callback 按鈕

callback_data + answerCallbackQuery

已支援(300 秒視窗;無 url/cache_time)

sendMessage 開啟 MiniApp

完整 MiniApp 回流

web_app 開啟 MiniApp;另支援 url / copy_text

MiniApp 用戶端回流

web_app_data / sendData / answerWebAppQuery

不支援

選單按鈕 vs Reply Keyboard

左右獨立控件

同;setChatMenuButton 不驅動底部鍵盤

sendPoll / sendLocation / sendChatAction

可用

HTTP 501

為什麼已有的私聊回傳 HTTP 403?

  • 使用者封鎖 Bot 後,向該私聊傳送、轉傳或複製訊息都會回傳 HTTP 403。收到此錯誤後請跳過重試。解除封鎖後,Bot 可以傳送新訊息。封鎖期間未送達的訊息不會自動補送。

為什麼 MiniApp 按鈕在私聊可用,在群組裡卻打不開?

  • 一般 web_app 按鈕僅適用於 Bot 私聊。在 Bot 已加入的群組或超級群組分享 MiniApp 時,該則 sendMessage 的內嵌鍵盤必須恰好一列、一個按鈕,且按鈕只包含 text 與 web_app。也請確認 URL 指向目前 Bot 擁有且已啟用的 MiniApp。

為什麼編輯訊息後按鈕或媒體說明消失了?

  • 複合編輯訊息時,省略內嵌鍵盤或媒體說明對應的欄位,會清除該欄位。若要保留原值,請在編輯請求中一併傳入。若只調整鍵盤或媒體說明,可以使用對應的專用編輯方法。

相關文章

大量 Telegram 方法在 MP 中並未暴露。依賴某方法前請先在方法矩陣確認可用性。

是否回答了您的問題?