Skip to main content

MP vs Telegram Bot API differences (file_id, banChatMember, conversations, 501)

Key differences between the MPChat Bot API and Telegram: no file_id reuse, banChatMember mutes instead of kicks, bots can't start chats, message callbacks supported, MiniApp client return still closed.

If you are porting from Telegram, read this first. The path shape is familiar but several behaviors differ. Status is authoritative at core.mp.net/bots.


Overview

The MPChat Bot API mirrors Telegram-style methods but is not a full replica. These are the differences that break naive ports.

file_id is not reusable

A previously sent media file_id cannot be reused. sendPhoto, sendVideo, sendDocument, and setChatPhoto accept a public URL or multipart upload. When migrating, switch to URLs or your own storage.

banChatMember mutes, does not kick

banChatMember sets the member to restricted (muted) without removing them. until_date=0 or omitted means permanent until unbanChatMember. Risk L3, DocOnly.

Bots cannot start conversations

A user must establish context first. Sending to a chat_id with no conversation may return 400. Flow: user messages → getUpdates reads chat_id → sendMessage.

sendMessage buttons and MiniApp

sendMessage is an MP difference: reply_markup supports inline url / web_app / callback_data / copy_text and Reply Keyboard. Message callbacks use answerCallbackQuery. MiniApp client return flows (web_app_data / sendData / answerWebAppQuery) are still not available.

Quick reference

Topic

Telegram expectation

MP today

Media reuse

file_id reusable

Not supported; URL / multipart

Ban member

Kicks from chat

Mutes, stays in chat

Proactive DM

Possible in some cases

User must establish context

Message callback buttons

callback_data + answerCallbackQuery

Supported (300s window; no url/cache_time)

sendMessage MiniApp open

Full MiniApp return flows

web_app opens MiniApp; also url / copy_text

MiniApp client return

web_app_data / sendData / answerWebAppQuery

Not supported

Menu button vs Reply Keyboard

Independent left / right controls

Same; setChatMenuButton never drives Reply Keyboard

sendPoll / sendLocation / sendChatAction

Available

HTTP 501

Related

Many Telegram methods are simply not exposed by MP. Confirm availability in the method matrix before depending on a method.

Did this answer your question?