Отправка сообщений в Telegram канал

Telegram бот на PHP: Отправка сообщений в Telegram-канал

У меня возникла необходимость создать 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);
}

Main Menu