Что такое бот и что нужно

Бот в Telegram — это специальный аккаунт, за которым стоит программа, а не человек. Зарегистрировать его можно за пару минут прямо в Telegram, бесплатно: платформа ботов бесплатна и для пользователей, и для разработчиков (core.telegram.org/bots).

Важно понимать с самого начала: создание в @BotFather — это только «оболочка» — имя, адрес и ключ доступа. Отвечать бот начнёт, когда к нему подключат программу, которая где-то работает. Telegram об этом пишет прямо: чтобы бот заработал, его заводят в @BotFather, а потом подключают к своему серверу через API (Bots FAQ). Ниже — обе части: регистрация и варианты, чем бота «оживить».

Регистрация в @BotFather

1
Откройте @BotFather
Это официальный бот Telegram для создания и настройки ботов. Найдите в поиске именно @BotFather (ссылка t.me/botfather есть в документации Telegram) — у подделок похожие имена. Нажмите «Начать» / Start.
2
Отправьте команду /newbot
Напишите в чат с BotFather /newbot. Он по очереди спросит два значения — имя и username.
3
Придумайте имя
Имя (name) — то, что видно в списке чатов и в профиле бота. Можно по-русски, с пробелами; поменять его можно в любой момент.
4
Придумайте username — он должен оканчиваться на «bot»
Username — адрес бота для поиска и ссылок t.me/…. Правила: 5–32 символа, только латиница, цифры и подчёркивание, в конце обязательно bot — например weather_msk_bot или WeatherMskBot. Username нельзя сменить после создания, так что выбирайте внимательно. Если имя занято, BotFather попросит другое.
5
Сохраните токен
В ответ придёт сообщение с токеном — строкой вида 123456789:AA…. Это ключ, которым программа управляет ботом. Скопируйте его в надёжное место (менеджер паролей, переменная окружения на сервере).

Как хранить токен

Токен — это одновременно логин и пароль бота. Telegram предупреждает: им может воспользоваться кто угодно, у кого он окажется, — читать сообщения, которые пишут боту, и отвечать от его имени. Поэтому:

  • не публикуйте токен в чатах, на скриншотах и в открытых репозиториях — держите его в переменной окружения или файле, который не попадает в git;
  • не отправляйте токен «помощникам» и сервисам, которым не доверяете;
  • если токен утёк или потерян — сгенерируйте новый командой /token в чате с BotFather (для нужного бота); после этого старый токен уже не подойдёт — не забудьте заменить его в программе.

Описание, аватарка и команды

Всё оформление делается командами в чате с @BotFather — отправьте команду и выберите бота. То же самое доступно кнопками через /mybots и в мини-приложении BotFather.

КомандаЧто делает
/setnameСменить имя бота
/setdescriptionОписание до 512 символов — его видят в начале чата с ботом, ещё до первого сообщения (блок «What can this bot do?»)
/setabouttextКороткий текст «о боте» до 120 символов — в профиле и при пересылке ссылки на бота
/setuserpicАватарка бота
/setcommandsСписок команд — появляется подсказкой, когда пользователь набирает /
/setjoingroupsРазрешить или запретить добавлять бота в группы
/mybotsМеню со всеми вашими ботами: настройки, токен, передача другому владельцу
/deletebotУдалить бота и освободить username — отменить нельзя

Проверка: работает ли токен

1
Отправьте запрос getMe
Bot API — это обычные HTTPS-запросы на адрес https://api.telegram.org/bot<токен>/метод, так что никакой программы для проверки не нужно. Подставьте свой токен вместо <TOKEN> (слово bot перед ним остаётся) и выполните команду в терминале — или просто откройте этот адрес в браузере.
$ curl https://api.telegram.org/bot<TOKEN>/getMe
2
Посмотрите на ответ
Если всё правильно, придёт JSON с "ok":true и данными бота — примерно так: {"ok":true,"result":{"id":123456789,"is_bot":true,"first_name":"Погода Москва","username":"weather_msk_bot", …}}.

