В мене виникла необхідність створити Telegram бот на PHP який би відправляв в Telegram-канал певне повідомлення у відповідь на команду /start і автоматично, щодня у певний час.
Для цього був створений PHP скрипт, автоматичний запуск якого на сервері реалізовувався за допомогою Cron.
Код Telegram бота для надсилання повідомлення в Telegram-канал
<?php
# Важливі константи
define('TOKEN', 'токен_бота');
# Список каналів для надсилання повідомлень
$channelIds = array(
'@канал1',
'@канал2'
);
# Приймаємо запит
$data = json_decode(file_get_contents('php://input'), TRUE);
if (isset($data['channel_post'])) {
exit;
}
file_put_contents(__DIR__ . '/message.txt', print_r($data, true)); //зберігаємо вхідні дані у файл
# Якщо команда /start, або скрипт запущено за допомогою Cron, то надсилаємо повідомлення в Telegram-канали
if (isset($data['message']) && isset($data['message']['text']) && $data['message']['text'] == '/start') {
foreach ($channelIds as $channelId) {
$method = 'sendMessage';
$send_data = [
'chat_id' => $channelId,
'text' => 'Hello, world!'
];
sendTelegram($method, $send_data);
}
} else if (php_sapi_name() === 'cli') {
foreach ($channelIds as $channelId) {
$method = 'sendMessage';
$send_data = [
'chat_id' => $channelId,
'text' => 'Hello, world!'
];
sendTelegram($method, $send_data);
}
}
# Функція надсилання повідомлення в Telegram
function sendTelegram($method, $data, $headers = [])
{
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://api.telegram.org/bot' . TOKEN . '/' . $method,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array_merge(array("Content-Type: application/json"), $headers)
]);
$result = curl_exec($curl);
curl_close($curl);
return (json_decode($result, 1) ? json_decode($result, 1) : $result);
}
В даному коді вам потрібно змінити наступні параметри:
- токен_бота – токен, який ви отримали при створенні бота в @BotFather;
- канал1, канал2 – список Telegram каналів в які необхідно надсилати повідомлення;
- Hello, world! – повідомлення яке буде надсилатися в Telegram-канал.
Важливо!
Ваш бот обов'язково має бути адміністратором в зазначених в коді каналах.