從 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 中並未暴露。依賴某方法前請先在方法矩陣確認可用性。
