The Complete BotFather Guide
BotFather is the official Telegram bot that creates and manages every other Telegram bot. This guide covers every command you will actually use, the exact steps from /newbot to a working token, and what to do when that token leaks.
Quick answer
BotFather is Telegram's own bot for registering and configuring bots, and it is free with no per message fee. To create a bot, open Telegram, search for "@BotFather", send /newbot, give it a display name and a username ending in "bot", and it replies with an API token that looks like 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. BotFather stops there: it registers the bot but gives it no behaviour, so you paste that token into your own hosted code or into a no-code builder like TeleMinute ($3.99 per week, $9.99 per month, or $49.99 one time for lifetime access) and design the replies there.
What is BotFather on Telegram?
BotFather is an official bot operated by Telegram, at the username @BotFather, and it is the only way to register a new bot. You talk to it like any other chat: you send it commands, it asks questions, you answer, and it stores the result.
BotFather is free. Creating bots costs nothing, there is no monthly fee from Telegram, and there is no charge per message sent, which is the main cost difference against the WhatsApp Business API. You can register several bots from one Telegram account.
Before you press Start, check that the account you opened has the blue verified badge and the exact username @BotFather. Fake accounts with lookalike usernames exist, and their only purpose is to collect the tokens people paste into them.
How do you create a bot with BotFather?
You send /newbot, answer two questions, and copy the token. The whole process takes about two minutes and looks like this:
- Open @BotFather. Search for "BotFather" in Telegram, open the verified account, and press Start.
- Send
/newbot. BotFather replies asking for the name of your new bot. - Send the display name. For example "Sunrise Cafe". This is what users see at the top of the chat. Spaces, capitals and emoji are allowed, and you can change it later with
/setname. - Send the username. It must be 5 to 32 characters, use only Latin letters, digits and underscores, and it must end in the word "bot": SunriseCafeBot and sunrise_cafe_bot are both valid, SunriseCafe is not. Usernames are unique across all of Telegram, so if yours is taken BotFather simply asks for another one.
- Copy the token. BotFather congratulates you and prints an API token such as 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Copy it somewhere safe and treat it as a password.
- Open your bot and press Start. Tap the t.me link in BotFather's reply. The bot exists, but it will not answer anything yet. That is expected.
- Paste the token into whatever will run the bot. Your own server code, or a no-code builder where you define the commands and replies. The bot goes live the moment something starts receiving updates for that token.
Choose the username carefully. BotFather has commands for changing a bot's name, picture and description, but none for changing its username, so a rename in practice means creating a new bot and pointing your links at it.
If you want the full beginner path with screenshots of what happens after the token, see how to create a Telegram bot without coding.
What are all the BotFather commands?
These are the commands that matter for building and running a bot. Sending /help to BotFather prints the current list at any time, and /mybots exposes almost all of them as buttons instead.
| Command | What it does | When you need it |
|---|---|---|
/newbot | Registers a new bot: asks for a display name, then a username ending in "bot", then returns the API token. | Once per bot, at the very start. |
/mybots | Opens a menu of every bot you own with buttons for API Token, Edit Bot, Bot Settings and Delete Bot. | The fastest route to everything below, without memorising commands. |
/token | Shows the current API token for a bot you select. It does not change the token. | You lost the token but have no reason to think it leaked. |
/revoke | Invalidates the current token immediately and issues a new one in its place. | The token leaked, was committed to a repo, or a contractor left. |
/setname | Changes the display name at the top of the chat. The username is untouched. | Rebranding, seasonal names, fixing a typo. |
/setdescription | Sets the text shown on the empty chat screen under "What can this bot do?", up to 512 characters. | Telling people what the bot does before they press Start. |
/setabouttext | Sets the short bio on the bot profile and in link previews, up to 120 characters. | A one line pitch that shows when your bot is shared. |
/setuserpic | Uploads the bot profile photo. Send a square image for a clean crop. | Any bot users will see in a list of chats. |
/setcommands | Sets the command list users see in the "/" menu. You send one line per command in the form command - description. | After you have decided which commands your bot answers. |
/setjoingroups | Turns on or off whether people can add your bot to groups. | Turn it off for a strictly one to one support bot. |
/setprivacy | Group privacy mode. Enabled (the default) means the bot only receives commands, replies to its own messages, messages mentioning its username, and service messages. Disabled means it receives every message in the group. | Group bots that must react to plain keywords. Re-add the bot to existing groups for the change to take effect. |
/setinline | Turns on inline mode, so users can type @yourbot followed by a query inside any chat. | Search style bots. Leave it off if you do not support inline queries. |
/deletebot | Permanently deletes a bot after you confirm with the exact sentence BotFather asks for. | Retiring a bot for good. There is no undo. |
BotFather has a few more commands you can safely ignore at the start, including the game commands (/newgame, /mygames, /listgames, /editgame, /deletegame), the inline tuning commands (/setinlinegeo, /setinlinefeedback) and /setdomain, which links a website domain for the Telegram Login Widget.
What is a Telegram bot token and how do you get it again?
The bot token is the single credential that lets software act as your bot, and you can see it again any time with /token or through /mybots then API Token. It looks like this:
110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
The digits before the colon are the bot's numeric user ID, which is public. The string after the colon is the secret. Every Telegram Bot API call is just a request to https://api.telegram.org/bot<token>/methodName, so whoever holds the full string can call any method as your bot.
One token can only be used by one running system at a time. Telegram allows a single webhook URL per bot, and polling for updates while a webhook is set returns a 409 Conflict error. If you move a bot from one platform to another, disconnect the old one instead of running both.
What happens if your bot token leaks, and how do you revoke it?
Treat the token as a password: anyone who has it controls the bot completely, and the fix is /revoke. There is no partial access and no read only mode.
With a stolen token, an attacker can:
- Read every message users send to your bot from that moment on, including anything typed into your forms
- Send, edit and delete messages as your bot to anyone who has already started it
- Point the webhook at their own server, so your traffic silently goes to them instead of to you
- Change the command menu, description and inline behaviour through the Bot API
What they cannot do is also worth knowing. The token gives no access to your personal Telegram account, it cannot delete the bot (that requires your account inside BotFather), it cannot message people who never started your bot, and the Bot API has no method for downloading a list of your users, so your subscriber list is not simply exportable.
To rotate a token:
- Send
/revoketo BotFather - Select the affected bot from the keyboard it shows
- BotFather kills the old token instantly and replies with the new one
- Paste the new token into every place that held the old one, since the bot is offline until you do
Prevention is mostly one habit: never put the token in a public place. Do not commit it to GitHub, do not paste it into a group chat or a support ticket, and crop it out of screenshots. Public repositories are scanned continuously for the digits, colon, letters pattern, and leaked tokens are often abused within minutes. More hygiene rules like this one are collected in our Telegram bot best practices post.
How do you change a bot name, description, about text or picture?
Use /setname, /setdescription, /setabouttext and /setuserpic, or open /mybots, pick the bot and choose Edit Bot to do all four from a menu. Each command asks you which bot to edit first, then asks for the new value.
The two text fields are easy to confuse. The description is up to 512 characters and appears on the empty chat screen, above the Start button, so it is the last thing a user reads before deciding to use your bot. The about text is up to 120 characters and appears on the bot's profile page and in link previews when someone shares it.
Changes take effect immediately, and none of them touch the token or the username. If you have already onboarded users, renaming is safe: their chat keeps working.
How do you set the commands menu users see?
Send /setcommands, choose your bot, then send the whole list in one message with one command per line in the format command - description, without the leading slash. For example:
start - Start the bot and open the main menu
menu - See the current menu and prices
book - Reserve a table
hours - Opening hours and address
help - How to use this botTelegram's rules for that list: command names use lowercase Latin letters, digits and underscores, are 1 to 32 characters long, and each description is 1 to 256 characters. A bot can have up to 100 commands in the menu. Once saved, the list appears when a user types "/" and behind the Menu button next to the message field.
One thing catches almost everyone out: registering a command in BotFather only makes it visible. It does not make it work. If you add /hours to the menu but nothing on the receiving side handles /hours, users tap it and get silence, which looks worse than not listing it at all.
What does BotFather not do?
BotFather registers the bot, sets its profile and hands you a token, and that is the entire job. It gives your bot zero behaviour, which is why a brand new bot never answers anything, no matter how long you wait.
Every message a user sends your bot becomes an update on Telegram's side. Something has to receive those updates, either by webhook or by polling, decide what the reply should be, and call the Bot API to send it. You have two realistic options for that something:
- Write and host it yourself. A Python or Node script, a server or serverless function to run it, an HTTPS endpoint for the webhook, plus monitoring and redeploys forever after.
- Use a no-code builder. You paste the token into the platform, build commands and replies in a visual editor, and it handles receiving updates and sending answers.
TeleMinute is the second kind. You paste the BotFather token into app.teleminute.com and get unlimited Telegram bots, unlimited commands and keyword replies, inline buttons and menus, lead forms with in-app response tracking, push notifications when a new form response arrives, broadcasts to all your bot users with scheduling and segmentation, detailed statistics and delivery reports, and up to 4 images per command. Bots run on Telegram webhooks, so they are online 24/7 with no server to rent or keep awake. There is a free 15 minute trial bot with no card required, and if you want to compare the field first, see our roundup of the best Telegram bot makers.
| What it costs | Price | What is included |
|---|---|---|
| BotFather and the Telegram Bot API | Free | Bot registration, token, profile settings. No per message fee. |
| TeleMinute trial bot | Free, no card | A 15 minute trial bot to test the builder end to end. |
| TeleMinute Premium, weekly | $3.99 per week | Every feature. There are no tiers. |
| TeleMinute Premium, monthly | $9.99 per month | Every feature. Most popular option. |
| TeleMinute Premium, lifetime | $49.99 one time | Every feature, paid once, lifetime access. |
Whichever route you take, two Telegram rules apply to every bot and no platform can lift them. A bot can only message people who started it first, so there is no cold outreach, and bulk sending is rate limited to roughly 30 messages per second, so a broadcast to a large audience is queued and takes time to finish.
How do you delete a Telegram bot?
Send /deletebot to BotFather, pick the bot, and confirm by sending back the exact sentence BotFather shows you (currently "Yes, I am totally sure."). You can do the same from /mybots then Delete Bot.
Deletion is permanent. The token stops working, the bot disappears from your account, and BotFather warns you that it cannot be undone. Do not treat it as a pause button.
If you only want the bot to stop responding for a while, revoke the token with /revoke or disconnect it in whatever platform runs it. Both take seconds and both are reversible.
You have the token. Now give the bot something to say.
Paste your BotFather token into TeleMinute and build commands, keyword replies, inline menus and lead forms visually. Start with a free 15 minute trial bot, no card required.
Connect Your Bot TokenKey takeaways
- BotFather is Telegram's official bot for creating bots, at @BotFather, and it is free with no per message fee.
- Create a bot with
/newbot: a display name, then a username of 5 to 32 characters that must end in "bot", then the token. - The token is a password.
/tokenshows it again,/revokereplaces it instantly if it leaks. - BotFather can change a bot's name, description, about text, picture, command menu and group settings, but not its username.
- BotFather never makes a bot reply. Your own hosted code or a builder like TeleMinute ($3.99 per week, $9.99 per month, or $49.99 one time) does that part.
Conclusion
BotFather is small on purpose. It is a registration desk: it issues an identity and a token, lets you polish the profile, and stays out of the way. Learn the dozen commands above and you will never need to look them up again.
The interesting work starts after the token. Decide what your bot should answer, connect the token to something that can answer it, and test the first five questions your real users will ask. That is the difference between a registered bot and a useful one.