First, get the token
For your first Bot, follow /start → /newbot → display name → username → token. Then verify it with getMe. Profile and welcome-message settings can wait until the token works.
Overview
BotFather is the operator console for bots. API description methods mirror the default (non-localized) profile — see core.mp.net/bots.
Where to open BotFather
Contacts → under Saved groups / the Robots entry, or
Search for BotFather in MPChat and open the chat.
Create a Bot and get its token on your phone
The shortest path
Send /start → send /newbot → enter the Bot's display name → enter a unique username → copy the token.
Complete the following steps in the BotFather chat on the MPChat mobile app. Commands begin with the English slash /; send each command as its own message.
Open BotFather. In MPChat on your phone, go to Contacts → Bots below Saved Groups, or search for BotFather in MPChat. Make sure the chat title is BotFather before continuing.
Start BotFather. You send: tap Start, or send
/start. Expected result: BotFather replies with its command menu. If nothing happens, make sure you used the English slash and sent the command to BotFather rather than to your own Bot.Create a Bot. You send:
/newbotas a separate message. Expected result: BotFather asks what to call the Bot. Enter the display name users will see, for exampleMy Shop Assistant. This is not the username. If the flow stops, return to BotFather and send/newbotagain; do not send the display name and username in one message.Set the username. Expected result: BotFather asks for a username. Enter a unique name using English letters, digits, or underscores, without the leading
@, for examplemy_shop_helper_bot. Follow the prompt if it requires the username to end inbot.invalidmeans the format is not accepted; change the characters or suffix.already takenmeans someone already uses it; add a brand abbreviation or digits and try again.Copy the token immediately. After the username is accepted, BotFather sends a success message and a line containing the Bot token. Copy that complete line; do not copy the username, the
t.me/...Bot link, or surrounding punctuation. A token is a long credential, commonly shaped like123456789:AA.... Seeing the token means the Bot was created successfully.Verify before developing. If you only needed the token, you may stop here after storing it safely. To test it, continue with First Bot test: mobile + Windows/macOS for guided Windows/macOS steps, or use the Developer quickstart if you are comfortable with a terminal. Call
getMeand confirm thatokistrueandresult.usernameis the username you just created. A401 Unauthorizedresponse usually means the token is incomplete, invalid, or revoked. See token safety and rotation for secure storage and what to do if it leaks.
Protect the token
The token controls the Bot. Do not post it in chats, screenshots, source code, issue trackers, or public logs. If it is exposed, revoke or rotate it in BotFather before using the Bot again.
The required part is complete
The remaining profile, description, and welcome-image settings are optional. You can skip them the first time and return after the token passes getMe.
about vs description (semantics)
Field | Meaning |
| Bot blurb shown in profile-style surfaces (API: short description, ≤120). |
| Welcome text: centered at the top of the chat and on the Start screen (API description, ≤512 including line breaks). |
Set description (BotFather + API)
BotFather chat: follow the Description prompts for the selected bot.
API:
setMyDescriptionwithdescription(omit/empty clears). Read back withgetMyDescription.Short blurb:
setMyShortDescription/getMyShortDescription(short_description≤120).Localized
language_codeprofiles are not supported; non-empty language codes return400.Plain text, URLs, and emoji are fine. If unset, both UI surfaces stay empty.
BotFather may reject over-length input with:
Sorry the description you provided is invalid. A description may not exceed 512 characters (line breaks included).
curl --silent --show-error -X POST "https://call.mp.net/bot/setMyDescription" \
-H "Authorization: Bearer ${MPCHAT_BOT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"description":"A helpful MPChat bot."}'
Description Picture (BotFather)
Shown under the description. States: has a description GIF / has a description photo / no description picture.
Use Edit Description Picture to upload or change media;
/emptyclears it in the BotFather flow.Success toast example:
Success! Description media updated. You will be able to see the changes within a few minutes.Photo: 640×360. GIF: 320×180 / 640×360 / 960×540. Wrong size is rejected with BotFather error text.
When present, picture and welcome text share one bubble (image above text); long text can scroll.
Username rules
Invalid names surface as
Bot_Username_Invalid/Sorry, this username is invalid.(keep separate from other policy errors).After a bot is deleted, its username stays locked for 30 days before release.
Reserved /start
/start is a platform-reserved command. It highlights even if you never list it in setMyCommands.
