Токен Telegram-бота: получение и безопасность
Как получить токен у BotFather, где его хранить, что делать при утечке и какие настройки бота стоит задать сразу после создания.
Все статьи гида Telegram-боты · 13
Токен - это ключ от бота. Кто им владеет, тот и есть бот: может читать входящие сообщения, писать от его имени и менять настройки. Отсюда отношение к хранению.
BotFather по шагам
- Создать бота командой создания в диалоге с BotFather.
- Задать отображаемое имя. Его видят пользователи, его можно менять потом.
- Задать адрес. Уникален, заканчивается на
bot, изменить нельзя. Выбирайте осознанно: занятый адрес освободить нельзя, а неудачный останется навсегда. - Получить токен. Приходит сообщением в чат.
Сразу после создания стоит задать ещё несколько вещей, о которых потом забывают:
- Описание и текст приветствия. Пользователь видит их до первого сообщения, и пустое описание выглядит как заброшенный бот.
- Список команд. Он появляется в меню и заметно снижает число вопросов.
- Режим приватности в группах. По умолчанию бот в группе видит не все сообщения, а только адресованные ему. Если бот должен читать всё, режим надо выключить осознанно; если не должен - оставить включённым.
- Аватар. Мелочь, влияющая на доверие.
Где хранить токен
Правильно: переменная окружения на сервере. Код читает её при запуске.
Тоже приемлемо: файл с настройками вне репозитория, с ограниченными правами доступа.
Неправильно:
- В коде. Даже во временном виде: временное живёт дольше всего.
- В репозитории, даже приватном. Приватный репозиторий может стать публичным, а участники меняются.
- В сообщениях и задачах. Переписка живёт долго и доступна многим.
- В аргументах команды запуска: попадёт в историю оболочки и в список процессов.
В репозитории должен лежать пример файла настроек с именами переменных и без значений. Это одновременно документация и защита.
Что делать при утечке
Одно действие: перевыпустить токен у BotFather. Старый перестаёт работать немедленно.
Чего делать не нужно, потому что это ничего не даёт:
- Удалять сообщение с токеном - его могли скопировать.
- Удалять коммит с токеном - он остаётся в истории и в клонах.
- Надеяться, что никто не заметил. Публичные репозитории сканируются автоматически, и найденные токены используются в течение минут.
После перевыпуска обновите значение везде, где оно используется: сервер, окружение разработки, CI. Это тот случай, когда список мест лучше знать заранее.
Права бота
Токен даёт полный доступ, поэтому ограничения выстраиваются вокруг него, а не внутри.
Отдельный бот для тестов. Разработка и продакшен не должны делить один токен: иначе тестовое сообщение уйдёт реальным пользователям.
Права в группе - минимальные. Если боту нужно только отправлять сообщения, права администратора ему не нужны. Права на удаление и блокировку выдаются, только когда без них нельзя.
Проверка администраторов на своей стороне. Список тех, кому можно управлять ботом, живёт в вашей конфигурации, а не в предположении, что кнопка админского меню видна не всем - см. кнопки.
Вебхук только по HTTPS и с секретом в адресе или заголовке - см. деплой.
Как узнать идентификатор чата и чем он отличается от идентификатора пользователя - chat id. Обзор - гид по Telegram-ботам.
Вопросы и ответы
Где взять токен для Telegram-бота?
У BotFather: создаёте бота командой создания, задаёте имя и адрес, в ответ приходит токен. Он показывается в переписке, поэтому её лучше не пересылать и не показывать на демонстрации экрана. При необходимости токен можно перевыпустить, старый сразу перестанет работать.
Что делать, если токен бота утёк?
Немедленно перевыпустить его у BotFather. Старый перестаёт работать сразу, и это единственная действенная мера. Удаление сообщения с токеном из чата или коммита из ветки ничего не даёт: он уже мог быть скопирован.
Можно ли хранить токен в коде?
Нет. Токен даёт полный контроль над ботом: читать сообщения, писать от его имени, менять настройки. Место токена - переменная окружения на сервере, а в репозитории должен лежать только пример файла настроек без значений.
Ещё по теме
- Telegram-боты на Python: полный практический гидГид
- Кнопки в Telegram-боте: обычные и инлайнЧем обычная клавиатура отличается от инлайн-кнопок, когда какая нужна, как обрабатывать нажатия и почему обязательно подтверждать callback.
- Конструкторы Telegram-ботов против кода: что выбратьКакие задачи закрывают конструкторы ботов, где они упираются в потолок, из чего складывается стоимость владения и как выбрать между конструктором и кодом.
- Оплата в Telegram-боте: приём платежей по шагамКакие есть способы принимать оплату в боте, чем они отличаются, как обрабатывать подтверждение платежа и почему идемпотентность здесь обязательна.
Сделаю под ключ
Сделаю Telegram-бота под ваш процесс
Заявки, оплата, выдача доступа, рассылки и воронка в одном боте, с админкой для вас.
от 300 $ · 3-7 дней
«Действительно гуру своего дела. Узнал массу новой и полезной информации по телеграм рассылкам. До этого сжег очень много денег на оплате услуг посредников, но после общения с исполнителем буду делать все сам)»