В этом руководстве я подробно опишу процесс создания Telegram бота "с нуля" без использования сторонних библиотек с GitHub. Мы пройдем все этапы: создание канала, отправку сообщений через PHP и создание бота.
Если у вас еще нет Telegram, скачайте и установите его:
Для мобильных устройств: App Store или Google Play
Для компьютера: https://desktop.telegram.org/
Откройте Telegram
Нажмите на меню (три горизонтальные линии или кнопка "New Message")
Выберите "New Channel"
Введите название канала (например, "My Test Channel")
Добавьте описание (необязательно)
Установите канал как Public (если хотите, чтобы он был доступен по ссылке) или Private
Если выбрали Public, придумайте уникальное имя для ссылки (например, my_test_channel_123)
Нажмите "Create"
(Мы сделаем это после создания бота в разделе 3)
Для этого нам понадобится:
Веб-хостинг с поддержкой PHP
API-токен бота (мы получим его в разделе 3)
Добавьте своего бота в канал как администратора
Отправьте любое сообщение в канал
Перейдите по ссылке: https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates
Найдите в ответе chat с полем id - это и есть chat_id вашего канала
Создайте файл send_to_channel.php:
<?php
// Конфигурация
$botToken = 'ВАШ_ТОКЕН_БОТА'; // Замените на реальный токен
$chatId = '@my_test_channel_123'; // Или ID канала, например -100123456789
$message = 'Привет из PHP скрипта!';
// URL API Telegram
$apiUrl = "https://api.telegram.org/bot{$botToken}/sendMessage";
// Данные для отправки
$data = [
'chat_id' => $chatId,
'text' => $message,
'parse_mode' => 'HTML'
];
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Отправка запроса
$response = curl_exec($ch);
// Проверка ошибок
if (curl_errno($ch)) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
echo "HTTP ошибка: {$httpCode}\n";
echo "Ответ: {$response}";
} else {
echo "Сообщение успешно отправлено!";
}
}
// Закрытие соединения
curl_close($ch);
?>Откройте Telegram и найдите @BotFather
Начните чат с BotFather и отправьте команду /start
Для создания нового бота отправьте /newbot
Введите имя бота (например, "MyTestBot")
Введите username бота (должен заканчиваться на bot, например "MyTest123Bot")
Получите API-токен (сохраните его в надежном месте)
Создайте файл bot.php:
<?php
// Получаем входящее сообщение
$content = file_get_contents("php://input");
$update = json_decode($content, true);
// Проверяем, есть ли сообщение
if(!isset($update['message'])) {
exit;
}
$message = $update['message'];
$chatId = $message['chat']['id'];
$text = $message['text'] ?? '';
// Токен вашего бота
$botToken = 'ВАШ_ТОКЕН_БОТА';
// Функция для отправки сообщений
function sendMessage($chatId, $text, $botToken) {
$url = "https://api.telegram.org/bot{$botToken}/sendMessage";
$data = [
'chat_id' => $chatId,
'text' => $text,
'parse_mode' => 'HTML'
];
$options = [
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
// Обработка команд
switch($text) {
case '/start':
$response = "Привет! Я тестовый бот. Отправь мне любое сообщение, и я отвечу.";
break;
case '/help':
$response = "Доступные команды:\n/start - начать общение\n/help - помощь";
break;
default:
$response = "Вы написали: \"{$text}\". Я простой бот и просто повторяю ваши сообщения.";
}
// Отправка ответа
sendMessage($chatId, $response, $botToken);
?>Чтобы Telegram знал, куда отправлять сообщения для вашего бота, нужно установить вебхук.
Создайте файл set_webhook.php:
<?php
$botToken = 'ВАШ_ТОКЕН_БОТА';
$webhookUrl = 'https://ваш-сайт.ру/bot.php'; // Полный URL до вашего bot.php
$apiUrl = "https://api.telegram.org/bot{$botToken}/setWebhook?url={$webhookUrl}";
$response = file_get_contents($apiUrl);
echo "Результат установки вебхука:\n";
var_dump(json_decode($response, true));
?>После запуска этого скрипта Telegram будет отправлять все обновления на указанный URL.
Откройте свой канал
Нажмите на название канала вверху
Выберите "Administrators"
Нажмите "Add Admin"
Введите username вашего бота (например, @MyTest123Bot)
Выберите разрешения (можно оставить все выключенными, кроме "Post Messages")
Нажмите "Save"
Отправьте сообщение в чат с ботом - он должен ответить
Запустите send_to_channel.php - сообщение должно появиться в канале
Проверьте, что бот может отправлять сообщения в канал
Добавьте в начало bot.php проверку секретного токена:
$secretToken = 'ВАШ_СЕКРЕТНЫЙ_ТОКЕН'; // Проверка, что запрос пришел от Telegram if ($_SERVER['HTTP_X_TELEGRAM_BOT_API_SECRET_TOKEN'] !== $secretToken) { http_response_code(403); exit('Unauthorized'); }
И обновите set_webhook.php:
$secretToken = 'ВАШ_СЕКРЕТНЫЙ_ТОКЕН'; $webhookUrl = 'https://ваш-сайт.ру/bot.php'; $apiUrl = "https://api.telegram.org/bot{$botToken}/setWebhook"; $apiUrl .= "?url={$webhookUrl}"; $apiUrl .= "&secret_token={$secretToken}";
Добавьте в bot.php перед обработкой сообщения:
// Логирование $log = date('Y-m-d H:i:s') . ' ' . print_r($update, true) . "\n"; file_put_contents('bot.log', $log, FILE_APPEND);
Это создаст файл bot.log с историей всех запросов.
Теперь у вас есть:
Рабочий Telegram канал
PHP скрипт для отправки сообщений в канал
Telegram бот, который отвечает на сообщения
Вебхук для обработки сообщений бота
Вы можете расширять функционал бота, добавляя новые команды и обработчики сообщений в switch в файле bot.php.
Давайте разберёмся по порядку с вашими вопросами:
В Telegram для мобильных устройств (Android/iOS) процесс немного отличается:
Откройте Telegram
Нажмите на иконку карандаша (Android) или "New Message" (iOS)
Выберите "New Channel" (может быть скрыто под "More" или "Other")
Если действительно нет варианта:
Создайте временную группу
В настройках группы преобразуйте её в канал (опция "Convert to Channel")
Если вы используете Telegram Desktop:
Нажмите на меню (три полоски)
Выберите "New Channel"
Пошаговая инструкция:
Найдите в Telegram пользователя @BotFather
Можно через поиск вверху экрана
Или перейдите по прямой ссылке: t.me/BotFather
Начните диалог с командой:
/start
Для создания бота отправьте:
/newbot
Далее BotFather попросит:
Имя бота (то, что будут видеть пользователи), например: "My Test Bot"
Username бота (должен заканчиваться на "bot"), например: "MyTest12345Bot"
После успешного создания вы получите сообщение вида:
Done! Congratulations on your new bot. You will find it at t.me/MyTest12345Bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. Use this token to access the HTTP API: 123456789:AAFm2eXyzAbCdEfGhIjKlMnOpQrStUvWxYz Keep your token secure and store it safely...
Этот длинный код (в примере 123456789:AAFm2eXyzAbCdEfGhIjKlMnOpQrStUvWxYz) и есть ваш API токен.
Токен - это как пароль от вашего бота:
Никому его не сообщайте
Не публикуйте в открытом доступе
Если токен стал известен посторонним - немедленно замените через @BotFather командой /revoke
Если потеряли токен:
Снова напишите @BotFather
Используйте команду /mybots
Выберите своего бота
Выберите "API Token"
Затем "Reveal Token"
Для тестирования API сразу после получения токена:
Откройте в браузере:
https://api.telegram.org/botВАШ_ТОКЕН/getMe
Должен прийти ответ с информацией о боте
Теперь у вас есть всё необходимое для продолжения работы с API Telegram. Токен нужно подставить во все скрипты, где используется ВАШ_ТОКЕН_БОТА.