Разработка · 6 мин чтения

BotFather: как создать бота в Telegram и получить токен

Чтобы через BotFather создать бота в Telegram, я обычно трачу 3-5 минут: BotFather - официальный сервис Telegram для регистрации ботов, выдачи токена и настройки команд, без модерации и подтверждения разработчика. В каждом проекте, где нужен телеграм-бот, будь то уведомитель о заявках, бот с базой знаний на Claude или связка с n8n для автоматизации задач, я начинаю именно отсюда. Дальше в статье пошаговая настройка: имя, юзернейм, описание, аватарка, список команд и права в группах, как делаю сам на практике.

Где найти BotFather и как начать регистрацию бота

В поиске Telegram ввожу @BotFather и смотрю на синюю галочку рядом с именем - это признак верифицированного аккаунта Telegram, а не подделки под похожим ником. Копии с похожими юзернеймами встречаются регулярно, поэтому проверяю значок каждый раз перед тем, как отправлять команды.

После запуска диалога отправляю команду /start, бот присылает список доступных команд. Полный список в любой момент вызывается командой /help - туда входят все команды для управления уже созданными ботами: смена имени, описания, аватарки, токена и прав доступа.

Как создать бота через BotFather пошагово

Создание бота в Telegram начинается с команды /newbot. BotFather попросит два значения по очереди.

Первое - отображаемое имя бота (display name). Это то, что видит пользователь в шапке чата, менять можно в любой момент через /setname, ограничений на язык и символы почти нет.

Второе - юзернейм, обязательно заканчивается на “bot” или “Bot”, например kalinkindev_notify_bot. Юзернейм уникален во всей сети Telegram, короткие и понятные варианты почти всегда заняты, поэтому у меня обычно уходит 3-4 попытки на подбор свободного имени. В отличие от отображаемого имени, юзернейм можно поменять позже через /setusername, но лучше сразу продумать нейминг, если бот привязан к домену или бренду компании.

Как только имя принято, BotFather присылает сообщение с токеном и ссылкой на документацию Bot API. На этом создание завершено: бот уже существует и отвечает на /start, хотя пока не умеет ничего, кроме приветствия по умолчанию.

Токен телеграм-бота: где взять и как хранить

Токен выглядит примерно так: 123456789:AAExampleToken1234567890abcdefgh. Первая часть до двоеточия - числовой ID бота, вторая - секретный ключ доступа к Bot API.

Токен равнозначен паролю от бота: с ним можно менять любые настройки через API, отправлять сообщения от имени бота и читать входящие апдейты. Если случайно закоммитил токен в публичный репозиторий на GitHub, первым делом отправляю BotFather команду /revoke - она аннулирует старый токен и выдаёт новый, старый после этого не работает нигде, в том числе на сервере, где уже был задеплоен бот.

Если токен потерялся, а бот уже создан, доступ восстанавливаю командой /mybots: выбираю нужного бота из списка, затем пункт API Token. Там же, в меню /mybots, лежат остальные настройки готового бота - Edit Bot для смены имени и описания, Bot Settings для приватности и групп, Transfer Ownership для передачи бота другому аккаунту и Delete Bot, если проект закрыт и бот больше не нужен.

На практике токен никогда не храню в коде. В aiogram-ботах, которые я собираю, значение лежит в переменной окружения через .env и python-dotenv, а на сервере пробрасывается через env_file в docker-compose или секреты CI/CD. Для n8n токен добавляется в Credentials самого узла Telegram и не попадает в экспортируемый JSON воркфлоу в открытом виде.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Настройка профиля и команд бота

Имя, описание и аватарка

Профиль бота работает как посадочная страница: пользователь видит его до того, как нажмёт Start.

Команда /setdescription задаёт текст, который показывается в пустом чате до первого сообщения - это до 512 символов, и я использую их как короткий питч: что умеет бот и зачем его открывать.

Команда /setabouttext заполняет строку “О себе” в карточке профиля, до 120 символов - более короткое и техническое описание, которое видно уже после начала диалога.

