Автоматический импорт сообщений из Telegram в WordPress позволяет интегрировать популярный мессенджер с вашим сайтом, что удобно для ведения новостной ленты, блога или сообщества. В этой статье мы подробно рассмотрим, как реализовать такой импорт с помощью Telegram Bot API, WordPress REST API и PHP, а также познакомимся с полезными плагинами и примерами кода.
Создание Telegram-бота и получение API токена
Первым шагом необходимо создать Telegram-бота, который будет получать сообщения из канала или чата и пересылать их на сайт WordPress. Для этого:
- Откройте Telegram и найдите пользователя
@BotFather. - Отправьте команду
/newbotи следуйте инструкциям для создания бота. - Получите API токен, который понадобится для обращения к Telegram Bot API.
Этот токен является ключом для доступа к сообщениям и управлению ботом.
Настройка прав доступа бота
Чтобы бот мог читать сообщения из канала или группы, его нужно добавить в соответствующий чат с нужными правами. Для публичных каналов обычно достаточно добавить бота в подписчики, для приватных — назначить администратора.
Создание эндпоинта в WordPress для приёма сообщений
Чтобы получать сообщения от Telegram и автоматически сохранять их на сайте, создадим собственный REST API эндпоинт в WordPress. Это позволит безопасно принимать POST-запросы от Telegram и обрабатывать их.
add_action('rest_api_init', function () {
register_rest_route('wpcodex/v1', '/telegram-webhook', array(
'methods' => 'POST',
'callback' => 'wpcodex_handle_telegram_webhook',
'permission_callback' => '__return_true',
));
});
function wpcodex_handle_telegram_webhook(WP_REST_Request $request) {
$data = $request->get_json_params();
if (empty($data['message']['text'])) {
return new WP_REST_Response('No message text', 400);
}
$text = sanitize_text_field($data['message']['text']);
$chat_id = intval($data['message']['chat']['id']);
// Создаем новый пост в WordPress
$post_id = wp_insert_post(array(
'post_title' => mb_substr($text, 0, 40),
'post_content' => $text,
'post_status' => 'publish',
'post_type' => 'post'
));
if (is_wp_error($post_id)) {
return new WP_REST_Response('Error creating post', 500);
}
return new WP_REST_Response('Post created: ' . $post_id, 200);
}
Этот код добавляет REST маршрут /wp-json/wpcodex/v1/telegram-webhook, на который Telegram будет отправлять обновления.
Регистрация вебхука в Telegram для отправки обновлений
Теперь нужно зарегистрировать URL нашего эндпоинта в Telegram, чтобы бот автоматически присылал новые сообщения. Для этого отправляем запрос:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://yourdomain.ru/wp-json/wpcodex/v1/telegram-webhook
Где <YOUR_BOT_TOKEN> — токен бота, а https://yourdomain.ru — адрес вашего сайта. После этого все новые сообщения будут автоматически приходить на сайт.
Обработка мультимедиа и расширенные возможности
Часто в Telegram присылают не только текст, но и фотографии, видео, документы. Чтобы импортировать их на сайт, нужно расширить функцию обработки:
- Обрабатывать поля
photo,video,document. - Загружать файлы на сервер WordPress с помощью
media_sideload_imageилиmedia_handle_sideload. - Вставлять загруженные медиа в контент или устанавливать в качестве миниатюры поста.
Пример загрузки фото из Telegram:
function wpcodex_download_telegram_photo($file_id) {
$bot_token = 'YOUR_BOT_TOKEN';
$response = wp_remote_get("https://api.telegram.org/bot$bot_token/getFile?file_id=$file_id");
$body = json_decode(wp_remote_retrieve_body($response), true);
if (!$body['ok']) return false;
$file_path = $body['result']['file_path'];
$file_url = "https://api.telegram.org/file/bot$bot_token/$file_path";
$tmp = download_url($file_url);
if (is_wp_error($tmp)) return false;
$file = array(
'name' => basename($file_path),
'tmp_name' => $tmp,
);
$id = media_handle_sideload($file, 0);
if (is_wp_error($id)) {
@unlink($tmp);
return false;
}
return $id;
}
Рекомендации по безопасности и производительности
При работе с вебхуками важно:
- Проверять источник запросов и валидировать данные.
- Использовать nonce или секретные ключи в URL для защиты от посторонних запросов.
- Обрабатывать сообщения асинхронно, если ожидается большой поток данных, чтобы не тормозить сайт.
- Лимитировать размер постов и файлов для предотвращения злоупотреблений.
Полезные плагины для интеграции Telegram и WordPress
Если вы хотите упростить процесс интеграции, обратите внимание на плагины:
- WP Telegram Pro — мощный плагин для интеграции с Telegram, позволяет автоматически публиковать посты, отправлять уведомления и импортировать сообщения.
- OmniVideo — для работы с видео, может помочь при загрузке медиа из Telegram.
Вывод
Автоматический импорт сообщений из Telegram в WordPress — это мощный инструмент для синхронизации контента и взаимодействия с аудиторией. С помощью Telegram Bot API, собственного REST API в WordPress и правильной обработки данных вы сможете создать гибкую систему публикации сообщений с Telegram прямо на сайте.