Перейти к содержимому
PD
Telegram-боты

Как узнать chat id в Telegram-боте

Что такое chat id, чем он отличается от идентификатора пользователя, как его получить для личного чата, группы и канала, и почему у супергрупп он выглядит иначе.

Все статьи гида Telegram-боты · 13

Идентификатор чата нужен всегда, когда бот пишет первым: уведомления, рассылки, отправка в канал. Разберём, что это и как его получить.

Что такое chat id

Это числовой идентификатор диалога, в который бот отправляет сообщение. Не имя, не адрес, не ссылка - именно число.

Виды и как они выглядят:

  • Личный чат. Положительное число, совпадает с идентификатором пользователя.
  • Обычная группа. Отрицательное число.
  • Супергруппа и канал. Отрицательное число с длинным префиксом. Выглядит непривычно, но это нормальный формат.

Практическая деталь: у публичного канала вместо числа можно использовать его адрес вида @channel. Для приватного - только число.

Как получить

Способ, который работает всегда:

  1. Начните диалог с ботом или добавьте его в нужный чат.
  2. Отправьте туда любое сообщение. Для канала - опубликуйте пост, а бот должен быть администратором.
  3. Посмотрите обновления бота - идентификатор чата придёт вместе с сообщением.

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

Сторонние боты-помощники, показывающие идентификатор, существуют, и для разового получения ими пользуются. Помните, что вы пересылаете сообщение чужому боту: для рабочих чатов это стоит учитывать.

Отличие от user id

В личной переписке они совпадают - и именно поэтому путаница обнаруживается только в группе.

Идентификатор пользователя принадлежит человеку и постоянен. По нему вы узнаёте, кто нажал кнопку, кто отправил сообщение, чьи это заказы.

Идентификатор чата принадлежит диалогу. По нему вы отправляете сообщение.

В группе один чат и много пользователей. Типовая ошибка: ответить пользователю по идентификатору чата - и личный ответ уходит в группу, где его видят все.

Правило: проверяйте права по идентификатору пользователя, отправляйте по идентификатору чата.

Группы и каналы

Бот в группе видит не все сообщения. По умолчанию включён режим приватности: он получает только адресованные ему сообщения и команды. Если бот должен читать всё, режим выключается у BotFather осознанно - см. токен и настройки.

В канал бот пишет только как администратор. Без прав администратора отправка не пройдёт.

Идентификатор группы меняется при переходе в супергруппу. Это самая коварная ловушка: бот годами писал в группу, группа выросла и стала супергруппой, идентификатор изменился, отправка перестала работать. Если бот внезапно перестал писать в чат - проверьте это первым делом.

Практические выводы

  • Сохраняйте идентификатор при первом контакте в базу. Собирать его потом руками - лишняя работа.
  • Не храните идентификаторы в коде. Они меняются, и правка кода ради этого - плохая схема.
  • Обрабатывайте ошибку отправки. Пользователь мог заблокировать бота, бота могли удалить из группы. Необработанная ошибка в рассылке останавливает всю рассылку.
  • Проверяйте права по пользователю, а не по факту, что сообщение пришло из нужного чата.

Обзор - гид по Telegram-ботам.

Вопросы и ответы

Как узнать chat id группы или канала?

Добавьте бота в группу или канал, отправьте туда любое сообщение и посмотрите обновления бота: в них придёт идентификатор чата. У супергрупп и каналов он отрицательный и начинается с длинного префикса - это нормально, так и должно быть.

Чем chat id отличается от user id?

В личной переписке они совпадают: чат с человеком и есть человек. В группе они разные: идентификатор чата принадлежит группе, а идентификатор пользователя - конкретному участнику. Путаница между ними - причина ошибок вида «сообщение ушло не туда».

Может ли chat id измениться?

Идентификатор пользователя постоянен. Идентификатор группы меняется при преобразовании обычной группы в супергруппу: это разные объекты, и старый идентификатор перестаёт работать. Если бот вдруг перестал писать в группу, проверьте это в первую очередь.

Ещё по теме

Сделаю под ключ

Сделаю Telegram-бота под ваш процесс

Заявки, оплата, выдача доступа, рассылки и воронка в одном боте, с админкой для вас.

от 300 $ · 3-7 дней

Похожий кейсTelegram-бот воронки продаж для онлайн-курсовTelegram-бот, который ведёт всю воронку - лид-магнит → гайд → интенсив → курс - с оплатой, автовыдачей доступа и админ-панелью.

«Действительно гуру своего дела. Узнал массу новой и полезной информации по телеграм рассылкам. До этого сжег очень много денег на оплате услуг посредников, но после общения с исполнителем буду делать все сам)»

viktorTR · Kwork