Как отправить сообщение в канал telegram через API telegram на php с картинкой и без

Как отправить сообщение в telegram канал на php? Давайте разберем отправку публикации с картинкой и без в telegram канал через бота на языке php.

Создаем бота

В телеграм эта процедура занимает всего пару минут. Для создания и настроек есть официальный верифицированный бот: @BotFather. Откройте его в телеграм и отправьте ему следующую команду

/newbot 

Далее нужно будет придумать название и логин своему боту. Это все выполняется прямо в чате телеграм.

После успешного создания и настроек, BotFather пришлет токен созданного бота. Токен потребуется для отправки запросов к api. У телеграм есть документация с описанием всех методов api, которые можно использовать. Документацию можно почитать тут: api ботов telegram. На этом настройка бота закончена.

Пример Php кода для отправки сообщения в telegram

В нашем случае всю документацию читать не придется, достаточно только два метода – sendPhoto и sendmessage.

Если нам надо отправить сообщение в telegram канал с фото 

static public function photoMessage(string $title, string $desc, string $img, string $url): array
{
$bot_token = 'xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$chat_id = '@chat_id';
$text = "*{$title}* **{$desc}** [Подробнее]({$url})";
$request = 'https://api.telegram.org/bot' . $bot_token . '/sendMessage';
// параметры, которые отправятся api телеграмм
$params = array(
'chat_id' => $chat_id, // id получателя сообщения
'caption' => $text, // текст сообщения
'parse_mode' => 'markdown', // режим отображения сообщения, не обязательный параметр
'disable_web_page_preview' => true,
'photo' => $img,
);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $request);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $params);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($c, CURLOPT_TIMEOUT, 10);
$result = curl_exec($c);
if ($result === false) {
$result = curl_error($c);
}
curl_close($c);
return $result;
}

Если нам надо отправить сообщение в telegram канал без фото

static public function sendMessage(string $title, string $desc, string $url): array
{
$bot_token = 'xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$chat_id = '@chat_id';
$text = "*{$title}* **{$desc}** [Подробнее]({$url})";
$request = 'https://api.telegram.org/bot' . $bot_token . '/sendMessage';
// параметры, которые отправятся api телеграмм
$params = array(
'chat_id' => $chat_id, // id получателя сообщения
'text' => $text, // текст сообщения
'parse_mode' => 'markdown', // режим отображения сообщения, не обязательный параметр
'disable_web_page_preview' => true,
);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $request);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $params);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($c, CURLOPT_TIMEOUT, 10);
$result = curl_exec($c);
if ($result === false) {
$result = curl_error($c);
}
curl_close($c);
return $result;
}