Аватарку загружаю командой /setuserpic. Лучше всего смотрится квадратный PNG или JPG без мелких деталей: в интерфейсе Telegram превью обрезается в круг, и сложные логотипы на маленьком аватаре превращаются в кашу из пикселей.

Список команд для меню

Список команд задаётся через /setcommands. BotFather ждёт список строк вида “команда - описание”, каждая пара на отдельной строке, без слэша перед именем команды:

start - Начать работу с ботом
help - Список команд и помощь
price - Узнать стоимость услуги
order - Оформить заявку

После сохранения список появляется в интерфейсе Telegram по нажатию на иконку меню слева от поля ввода, пользователь видит подсказки, не вспоминая команды наизусть.

Тот же список задаётся и программно, без похода в BotFather: в aiogram это вызов Bot.set_my_commands() при старте приложения. Такой способ удобен, если у бота несколько языков интерфейса - под каждый язык передаётся свой набор команд, и BotFather тут вообще не нужен, всё меняется кодом при деплое.

Приватность, группы и инлайн-режим бота

Отдельная группа настроек BotFather касается поведения бота вне личных сообщений.

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

/setprivacy управляет тем, какие сообщения бот видит в группах. Пока режим включён (по умолчанию), бот получает только команды, явные упоминания через @ и ответы на свои сообщения. Если приватность выключить, бот видит вообще все сообщения в группе - это нужно ботам-модераторам и логерам, но требует аккуратной работы с текстом, который бот не должен читать без необходимости.

/setinline включает инлайн-режим: пользователь набирает @имя_бота прямо в любом чате, а бот подсказывает варианты ответа без перехода в диалог с самим ботом. Команда просит задать текст-плейсхолдер, который видит пользователь до ввода запроса.

Что дальше: подключаем токен к коду

Дальше токен передаётся в код или no-code инструмент - сам BotFather логику бота не пишет, он только выдаёт доступ и хранит метаданные профиля.

Способ запуска Когда использую Что нужно на стороне сервера
Long polling Разработка, тестирование, боты с невысокой нагрузкой Постоянно запущенный процесс, HTTPS не обязателен
Webhook Продакшен, боты с частыми апдейтами и несколькими инстансами Домен с HTTPS-сертификатом и обработчик входящих запросов на сервере

Для полноценных ботов на Python использую aiogram - на нём я собирал и уведомителей о заявках, и ботов с оплатой, и связку с базой знаний через Claude API. Для более простых сценариев без написания кода - приём заявки из формы на Tilda и пересылка её в Telegram, ежедневный дайджест или уведомление о новом заказе - чаще беру n8n: узел Telegram Trigger принимает токен напрямую в настройках credentials и разворачивает сценарий за один вечер.

Если задача выходит за рамки простого уведомителя и нужна интеграция с CRM, оплатой или базой знаний, такие проекты собираю под ключ, подробнее в разделе услуг по разработке ботов и автоматизации.

Частые вопросы

Можно ли поменять юзернейм бота после создания?

Да, командой /setusername в BotFather. Единственное ограничение - новое имя должно быть свободно и заканчиваться на “bot” или “Bot”, как и при первом создании.

Что делать, если токен бота попал в открытый доступ?

Сразу отправить BotFather команду /revoke для этого бота - старый токен аннулируется, выдаётся новый. После этого нужно обновить значение в переменных окружения на сервере и передеплоить бота, иначе он перестанет отвечать на сообщения.

Сколько ботов можно создать через BotFather?

Ограничение на одного разработчика - 20 ботов на аккаунт. Для большинства проектов этого достаточно с запасом, а если лимит исчерпан, часть неиспользуемых ботов можно удалить командой /deletebot.

Нужен ли сервер для работы бота или хватит компьютера?

Пока код бота запущен на компьютере через long polling, он отвечает, но при закрытии терминала или перезагрузке бот замолкает. Для боевого режима нужен сервер или облачный хостинг с постоянным аптаймом, особенно если бот работает на вебхуке.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно