DirectoryWeb
  • Главная
  • Услуги
  • Контакты
  • Новости
  • Правила
  • Вход / Регистрация
Создание сайтов

Создание сайтов

  • Анализ конкурента (донора) и рекомендации
  • Подбор и реализация дизайна под CMS
  • Установка на хостинг (сервер)
  • Наполнение
  • Оптимизация
  • Дополнительные услуги
Продвижение

Продвижение

  • Аудит и рекомендации
  • Семантическое ядро
  • Крауд маркетинг
  • Стратегия продвижения бренда
  • Продвижение соц сетей
  • Дополнительные услуги
SERM

SERM

  • Аудит и рекомендации
  • Семантическое ядро репутационных запросов
  • Построение стратегии продвижения
  • Стратегия продвижения репутации бренда
  • Крауд маркетинг
  • Дополнительные услуги
Оставить заявку

Оставить заявку

Не нашли подходящую услугу? Мы выполняем все типы работ по созданию сайтов и продвижению компаний в сети.
    DirectoryWeb » Статьи » Разное » Как создать чат-бота для Telegram на PHP

Как создать чат-бота для Telegram на PHP

Статьи / Разное



Как создать чат-бота для Telegram на PHP? На данный момент это очень актуальный вопрос. 24 июня 2015 года разработчики Telegram открыли платформу для создания ботов (программ, которые выполняют определенные действия по заданному алгоритму).

Прежде чем начать писать код, нового бота нужно зарегистрировать у «папы всех ботов» — @BotFather, чтобы получить токен (ключ) для работы с Telegram API.

Регистрация проходит в 5 простых этапов:

1) Открываете чат с @BotFather;

2) Вводите или выбираете из списка команду /newbot;

3) Отправляете желаемое название для бота;

4) Пишете юзернейм бота, по которому его будут находить через поиск. Обязательно на конце вашего юзернейма должно быть слово «bot» или «_bot». Например, NetologyRSSbot;

5) По желанию можно сразу настроить полное или краткое описание, список команд и аватарку.

По итогу регистрации получаем наш токен — 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s.

Будьте осторожны: никогда и никому не показывайте токен, иначе ваш бот может быть скомпрометирован. Если по несчастливой случайности кто-то нехороший все-таки узнал ваш токен, то заменить его можно всё в том же @BotFather, нажав на кнопку «Revoke current token» в разделе «API Token».

Шаг 2: выбираем способ обработки запросов
Исходя из официальной документации, Telegram API основан на простых HTTP-запросах. Существует всего два различных способа обрабатывать запросы, которые пользователи будут посылать боту:

1) проверять «вручную», используя «Long Polling»;

2) доверить всё Telegram, поставив «Webhook». В этом случае любой запрос от пользователя Telegram сам будет посылать нам на сервер.

Мы остановимся на втором варианте, но у него есть ограничение: у вас на сайте обязательно должен быть установлен SSL-сертификат, чтобы все запросы проходили через безопасный протокол HTTPS. Самоподписанные и бесплатные сертификаты «Let’s Encrypt», которые поддерживает большинство хостингов, также подходят.

Пример настройки самоподписанного сертификата из официальной документации Telegram.

Шаг 3: пишем код
Писать код бота будем на PHP, но чтобы не изобретать заново колесо, воспользуемся уже готовой и очень удобной библиотекой.

Перво-наперво привязываем через метод SetWebhook бота к нашему файлу-обработчику. Сделать это можно при помощи библиотеки, но есть вариант быстрее и проще – это построить вот такую ссылку:

https:// api. telegram. org/bot375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s/setWebhook?url=https:// yoursitehere .ru/directory/bot.php,

где

375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s — это наш токен,

https:// yousitehere. ru/directory/bot.php — ссылка на файл-обработчик на нашем сайте.

Открыв в браузере эту ссылку, должен прийти JSON-ответ со значением «Webhook was set», что будет означать, что вебхук установлен, и теперь все запросы от пользователей будут присылаться по адресу файла-обработчика.

