Токен бота Telegram: где взять, как проверить и защитить
Где взять API-токен бота Telegram в @BotFather, как он выглядит, как проверить его методом getMe, что делать, если токен потерян или утёк, и как хранить его в секрете.
Токен бота Telegram — это ключ, по которому программа управляет ботом через Bot API. Его выдаёт официальный бот @BotFather сразу после команды /newbot. Токен выглядит как число и длинная строка символов через двоеточие, например 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 (это пример из документации, он не настоящий). Любой, у кого есть токен, может управлять ботом, поэтому Telegram советует хранить его в безопасном месте и сообщать только тем, кому нужен прямой доступ.
Где взять токен бота
- Откройте @BotFather и отправьте
/newbot. - Задайте имя бота и юзернейм, который заканчивается на
bot. - BotFather пришлёт токен. Полностью процесс описан в статье как создать бота в ТГ.
Потеряли токен существующего бота? Telegram указывает для этого команду /token: она нужна, когда токен утерян или скомпрометирован, и выдаёт новый.
Не путайте токен с ключами api_id и api_hash. Токен нужен боту, а api_id и api_hash — программам, которые входят в Telegram как обычный пользователь: как их получить.
Как токен используется в запросах
Токен входит в адрес каждого запроса к Bot API: https://api.telegram.org/bot<токен>/МЕТОД. Например, адрес https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe вызывает метод getMe. Библиотеки для ботов подставляют токен сами, достаточно один раз передать его при создании бота. Поскольку токен лежит в адресе, он может попасть в журналы HTTP-клиентов и прокси: не публикуйте такие журналы.
Как проверить токен методом getMe
getMe — простой метод для проверки токена. Он не требует параметров и возвращает данные самого бота:
curl "https://api.telegram.org/bot<ТОКЕН>/getMe"
Если токен верный, придёт JSON с "ok": true. В result будут id бота, is_bot, first_name и username, а также поля can_join_groups, can_read_all_group_messages и supports_inline_queries: они возвращаются только этим методом. Если токен неверный или заменён, ok будет false, а в ответе появятся error_code (обычно 401) и description.
Частая причина ошибки — опечатка: лишний пробел или перенос строки при копировании либо пропущенный символ. Скопируйте токен заново из чата с BotFather.
Что делать, если токен утёк
Токен утёк, если он попал в публичный репозиторий, скриншот, чужую переписку или журнал, который видят посторонние. Действуйте сразу:
- Откройте чат с @BotFather и отправьте
/token. В документации Telegram эта команда названа для случая, когда токен скомпрометирован. Выберите бота, и BotFather выдаст новый токен. В справочниках по BotFather встречается и команда/revoke, которая тоже выдаёт новый токен. Считайте, что прежним токеном пользоваться больше нельзя. - Подставьте новый токен везде, где бот его использует: в настройках сервера, переменных окружения, программе. Перезапустите бота.
- Проверьте новый токен методом
getMe. - Проверьте webhook. Тот, у кого был токен, мог вызвать
setWebhookсо своим адресом и получать сообщения вашего бота. ВызовитеgetWebhookInfo: в полеurlдолжен быть ваш адрес. Если там чужой, задайте свой черезsetWebhookили уберите webhook методомdeleteWebhook— подробнее в статье getUpdates и webhook. - Если токен попал в Git, удаления файла мало: он остаётся в истории репозитория. Спасает только новый токен.
Как хранить токен в секрете
- Не вписывайте токен в исходный код и не отправляйте его в репозиторий, даже закрытый.
- Храните его в переменной окружения или в файле настроек, который не попадает в Git (его имя добавляют в
.gitignore). - Не вставляйте токен в код, который работает у пользователя: в страницу сайта, мобильное приложение или Mini App. Запросы к Bot API делайте с вашего сервера.
- Не показывайте токен на скриншотах и в логах, не отправляйте его в чатах, в том числе в чатах поддержки.
Если бот вам не нужен, его можно удалить командой /deletebot в BotFather. Подробнее о настройках бота — в статье как создать бота в ТГ.
Что дальше
С токеном можно отправить первое сообщение — sendMessage через curl — и настроить приём сообщений: getUpdates и webhook. Нужен API, чтобы покупать звёзды или Premium для своих пользователей из программы? Смотрите документацию API бота Shiba Bank.
Частые вопросы
Как получить API-токен Telegram для бота?
Напишите @BotFather команду /newbot: после имени и юзернейма он пришлёт токен. Для уже созданного бота команда /token выдаёт новый.
Что такое токен бота Telegram?
Это ключ, который подтверждает запросы к Bot API: по нему Telegram понимает, от имени какого бота пришёл запрос. Токен входит в адрес https://api.telegram.org/bot<токен>/МЕТОД.
Как проверить токен бота?
Вызовите метод getMe: curl "https://api.telegram.org/bot<ТОКЕН>/getMe". При верном токене в ответе будет "ok": true и данные бота.
Что делать, если токен бота утёк?
Получите новый токен у BotFather командой /token, подставьте его везде, где бот им пользуется, и проверьте через getWebhookInfo, что webhook указывает на ваш адрес.
Чем токен отличается от api_id и api_hash?
Токен принадлежит боту. Ключи api_id и api_hash нужны программам, которые входят в Telegram как пользователь, и получают их на другом сервисе: как получить.
Можно ли хранить токен в коде?
Нет: код легко попадает в репозиторий и чужие руки. Держите токен в переменной окружения или в файле вне репозитория.


