Найти в Дзене

Отправка сообщений в Telegram через php-скрипт

Самый простой скрипт отправки сообщений в телеграм канал или группу с помощью php. Сначала напишу самый простой скрипт, который мы будем постепенно дорабатывать, добавляя отправку фото, видео, опроса и конечно же, форматированного текста в HTML или Markdown. Отправка текстового сообщения: <?php
// Замените 'YOUR_BOT_TOKEN' на ваш токен бота
$botToken = 'YOUR_BOT_TOKEN';
// Замените 'YOUR_CHAT_ID' на идентификатор чата, куда вы хотите отправить сообщение
$chatId = 'YOUR_CHAT_ID';
// Текст сообщения
$message = 'Привет, это тестовое сообщение из PHP!';
// URL для отправки сообщения через Telegram Bot API
$apiUrl = "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=" . urlencode($message);
// Инициализация cURL сессии
$ch = curl_init();
// Устанавливаем опции для cURL
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Выполняем запрос
$response = curl_exec($ch);
// Проверяем наличие ошибок
if (curl_errno($ch)) {
echo '
Оглавление

Самый простой скрипт отправки сообщений в телеграм канал или группу с помощью php. Сначала напишу самый простой скрипт, который мы будем постепенно дорабатывать, добавляя отправку фото, видео, опроса и конечно же, форматированного текста в HTML или Markdown.

Отправка текстового сообщения:

<?php
// Замените 'YOUR_BOT_TOKEN' на ваш токен бота
$botToken = 'YOUR_BOT_TOKEN';

// Замените 'YOUR_CHAT_ID' на идентификатор чата, куда вы хотите отправить сообщение
$chatId = 'YOUR_CHAT_ID';

// Текст сообщения
$message = 'Привет, это тестовое сообщение из PHP!';

// URL для отправки сообщения через Telegram Bot API
$apiUrl = "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=" . urlencode($message);

// Инициализация cURL сессии
$ch = curl_init();

// Устанавливаем опции для cURL
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Выполняем запрос
$response = curl_exec($ch);

// Проверяем наличие ошибок
if (curl_errno($ch)) {
echo 'Ошибка при отправке запроса: ' . curl_error($ch);
} else {
$decodedResponse = json_decode($response, true);
if ($decodedResponse && $decodedResponse['ok']) {
echo 'Сообщение успешно отправлено!';
} else {
echo 'Ошибка при отправке сообщения: ' . $decodedResponse['description'];
}
}

// Закрываем cURL сессию
curl_close($ch);
?>

Данный скрипт отправляет текстовое сообщение без форматирования в указанный телеграмм канал.

В скрипте используются только стандартные средства php без дополнительных библиотек и модулей.

Отправка форматированного текста

Но что если нам необходимо отправить форматированный текст, с переносами, жирным шрифтом и ссылками? Добавим в запрос параметр parse_mode


$requestParams = array(
'chat_id' => $chatId,
'text' => $formattedText,
'parse_mode' => 'HTML' // Или 'Markdown'
);

Готовый скрипт для отправки форматированного текста в виде html кода. В примере будет отправлено сообщение с ссылкой и тестовым форматированием <b> и <i>

<?php
// Замените 'YOUR_BOT_TOKEN' на ваш токен бота
$botToken = 'YOUR_BOT_TOKEN';

// Замените 'YOUR_CHAT_ID' на идентификатор чата, куда вы хотите отправить сообщение
$chatId = 'YOUR_CHAT_ID';

// Пример текста с форматированием (используется HTML разметка)
$formattedText = '<b>Привет!</b> Это <i>тестовое сообщение</i> с <a href="https://www.example.com">ссылкой</a>.';

// Массив параметров для запроса
$requestParams = array(
'chat_id' => $chatId,
'text' => $formattedText,
'parse_mode' => 'HTML' // Или 'Markdown', если вы предпочитаете Markdown разметку
);

// URL для отправки сообщения через Telegram Bot API
$apiUrl = "https://api.telegram.org/bot$botToken/sendMessage?" . http_build_query($requestParams);

// Инициализация cURL сессии
$ch = curl_init();

// Устанавливаем опции для cURL
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Выполняем запрос
$response = curl_exec($ch);

// Проверяем наличие ошибок
if (curl_errno($ch)) {
echo 'Ошибка при отправке запроса: ' . curl_error($ch);
} else {
$decodedResponse = json_decode($response, true);
if ($decodedResponse && $decodedResponse['ok']) {
echo 'Сообщение успешно отправлено!';
} else {
echo 'Ошибка при отправке сообщения: ' . $decodedResponse['description'];
}
}

// Закрываем cURL сессию
curl_close($ch);
?>

Отправка фото в телеграмм канал через php скрипт:

Для отправки фото необходимо использовать адрес https://api.telegram.org/bot{$botToken}/sendPhoto

Текст можно добавить в описание к фото.

<?php
// Замените 'YOUR_BOT_TOKEN' на ваш токен бота
$botToken = 'YOUR_BOT_TOKEN';

// Замените 'YOUR_CHAT_ID' на идентификатор чата, куда вы хотите отправить фото
$chatId = 'YOUR_CHAT_ID';

// Путь к изображению на сервере
$photoUrl = 'photo.jpg';

// Массив параметров для запроса
$requestParams = array(
'chat_id' => $chatId,
'photo' => $photoUrl,
'caption' => 'Пример фотографии' // Опциональный подпись к фото
);

// URL для отправки фото через Telegram Bot API
$apiUrl = "https://api.telegram.org/bot$botToken/sendPhoto?" . http_build_query($requestParams);

// Инициализация cURL сессии
$ch = curl_init();

// Устанавливаем опции для cURL
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Выполняем запрос
$response = curl_exec($ch);

// Проверяем наличие ошибок
if (curl_errno($ch)) {
echo 'Ошибка при отправке запроса: ' . curl_error($ch);
} else {
$decodedResponse = json_decode($response, true);
if ($decodedResponse && $decodedResponse['ok']) {
echo 'Фотография успешно отправлена!';
} else {
echo 'Ошибка при отправке фотографии: ' . $decodedResponse['description'];
}
}

// Закрываем cURL сессию
curl_close($ch);
?>

Пример сообщения в телеграм канале с фото и форматированным текстом:

Отправка фото и текста в telegram через php
Отправка фото и текста в telegram через php

Нужна ли инструкция по созданию телеграм бота, с помощью которого выполняется отправка?