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, and some 501 methods.

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_idsendMessage.

sendMessage and MiniApp buttons

sendMessage is an MP difference: it supports reply_markup.inline_keyboard[].web_app to open a MiniApp, but not web_app_data, sendData, or answerWebAppQuery return flows.

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

sendMessage MiniApp

Full return flows

web_app button only

MiniApp return flow

web_app_data, etc.

Not supported this phase

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?