Справочники, инструменты, документация

PHP: Как узнать chat id для группы и отправить сообщение в канал Telegram

Иногда требуется, чтобы бот Telegram, которого вы создаете, умел постить сообщения в сообщество или группу от имени этой самой группы.

Но вот незадача — для отправки сообщения нужен ID чата, в который это самое сообщение отправлять. Нужно его каким-то образом получить. Итак, начнем. Для начала делаем канал публичным. После получения id можно будет снова сделать его частным, если требуется. Вводим адрес в строку браузера, изменив выделенное на своё:

https://api.telegram.org/botBOT:TOKEN/getChat?chat_id=@имяканала

BOT:TOKEN — токен бота, полученный при его создании.

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

В ответ получите закодированное в json сообщение:

{"ok":true,"result":{"id":-100ХХХХХХХХХ,"title":"ХХХХХХХХХ","username":"ХХХХХХХХХ","type":"channel"}}

Расшифровывается оно так: ok: true — запрос успешно выполнен id: -100xxxxxxx — это и буде ID чата, вводится со знаком минус.

После создания канала, создаем бота Telegram и даем боту полномочия администратора в созданном канале.

После, того как Вы выполнили все эти шаги, вы сможете отправлять сообщения в канал с помощью простых http-запросов:

 https://api.telegram.org/bot%{BotApiKey}/sendMessage?chat_id=%{ChannelName}&text=%{Text}

%{BotApiKey} - это секретный ключ, который создается отцом всех ботов BotFather при создании бота %{ChannelName - название вашего канала %{Text} - текст сообщения.

Вызываем:

$botApiToken = ''; // токен бота
$data = [
  'chat_id' => '', // название канала
  'text' => 'Привет, Бот!'
];
$resp = file_get_contents("https://api.telegram.org/bot{$botApiToken}/sendMessage?" . http_build_query($data) );
print $resp;