Переходим к самому главному — обработке этих самых запросов и написанию функционала бота.

Ниже представлен полный листинг файла-обработчика:

<?php
    include('vendor/autoload.php'); //Подключаем библиотеку
    use Telegram\Bot\Api; 

    $telegram = new Api('375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s'); //Устанавливаем токен, полученный у BotFather
    $result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя
    
    $text = $result["message"]["text"]; //Текст сообщения
    $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
    $name = $result["message"]["from"]["username"]; //Юзернейм пользователя
    $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура

    if($text){
         if ($text == "/start") {
            $reply = "Добро пожаловать в бота!";
            $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
        }elseif ($text == "/help") {
            $reply = "Информация с помощью.";
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply ]);
        }elseif ($text == "Картинка") {
            $url = "https://68.media.tumblr.com/6d830b4f2c455f9cb6cd4ebe5011d2b8/tumblr_oj49kevkUz1v4bb1no1_500.jpg";
            $telegram->sendPhoto([ 'chat_id' => $chat_id, 'photo' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Гифка") {
            $url = "https://68.media.tumblr.com/bd08f2aa85a6eb8b7a9f4b07c0807d71/tumblr_ofrc94sG1e1sjmm5ao1_400.gif";
            $telegram->sendDocument([ 'chat_id' => $chat_id, 'document' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Последние статьи") {
            $html=simplexml_load_file('http://netology.ru/blog/rss.xml');
            foreach ($html->channel->item as $item) {
         $reply .= "\xE2\x9E\xA1 ".$item->title." (<a href='".$item->link."'>читать</a>)\n";
            }
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);
        }else{
            $reply = "По запросу \"<b>".$text."</b>\" ничего не найдено.";
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode'=> 'HTML', 'text' => $reply ]);
        }
    }else{
        $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
    }
?>


Разберем всё по порядку.

1. Сначала мы подключаем скачанную библиотеку, указав путь (лучше полный) до файла автозагрузчика.

include('vendor/autoload.php'); //Подключаем библиотеку
use Telegram\Bot\Api;


2. Создаем экземпляр класса в переменной $telegram и передаем в него наш токен.

В переменной $result получаем информацию о сообщении, которое пришлет нам Telegram.

$telegram = new Api('375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s'); //Устанавливаем токен, полученный у BotFather
$result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя


3. Затем определяем главные переменные: текстовое сообщение, уникальный идентификатор пользователя и его юзернейм. Если предстоит работа с БД, то не забывайте про фильтрацию (или лучше используйте PDO).

$text = $result["message"]["text"]; //Текст сообщения
$chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
$name = $result["message"]["from"]["username"]; //Юзернейм пользователя


4. Создаем нашу клавиатуру, состоящую из трех кнопок.

$keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура


5. Теперь, когда мы обозначили все переменные, можно перейти к обработке полученного сообщения. Для этого можно использовать конструкцию switch-case либо if-else. Так как принципиальной разницы между ними нет, остановимся на втором варианте, как наиболее привычном.

В самом начале проверяем, заполнена ли переменная $text и является ли сообщение пользователя текстовым.

if($text){
         …
         //код
         ...
}else{
         $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
}


Если нет, то отправляем пользователю с помощью метода sendMessage сообщение с просьбой ввести текстовое сообщение.

6. Рассмотрим вариант, когда пользователь прислал сообщение с командами /start или /help

if ($text == "/start") {
            $reply = "Добро пожаловать в бота!";
            $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
 }elseif ($text == "/help") {
            $reply = "Информация с помощью.";
            $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
  }


В этом случае помимо текста из переменной $reply будет подгружаться клавиатура, состоящая из трёх кнопок: «Последние статьи», «Картинка» и «Гифка».

Реализуется это с помощью метода replyKeyboardMarkup, параметрами которого являются:

'keyboard' => $keyboard, передаем нашу клавиатуру
'resize_keyboard' => true, клавиатура будет сжата в размерах.
'one_time_keyboard' => false, клавиатура не исчезнет после нажатия на какую-то кнопку.
7. После появления клавиатуры пользователь явно захочет попробовать потыкать на расположенные на ней кнопки, и вот что у нас «под капотом» в этом случае:

}elseif ($text == "Картинка") {
            $url = "https://68.media.tumblr.com/6d830b4f2c455f9cb6cd4ebe5011d2b8/tumblr_oj49kevkUz1v4bb1no1_500.jpg";
            $telegram->sendPhoto([ 'chat_id' => $chat_id, 'photo' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Гифка") {
            $url = "https://68.media.tumblr.com/bd08f2aa85a6eb8b7a9f4b07c0807d71/tumblr_ofrc94sG1e1sjmm5ao1_400.gif";
            $telegram->sendDocument([ 'chat_id' => $chat_id, 'document' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Последние статьи") {
            $html=simplexml_load_file('http://netology.ru/blog/rss.xml');
            foreach ($html->channel->item as $item) {
         $reply .= "\xE2\x9E\xA1 ".$item->title." (<a href='".$item->link."'>читать</a>)\n";
            }
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);
        }


8. Для отправки картинки используется метод sendPhoto, для отправки гифки – sendDocument. В обоих случаях Telegram позволяет передавать прямую ссылку на файл, что безусловно очень удобно, но не так быстро, как если бы мы передавали file_id уже отправленной на сервера Telegram картинки или гифки.

9. Для получения последних статей используется простой парсинг RSS ленты Нетологии при помощи встроенной в PHP функции simplexml_load_file.

В параметрах метода sendMessage можно заметить два новых значения:

1) 'parse_mode' => 'HTML', чтобы в сообщение можно было вставить HTML-теги

<b>, <a>, <i>, <code>


или

<pre>


2)

'disable_web_page_preview' => true


чтобы к сообщению со ссылкой не подгружалось превью.

10. В качестве смайла (стрелка вправо) используются символы \xE2\x9E\xA1. Список всех смайлов в таком виде можно найти на специальном сайте.

11. После того, как вы протестируете бота и будете уверены в его работоспособности, можно отправлять его на всеобщее обозрение.

Благодаря удобному API, боты Telegram могут стать хорошей платформой для автоматизации рутинных действий, настройки уведомлений, удобному и быстрому получению информации и созданию игр.

Бесплатными площадками для продвижения могут послужить каталоги ботов Telegram Bot Store, TeleChappy или 50bots. А анализировать активность пользователей можно с помощью бесплатного инструмента для аналитики ботов от Яндекса — Botan.

Настройка скриптов
  • DirectoryWeb
  • 03.09.2022
  • 1 200
  • 0
    • 0
    • 1
    • 2
    • 3
    • 4
    • 5
Хайп бот в Телеграмме
Хайп бот в Телеграмме
21-10-2018, 05:20, Разное
Полезные боты в телеграме
Полезные боты в телеграме
29-12-2022, 16:09, Разное
Правильные права доступа к файлам и папкам
Правильные права доступа к файлам и папкам
26-07-2013, 01:00, Разное
Как правильно составить анкор?
Как правильно составить анкор?
24-07-2013, 00:39, Разное
Инструкция подключения букса к Merchant WebMoney
Инструкция подключения букса к Merchant WebMoney
29-04-2012, 19:21, Разное
Продвижение сайта в Google Images
Продвижение сайта в Google Images
9-03-2013, 10:45, Разное

Твой комментарий..

Кликните на изображение чтобы обновить код, если он неразборчив
  • Магазин
    • Программы
    • Скрипты
  • Скрипты
    • Аналитика
    • Бонусники
    • Браузерные игры
    • Доски обявлений
    • Обменники
    • Казино
    • Каталоги
    • Конструкторы сайтов
    • Облачные майнинги
    • Рекламные сервисы
    • Социальные сети
    • Экономические игры
    • HTML шаблоны
    • Чаты
    • Хостинги
    • HYIP, MLM, МММ
    • Фриланс биржи
    • Разное
  • Телеграм Боты
  • Программы
  • Интернет магазины
  • Android, iOS приложения
  • Статьи
    • Маркетплейсы
    • Безопасность в сети
    • Заработок в интернете
    • Сайтостроение
    • Оптимизация сайтов
    • Обучение
    • Криптовалюты
    • Новости
    • Разное
    • Новости сайта
Скрипт обменного пункта Premium Exchanger
Подробнее
Скрипт обменного пункта Premium Exchanger
Скрипт инвестиционного удвоителя Fenixpay
Подробнее
Скрипт инвестиционного удвоителя Fenixpay
Скрипт системы активной рекламы UcanDO
Подробнее
Скрипт системы активной рекламы UcanDO
Скрипт экономической игры Moneybirds
Подробнее
Скрипт экономической игры Moneybirds
Скрипт мониторинга инвестиционных сайтов Monitor-Invest
Подробнее
Скрипт мониторинга инвестиционных сайтов Monitor-Invest
Скрипт инвестиционного проекта Fortuna Inv
Подробнее
Скрипт инвестиционного проекта Fortuna Inv
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter

Самые просматриваемые за последнее время

Скрипт криптовалютной инвестиционной системы OnlineTrader v5.0.0

Скрипт криптовалютной инвестиционной системы OnlineTrader v5.0.0

  • Edvins
  • 05.03.2023
  • 1 255
  • 0
    • 4
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Как защитить сайт на CMS от взлома

Как защитить сайт на CMS от взлома

  • DirectoryWeb
  • 25.02.2023
  • 1 235
  • 0
    • 3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт конструктор "Калькулятор PRO" для Битрикс

Скрипт конструктор "Калькулятор PRO" для Битрикс

  • DirectoryWeb
  • 26.02.2023
  • 1 209
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт портала под партнерку займов v1.0.0

Скрипт портала под партнерку займов v1.0.0

  • Beri.money
  • 12.03.2023
  • 1 203
  • 3
    • 3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт сайта с вирусным контентом King Media 8.0

Скрипт сайта с вирусным контентом King Media 8.0

  • DirectoryWeb
  • 14.03.2023
  • 1 200
  • 0
    • 0
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт управления проектами Grow CRM v2.1

Скрипт управления проектами Grow CRM v2.1

  • Edvins
  • 07.03.2023
  • 1 181
  • 0
    • 3,9
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт обменного пункта Premium Exchanger

Скрипт обменного пункта Premium Exchanger

  • DirectoryWeb
  • 18.03.2023
  • 1 160
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Программа MultiSapp Multi WhatsApp Manager v1.2

Программа MultiSapp Multi WhatsApp Manager v1.2

  • Edvins
  • 06.03.2023
  • 1 147
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Универсальный инструмент для парсинга сайтов и ключевых слов A-Parser

Универсальный инструмент для парсинга сайтов и ключевых слов A-Parser

  • DirectoryWeb
  • 14.03.2023
  • 1 146
  • 0
    • 2,6
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..

Высший рейтинг за последнее время

Скрипт обменного пункта Premium Exchanger

Скрипт обменного пункта Premium Exchanger

  • DirectoryWeb
  • 18.03.2023
  • 1 160
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт конструктор "Калькулятор PRO" для Битрикс

Скрипт конструктор "Калькулятор PRO" для Битрикс

  • DirectoryWeb
  • 26.02.2023
  • 1 209
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Программа MultiSapp Multi WhatsApp Manager v1.2

Программа MultiSapp Multi WhatsApp Manager v1.2

  • Edvins
  • 06.03.2023
  • 1 147
  • 0
    • 4,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт криптовалютной инвестиционной системы OnlineTrader v5.0.0

Скрипт криптовалютной инвестиционной системы OnlineTrader v5.0.0

  • Edvins
  • 05.03.2023
  • 1 255
  • 0
    • 4
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт управления проектами Grow CRM v2.1

Скрипт управления проектами Grow CRM v2.1

  • Edvins
  • 07.03.2023
  • 1 181
  • 0
    • 3,9
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
HTML шаблон сельскохояйственной тематики Bio Crop

HTML шаблон сельскохояйственной тематики Bio Crop

  • Edvins
  • 06.03.2023
  • 1 103
  • 0
    • 3,3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Как защитить сайт на CMS от взлома

Как защитить сайт на CMS от взлома

  • DirectoryWeb
  • 25.02.2023
  • 1 235
  • 0
    • 3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт портала под партнерку займов v1.0.0

Скрипт портала под партнерку займов v1.0.0

  • Beri.money
  • 12.03.2023
  • 1 203
  • 3
    • 3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Скрипт бесплатного продления лицензии Битрикс

Скрипт бесплатного продления лицензии Битрикс

  • DirectoryWeb
  • 14.03.2023
  • 1 102
  • 0
    • 3
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..

Самый топ

Ссылочное продвижение сайта в 2023?

Ссылочное продвижение сайта в 2023?

  • DirectoryWeb
  • 19.09.2011
  • 1 10 414
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Как сделать шаблон DLE  уникальным для поисковиков

Как сделать шаблон DLE уникальным для поисковиков

  • DirectoryWeb
  • 21.09.2011
  • 1 10 501
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Компания Yahoo закрывает Интернет-поисковик AltaVista

Компания Yahoo закрывает Интернет-поисковик AltaVista

  • DirectoryWeb
  • 01.07.2013
  • 1 2 781
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Урок по созданию установщика  install.php

Урок по созданию установщика install.php

  • DirectoryWeb
  • 24.09.2011
  • 1 10 125
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Как закрыть ссылки и счётчики от индексации

Как закрыть ссылки и счётчики от индексации

  • DirectoryWeb
  • 22.10.2011
  • 1 15 260
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Биз Стоун предложил ввести платную подписку на Facebook

Биз Стоун предложил ввести платную подписку на Facebook

  • DirectoryWeb
  • 23.07.2013
  • 1 3 276
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Пиратское видео в сети ВКонтакте начнут удалять

Пиратское видео в сети ВКонтакте начнут удалять

  • DirectoryWeb
  • 23.07.2013
  • 1 3 122
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Почему опасно включать параметр register_globals.

Почему опасно включать параметр register_globals.

  • DirectoryWeb
  • 11.12.2012
  • 1 5 533
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..
Основы переменных в PHP

Основы переменных в PHP

  • DirectoryWeb
  • 05.10.2016
  • 1 2 346
  • 0
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • Подробнее..

Последние комментарии

Beri.money - Где взять иконки и описание к офферам. - С какими партнерками работать выгоднее всего. Задавайте
Beri.money Вышло обновление v1.1.0 Backend:Добавлен раздел настроек сайта.На главной странице можно
MakarZzz При запуске пишет "Невозможно запустить это приложение на вашем пк"
Beri.money Скрипт мой, поддержку по нему оказываю только я. Вот список партнерок которые проверены временем и
Виктор Не входит в личный кабинет в Админку, что может быть? Не могу полностью протестировать, завязка с
Полезные ссылки
  • О проекте
  • Наши контакты
  • Администрация
Информация
  • Условия сделки
  • Способы оплаты
  • Поддержка / F.A.Q
  • Онлайн документация
  • Статистика сайта
  • Список пользователей
Услуги/Работа
  • Сайт под ключ
  • Баннеры под заказ
  • Оптимизация сайта
  • Обновление сайта
  • Консультация/поддержка
  • Хостинг/Домены/Сервера
Заказ
Быстрый вход

Используйте социальные сети для быстрой регистрации и авторизации.

ВКонтакте
Создать аккаунт / Регистрация
Авторизация

Я забыл свой пароль