
Как подключить GigaChat к Telegram-боту и не раскрыть токены доступа

Чтобы Telegram-бот отвечал через GigaChat, создайте его у BotFather, получите ключ GigaChat API и запустите обработчик, который передаёт вопрос модели и возвращает ответ в чат. Руководство Telegram для разработчиков предупреждает: человек, получивший токен бота, получает полный контроль над ним. Поэтому оба секрета нужны вашему обработчику, а не пользователю бота.
Для настройки вы получаете два разных значения: токен Telegram-бота для отправки и получения сообщений и ключ авторизации GigaChat для обращения к модели. Документация библиотеки GigaChat описывает ещё и временный токен доступа: библиотека получает и обновляет его по ключу авторизации. При таком способе подключения вручную сохранять временный токен не требуется.
Получите токен бота и ключ GigaChat

- Откройте BotFather в Telegram, отправьте команду /newbot и следуйте подсказкам для выбора имени и адреса бота. Скопируйте выданный токен в защищённое место. Он относится к созданному боту и позволяет приложению обращаться к Telegram Bot API от его имени.
- Создайте проект GigaChat API в кабинете разработчика и возьмите ключ авторизации из настроек проекта. Уточните, для какого типа доступа выпущен ключ: библиотека должна обращаться к соответствующей версии API. Ключ GigaChat не заменяет токен бота, а токен бота не открывает доступ к модели.
- Подготовьте среду Python и установите пакет gigachat. Для запросов к Telegram понадобится клиент, способный отправлять защищённые сетевые запросы. Для первого запуска достаточно обработки обычного текста; вложения можно оставить без ответа.
Ключ авторизации GigaChat и временный токен доступа решают разные задачи. Первый вы получаете в проекте и храните как секрет приложения. Второй библиотека использует во время работы; если вы не управляете авторизацией самостоятельно, выдавать его пользователю или добавлять в настройки бота не нужно.
Храните секреты отдельно от кода

Передайте токен Telegram через переменную окружения TELEGRAM_BOT_TOKEN, а ключ модели — через GIGACHAT_CREDENTIALS. Первое имя задаёте вы: обработчик должен прочитать эту переменную перед вызовом Telegram. Второе имя предусмотрено библиотекой GigaChat. Если ваш ключ требует явного указания типа доступа, задайте его в настройке библиотеки согласно параметрам проекта.
При размещении бота используйте хранилище секретов платформы или закрытые настройки, доступные только процессу приложения. Локальный файл с переменными исключите из системы контроля версий до публикации кода. Не помещайте значения в сообщения об ошибках, переписку и журналы: токен Telegram входит в адрес запросов к API, поэтому запись полного адреса тоже может раскрыть его.
Для подключения к GigaChat установите корневой сертификат НУЦ Минцифры и при необходимости укажите библиотеке путь к нему. Если соединение не устанавливается, проверьте сертификат и его расположение. Отключение проверки подлинности сервера снижает защиту ключа и передаваемых сообщений.
Настройте путь сообщения до модели и обратно
Для первого запуска удобен опрос сервера Telegram. Описание Telegram Bot API задаёт метод getUpdates для получения событий и sendMessage для отправки текста в указанный чат. Если для бота уже настроена доставка событий на ваш адрес, опрос не будет работать: перед переходом на него удалите прежнюю настройку доставки.
- Получайте события с ожиданием новых сообщений. Из каждого события выбирайте обычное текстовое сообщение и сохраняйте его текст, идентификатор чата и идентификатор самого события. Команды, изображения и другие вложения обрабатывайте отдельной веткой либо пропускайте, чтобы не отправить модели пустой запрос.
- Создайте клиент GigaChat с настройками из окружения и передайте ему текст сообщения через метод chat.create. Перед отправкой ответа проверьте, что модель вернула текст: при ошибке авторизации или соединения обработчик не должен пытаться отправить отсутствующий результат.
- Передайте полученный текст в sendMessage вместе с идентификатором исходного чата. После успешной обработки отметьте событие обработанным и продолжите опрос со следующего идентификатора. Если запрос к модели сорвался, решите, нужно ли повторить событие или сообщить пользователю о временной ошибке.
Таким образом, Telegram передаёт входящее сообщение вашему приложению, приложение обращается к GigaChat, а затем отправляет ответ через Telegram Bot API. Владелец чата видит вопрос и ответ. Ключ модели остаётся в окружении обработчика и не должен попадать ни в запрос пользователя, ни в текст ответа.
Проверьте первый ответ и учтите ограничения бота
Напишите боту короткий вопрос в личном чате. Если ответа нет, проверьте цепочку по порядку: получено ли входящее событие, вернула ли модель текст и завершилась ли отправка сообщения. Такой разбор помогает отличить ошибку токена Telegram или доставки событий от проблемы с ключом GigaChat, типом доступа либо сертификатом.
Бот не начинает личный разговор первым, поэтому для проверки пользователь должен написать ему сам. В группе бот по умолчанию получает только относящиеся к нему сообщения. Успешный ответ в личном чате ещё не означает, что бот будет реагировать на каждую реплику группы; менять настройки групповой приватности стоит под конкретный сценарий.
Замените секрет, если он раскрылся
Если токен Telegram оказался в открытом репозитории, переписке или журнале, перевыпустите его через BotFather, обновите переменную окружения и перезапустите обработчик. Удаление строки из опубликованного файла не делает старое значение секретным: его могли сохранить до удаления. После замены отправьте боту сообщение и проверьте, что он работает с новым токеном.
При раскрытии ключа GigaChat прекратите его использование, запросите отзыв через доступные средства кабинета проекта или поддержку и настройте новый ключ в окружении приложения. Затем проверьте историю публикаций и журналы на другие копии. Меняйте данные той платформы, чей секрет раскрыт: токен бота и ключ модели дают доступ к разным сервисам.
Читайте также:
Похожие статьи


Что выгоднее автору для подписок, Tribute или Boosty?

Встроенная реклама не платит: как монетизировать канал MAX

Kandinsky или Шедеврум лучше для обложек и товарных фото?

Rutube готовит поиск видео через персональных ИИ-агентов

«Боцман» подключил ИИ к кластерам с подтверждением опасных действий
Подпишитесь на рассылку
Получайте свежие новости Web3, AI и криптовалют прямо на вашу почту.