Автопостинг у Telegram — це одна з тих речей, яка одного разу налаштовується, а потім роками економить тобі час. Якщо ти ведеш блог, інтернет-магазин або інформаційний ресурс, автоматична публікація нових матеріалів у канал дозволяє не забувати про аудиторію та підтримувати регулярність без ручної роботи.

Сьогодні покажу, як реалізувати автопостинг у Telegram через офіційний Bot API за допомогою PHP. Це рішення чудово вписується в будь-яку back-end розробку і легко інтегрується в існуючий сайт.

Як працює автопостинг у Telegram

Усе максимально просто: ти створюєш Telegram-бота, отримуєш токен доступу до API, додаєш бота в канал як адміністратора і відправляєш HTTP-запит із PHP-скрипта.

Фактично це звичайний POST-запит до API Telegram із текстом повідомлення. Тому якщо ти вже займаєшся веб-розробкою і працюєш із PHP — проблем не виникне.

Крок 1. Створення бота через BotFather

У Telegram знайди бота @BotFather та клацни по кнопці Open:

Telegram бот @BotFather

Відкриється нове вікно-інтерфейс для взаємодії з ботом, натискай кнопку "Create a New Bot":

Створення нового бота в Telegram

Дай боту назву та посилання. Зверни увагу, що посилання обов'язково має закінчуватися на "_bot":

Наповнення імені та слагу нового бота в Telegram

Після створення ти отримаєш токен виду:

 123456789:AAExampleTokenGeneratedByBotFather 

Збережи його — це ключ до API:

Отримання токену бота в Telegram

Крок 2. Додавання бота до каналу

Створи канал або використай існуючий. Додай бота як адміністратора з правом публікації повідомлень. Без цього автопостинг не працюватиме.

Присвоєння боту права адміністратора в каналі Telegram

Присвоєння боту права адміністратора в каналі Telegram

Присвоєння боту права адміністратора в каналі Telegram

Присвоєння боту права адміністратора в каналі Telegram

Присвоєння боту права адміністратора в каналі Telegram

Щоб дізнатися chat_id каналу, можна скористатися простим способом — переслати будь-яке повідомлення з каналу боту @userinfobot або використати getUpdates. Можна також використати слаг каналу замість ID, якщо ти присвоював/ла його раніше (все, що йде після t.me/):

Розташування слагу для каналу Telegram

Крок 3. Простий PHP-скрипт для відправки повідомлення

Тепер найцікавіше — код. Ось мінімальний приклад:

<?php
$token = "YOUR_BOT_TOKEN";
$chat_id = "@your_channel_username";
$message = "Привіт! Це автоматичний пост із сайту 🚀";
$url = "https://api.telegram.org/bot{$token}/sendMessage";
$data = [
	"chat_id"    => $chat_id,
	"text"       => $message,
	"parse_mode" => "HTML"
];
$options = [
	"http" => [
		"header"  => "Content-type: application/x-www-form-urlencoded\r\n",
		"method"  => "POST",
		"content" => http_build_query($data),
	],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result; 

Це базовий варіант для PHP без сторонніх бібліотек. Якщо відповідь API містить "ok": true, значить усе працює.

Автопостинг при публікації статті

Тепер давай зробимо це по-дорослому. У реальному проєкті автопостинг потрібно прив’язати до моменту створення або публікації матеріалу.

Приклад логіки

  • Користувач додає нову статтю в адмінці.
  • Дані зберігаються в базу.
  • Після успішного запису викликається функція відправки в Telegram.
function sendToTelegram($title, $url)
{
	$token = "YOUR_BOT_TOKEN";
	$chat_id = "@your_channel_username";
	$message = "<b>{$title}</b>\n\nЧитай на сайті:\n{$url}";
	$apiUrl = "https://api.telegram.org/bot{$token}/sendMessage";
	$data = ["chat_id" => $chat_id, "text" => $message, "parse_mode" => "HTML"];
	$options = ["http" => ["header" => "Content-type: application/x-www-form-urlencoded\r\n", "method" => "POST", "content" => http_build_query($data),],];
	$context = stream_context_create($options);
	file_get_contents($apiUrl, false, $context);
}

Цю функцію можна викликати одразу після INSERT-запиту в MySQL. Це типовий сценарій для Back-end розробки, коли сервер відповідає не лише за збереження даних, а й за інтеграцію з зовнішніми сервісами.

Форматування повідомлень

Telegram підтримує HTML та Markdown. Я рекомендую використовувати HTML — він передбачуваніший.

Ти можеш:

  • виділяти текст жирним через <b>
  • робити курсив через <i>
  • додавати посилання через <a href="">

Головне — екранувати спецсимволи, якщо вони приходять із бази даних.

Відправка зображень

Щоб зробити пости привабливішими, краще надсилати не просто текст, а зображення з підписом.

$apiUrl = "https://api.telegram.org/bot{$token}/sendPhoto";
$data = [
	"chat_id" => $chat_id,
	"photo" => "https://example.com/image.jpg",
	"caption" => "Новий матеріал уже на сайті!",
	"parse_mode" => "HTML"
];

Такий підхід особливо добре працює для блогів, новинних ресурсів і будь-яких проєктів у категорії месенджери та соціальні мережі.

Безпека і правильне зберігання токена

Ніколи не зберігай токен прямо в публічному репозиторії. Краще винеси його в:

  • .env файл
  • конфігураційний файл поза webroot
  • змінну середовища сервера

У професійній веб-розробці це базове правило. Якщо хтось отримає твій токен — він зможе публікувати повідомлення від імені бота.

Автопостинг через cron

Інший варіант — запускати PHP-скрипт через cron. Наприклад, якщо ти хочеш:

  • публікувати відкладені статті
  • робити дайджести раз на день
  • автоматично нагадувати про старі матеріали
 0 9 * * * /usr/bin/php /home/user/scripts/telegram_post.php 

Це дозволяє повністю автоматизувати процес і зробити систему автономною.

Типові помилки

  • Бот не доданий як адміністратор каналу.
  • Неправильний chat_id.
  • Помилки в HTML-розмітці повідомлення.
  • Відключений allow_url_fopen у PHP.

Зазвичай проблема вирішується перевіркою відповіді API — не ігноруй її.

Підсумок

Автопостинг у Telegram через API за допомогою PHP — це простий і дуже потужний інструмент. Тобі потрібен лише бот, токен і кілька десятків рядків коду.

Якщо ти займаєшся back-end розробкою або просто розвиваєш власний проєкт у сфері веб-розробки, така автоматизація зекономить купу часу й допоможе стабільно розвивати канал. Налаштував один раз — і працює роками 🙂