Что означают ошибки (мы проверили на заведомо неверных данных):

  • {"ok":false,"error_code":401,"description":"Unauthorized"} — токен неверный или уже заменён через /token;
  • {"ok":false,"error_code":404,"description":"Not Found"} — ошибка в адресе: чаще всего забыли слово bot перед токеном или скопировали токен не целиком;
  • запрос долго висит и обрывается по тайм-ауту — из вашей сети или с сервера не открывается api.telegram.org. Это вопрос сети, а не бота: варианты решения — в статье прокси для Telegram-бота.

Никогда не вставляйте настоящий токен в онлайн-сервисы «проверки ботов» — достаточно своего браузера или curl.

Как «оживить» бота: код или конструктор

Вариант 1 — написать код. Официальный пошаговый туториал Telegram (From BotFather to «Hello World») ведёт от получения токена до работающего бота; основной язык там Java, есть примеры на C#, Python, Go и TypeScript. Обычно берут готовую библиотеку, которая скрывает HTTP-запросы: на Python популярны python-telegram-bot, aiogram и pyTelegramBotAPI, на JavaScript — grammY и Telegraf. Все они есть в официальном списке библиотек. Программе нужно где-то работать постоянно — на вашем компьютере для проверки, а для «боевого» бота — на сервере или хостинге; это единственное, за что, возможно, придётся платить.

Вариант 2 — конструктор без кода. Есть сторонние сервисы, где бота собирают из блоков: вы вставляете токен из BotFather, а сервис сам принимает и отправляет сообщения. Это быстро для простых сценариев — меню, ответы на частые вопросы, приём заявок. Минусы: у многих платные тарифы и ограничения бесплатных, бот зависит от сервиса, а сервис с вашим токеном получает полный доступ к боту и к сообщениям пользователей. Выбирая конструктор, читайте его условия и политику обработки данных; если перестали им пользоваться — выпустите новый токен командой /token.

Сам Telegram официальных конструкторов не предлагает и честно пишет, что готового способа сделать работающего бота без программирования нет.

Как добавить бота в канал

Частый сценарий — бот, который публикует посты в ваш канал (например, по расписанию). Для этого бота делают администратором канала:

  1. откройте настройки канала → «Администраторы» → «Добавить администратора»;
  2. найдите бота по username и выберите его;
  3. оставьте право публиковать сообщения — именно оно нужно, чтобы бот мог писать в канал; остальные права давайте только по необходимости.

После этого программа бота может отправлять сообщения методом sendMessage, указав в chat_id адрес канала в формате @имя_канала (для публичного канала). Бот, состоящий в канале, получает все его посты — на этом строятся боты для статистики и автопостинга.

Бот не подключается к api.telegram.org?
Если запросы к Bot API не проходят из вашей сети, обычные MTProto-прокси из каталога боту не помогут — ему нужен HTTP- или SOCKS5-прокси либо сервер, откуда api.telegram.org доступен. Подробно — прокси для Telegram-бота.

FAQ

Создать бота в Telegram — бесплатно?
Да. Регистрация в @BotFather и Bot API бесплатны — Telegram пишет, что платформа ботов бесплатна для пользователей и разработчиков. Платить можно только за сервер, где работает программа бота, или за тариф конструктора, если вы им пользуетесь.
Почему username бота должен заканчиваться на «bot»?
Это правило Telegram: 5–32 символа, латиница, цифры и подчёркивание, в конце — bot (например tetris_bot или TetrisBot). Сменить username потом нельзя, имя — можно.
Что делать, если токен бота украли или он попал в интернет?
Сгенерируйте новый токен командой /token в чате с @BotFather — старый после этого не подойдёт. Не забудьте заменить токен в своей программе.
Бот создан, но ничего не отвечает. Почему?
Потому что BotFather только регистрирует бота. Отвечать он начнёт, когда вы запустите программу с этим токеном — свою или через конструктор. Проверьте токен запросом getMe.
Можно ли создать бота с телефона?
Зарегистрировать — да: @BotFather работает в любом приложении Telegram. А вот программу бота нужно запускать на компьютере или сервере (или использовать конструктор).
Как удалить бота?
Команда /deletebot в @BotFather. Бот удалится, а его username освободится; отменить это нельзя.