Как создать простого бота для Телеграм на PHP
Здравствуйте, дорогие читатели. Раз вы здесь, то пришли вы сюда из поиска по фразе «бот для телеграм на пхп». И работающего бота вы сделать сможете, прочитав данную статью. Вопросы для чего вам бот в Телеграм, здесь не обсуждаются, хотя мы сами используем собственного публичного бота @novelsite_bot для информирования о нас и наших услугах и сборе заявок. А также у нас есть закрытый бот, который мы используем как информатор в CRM (уведомления, свои задачи) и как показала практика — это действительно удобно.
Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.
Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего . Никаких фреймворков и гитхабов! Все будет очень просто и примитивно, но работать будет. И это главное. Всем счастья
Шаг 1: подготовка
Что нам понадобится:
- Веб-сервер с работающим PHP 5.6 и выше — не локальный веб-сервер, а веб-сервер на хостинге, что важно! Так как сервисы Telegram должны будут видеть вашего бота по внешней URL-ссылке;
- Веб-сервер должен работать через https — то есть на веб-сервере должен быть установлен давно (больше суток назад) зарегистрированный SSL-сертификат. Достаточно будет бесплатного Let’s Encrypt SSL-сертификата;
- Доступ к файлам на этом сервере, конечно же — иначе как мы что-то сделаем;
- Установленная кодовая страница UTF-8 на сервере по-умолчанию или добавьте в файл .htacces в корне сайта строку AddDefaultCharset utf-8;
- Аккаунт в мессенджере Telegram;
Шаг 2. Регистрация вашего бота в Телеграм
Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.
- Для этого заходим в Телеграм в специального бота @BotFather и присоеденяемся к нему — кнопка Присоединится, при этом бот выдаст команду /start — это базовая команда любого бота; вас поприветствует и можно посмотреть все команды, введя /help
- Создаем бота, введя /newbot
- И вводим имя бота и username, чтобы не заморачиваться — введите одинаково, но помните, что username вводится на латинице и в конце должно быть _bot, например:
username: verysimple_bot — подходит
username: verysimplebot — не подходит - Далее @BotFather вас поздравит и выдаст ключ или токен бота для HTTP API — по сути это строка из номера (ID) бота и набора случайных символов, примерно в таком виде:
1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG
Запомните свой токен — он нам понадобится дальше. - Далее можно задать картинку (аватар) бота, введя /setuserpic
— Можно использовать любую вашу картинку в формате JPG, PNG, загрузив её после этой команды. - Можно приступать к программированию.
Шаг 3. Создаем код бота
Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.
Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.
Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:
Шаг 4. Делаем WebHook и конкретизируем код бота
Итак, базовый код бота мы сделали. Он сможет отвечать на 2 команды: /help (Помощь) и /about (Информация о нас). Но как теперь это заставить работать и, как работает функция message_to_telegram?
-
Чтобы все заработало, нужно сособщить сервису Телеграм, что наш бот лежит там-то — используй его код для такого-то бота verysimple_bot.
Для этого нужно сформировать ссылку, которая называется WebHook и её мы и сообщим телеграму:
https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php
Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!
- Пользователь в диалоге с ботом пишет запрос, например /help
- Telegram Bot API через WebHook, что мы установили, берет этот запрос и отправляет в код бота
- Мы в боте получаем его, анализируем, видим например, /help и через Telegram Bot API и
функцию message_to_telegram отправляем ответ — который появлется в диалоге как ответ бота.
Шаг 5. Добавим возможность делать заявки через бота
Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:
- Пользователь запрашивает у бота «Оставить заявку», например набрав команду /order
- Бот входит в режим ожидания текста Заявки
- Если пользователь ввел текст и нажал Enter, только тогда отослать это сообщение заранее запрограммированному по менеджеру компании.
Получим идентификатор chat_id пользователя кому нужно отсылать заявки:
- Помните наш файл message.txt — вот он сейчас понадобится
- Присоединяемся к нашему боту тем пользователем, кому будем слать заявки (менеджер компании)
- Сразу открываем файл message.txt и смотрим блок: [chat]
Сохраняем состояние бота для каждого пользователя
Далее, важный момент: у нас любой присоединившийся пользователь сможет сделать заявку, и чтобы бот понимал, что находится в режиме ввода заявки именно с этим пользователем, мы должны сохранять и считывать состояния бота для каждого пользователя отдельно!
Напишем две функции: set_bot_state($chat_id, $data) и get_bot_state($chat_id) — которые сохраняют текущее состояние бота и получают соответсвенно, для нужного пользователя. Сохранять будем в подпапке /users на сервере, которую создадим предварительно не забыв дать права на запись. Состояния будут хранится все в тех же текстовых файлах с именами chat_id пользователей и содержать последнюю команду:
Теперь дополним код бота, добавив запись и отлов состояния и отправив заявку менеджеру компании, если состояние отправки заявки.
Скачать данный пример: verysimple_bot.php (2 kb)
Шаг 6. Регистрация команд бота
Теперь, если у вас все работает и бот отзывается на все команды, можно будет зарегистрировать эти команды у отца ботов @BotFather
- Заходим к боту @BotFather
- Запрашиваем установку команд /setcommands
- Выбираем нашего бота
- Вбиваем команды (без слешей вначале):
help — список команд
about — о нас
order — оставить заявку - Все — теперь в вашем боте появится список команд, если нажать в диалоге /
Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.
Николай Комарков
Как создать Telegram-бота с помощью PHP?
Доброго времени суток! В данной статье я покажу Вам как просто можно создать Telegram-бота на PHP.
В качестве площадки для хостинга нашего бота мы будем использовать платформу Heroku, о которой я уже ранее писал статью. В качестве библиотеки для разработки бота возьмем вот эту irazasyed/telegram-bot-sdk. Но кроме нам также понадобится библиотека doctrine/annotations для удобной организации команд на которые будет реагировать бот.
Для начала нам нужно будет получить токен для бота. Для этого надо непосредственно в клиенте Telegram перейти к боту @BotFather, где набрав команду /newbot следовать инструкциям. После получения токена нам необходимо будем настроить так называемый веб-хук — URL, на который будут приходить команды, введенные пользователем в чате с ботом. Внизу ссылка в которой нужно заменить <%ТОКЕН_БОТА%> на токен Вашего бота, после чего для активации адреса нужно будет открыть его в браузере. Обратите внимание, что Telegram требует, чтобы адрес веб-хука был c настроенным SSL. К счастью, если бот размещается на Heroku, то все уже настроено и работает.
Вот сама ссылка:
Все готово, теперь приступим к написанию кода — вот наш файл composer.json:
Файлы с классами будут лежать в папке src. Вот базовая струтура директорий проекта:
.
├── vendor
├── src
│ ├── MainCommand.php
│ └── CommandsCollector.php
├── index.php
├── composer.lock
├── composer.json
└── .gitignore
Файл index.php
require __DIR__ . '/vendor/autoload.php';
// в класс передаем наш токен
$bot = new Api('%ТОКЕН БОТА%');
function BotApp(Api $bot, array $commands = [])
<
// получаем обновленные данные
$result = $bot->getWebhookUpdates();
$text = $result["message"]["text"]; //Текст сообщения
$chat_id = $result["message"]["chat"]["id"]; //Идентификатор пользователя
$name = $result["message"]["from"]["username"]; //Имя пользователя
// если есть текстовая команда
if ($text)
<
// пробегаемся по массиву команд
foreach ($commands as $commandText => $commandAction)
<
// смотрим, есть ли введенная текстовая команда в списке доступных
if ($commandText === $text)
<
// есть такая команда — получаем ее обработчики — название класса и метода
[$class, $method] = $commandAction;
// вызываем обработчик
$obj = new $class();
$obj->$method($bot, $result);
return;
>
>
// если команда не распознана срабатывает обработчик по умолчанию
[$class, $method] = $commands['fallback'];
$obj = new $class();
$obj->$method($bot, $result);
// массив с классами команд — их может быть столько, сколько необходимо Вам
$actions = [MainCommand::class];
// проходится по классу и собирает команды, на которые срабатывает обработчик
$collector = new CommandsCollector();
// массива команд и соответствующих им обработчиков
$commands = [];
foreach($actions as $action)
<
$classCommands = $collector->collect($action);
$commands = array_merge($commands, $classCommands);
>
// запускаем бота
BotApp($bot, $commands);
Сопоставление команд с обработчиком происходит с помощью аннотаций. Для этого как раз и нужен пакет doctrine/annotations
Класс, который содержит обработчики команд
use Telegram\Bot\Api;
use Telegram\Bot\Objects\Update as ObjectsUpdate;
class MainCommand
<
/**
* @Command(text="привет")
*/
public function welcome(Api $bot, ObjectsUpdate $result)
<
$chat_id = $result["message"]["chat"]["id"];
$reply = "Информация с помощью.";
$bot->sendMessage(['chat_id' => $chat_id, 'text' => $reply]);
>
/**
* @Command(text="вакансии")
*/
public function vacanciesFeed(Api $bot, ObjectsUpdate $result)
<
$reply = '';
$url = 'https://career.habr.com/vacancies/rss?currency=RUR&sort=relevance&type=all';
$chat_id = $result["message"]["chat"]["id"];
Формированием команд и их обработчиков занимается класс CommandsCollector:
class CommandsCollector
<
/**
* Выбирает из класса все публичные методы, затем вытаскивает
* из них текст команд, на которые они должны срабатывать и формирует
* массив вида:
*
* [
* 'привет' => ['MainCommand', 'welcome']
* ]
*
* Т.е. на введенную пользователем команду будет срабатывать метод welcome класса MainCommand
*/
public function collect($class)
<
$reader = new AnnotationReader();
$refClass = new ReflectionClass($class);
$refMethods = $refClass -> getMethods(ReflectionMethod::IS_PUBLIC);
$commands = [];
foreach($refMethods as $method)
<
$command = $reader->getMethodAnnotation($method, Command::class);
if($command) <
$commands[$command->text] = [$method->class, $method->name];
>
>
После того, как код написан — нужно его разместить на платформе Heroku. Для этого нужно выполнить следующие команды в папке проекта (предполагается, что консольная утилита heroku уже установлена в системе и доступна в консоли как команда heroku):
$ cd myrusakov-telegram-bot # переходим в папку проекта — в моем случае она называется так
$ heroku login # вы должны быть зарегистрированы на Heroku и приложение myrusakovbot21 (в моем случае оно так называется) должно создано
$ heroku git:remote -a myrusakovbot21 # связываем наше приложение на компьютере с удаленным приложением на сервере
$ git add .
$ git commit -am "Initial commit"
$ git push heroku main
Таким образом, если не возникнет ошибок в ходе размещения бота на Heroku, то Ваш бот успешно размещен на сервере и готов принимать команды. Если же, после всего сделанного бот не запускается, то в папке приложения можно выполнить команду heroku logs -a myrusakovbot21, которая выведет ошибки, возникшие при обработке команд.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 2 ):
Что этот бот умеет?
Здравствуйте Возможности бота определяются командами, например: @Command(text="привет")
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Создание бота messengers на PHP. Полное руководство
Функционал из данного гайда был перенесен на messengers Business API, с помощью которого вы также сможете производить рассылки, создавать чат боты и многое другое, но без риска быть заблокированным.
В связи с изменением условий работы API, в данном гайде частично могут использоваться неактуальные сведения. Пожалуйста, посмотрите документацию перед началом работы.
Сейчас Chat API предлагает самый доступный и автоматизированный messengers Business API на рынке с Многопользовательским Чатом, Визуальным конструктором ботов, готовыми интеграциями приложений и другими полезными функциями.
Расскажем, как написать простого бота на PHP, используя API messengers.
Демонстрационный бот будет реагировать на команды, поступающие ему в виде обычных сообщений в messengers и отвечать на них. Сейчас в нашем демо чатботе присутствует следующий функционал:
- Вывод списка команд
- Вывод ID текущего чата
- Вывод текущего времени сервера, на котором работает бот.
- Вывод вашего имени
- Отправка файлов разных форматов (pdf, jpg, doc, mp3 и т.д.)
- Отправка заранее записанных голосовых сообщений
- Отправка гео-координат (локации)
- Создание конференции (группы)
Внимание: чтобы бот работал, телефон должен быть всегда подключен к интернету и не должен использоваться для messengers Web. Удобнее всего заводить отдельное устройство для этих целей.
Подготовительная работа
В самом начале, сразу свяжем messengers с нашим скриптом, чтобы по мере написания кода — проверять его работу. Для этого переходим в личный кабинет и получаем там QR-код. Далее открываем messengers на мобильном телефоне, заходим в Настройки -> messengers Web -> Сканируем QR-код.
Теперь, чтобы сервер вызывал наш скрипт при новых сообщениях, нужно указать WebHook URL. Укажите там прямую ссылку на ваш скрипт, например, https://domain.com/PHP/messengersbot.php. Нельзя указать просто IP-адрес сервера. Можно указать порт.
Теперь давайте создадим файл messengersbot.php и создадим в нем класс: class messengersBot
Создадим в нем переменные, в которые поместим API Url и токен. Их можно узнать в личном кабинете.
Теперь объявим функцию __construct(), которая будет вызываться автоматически при каждом запуске скрипта. Сервер ChatAPI будет обращаться к боту при поступлении новых сообщений (об этом подробнее ниже), присылая данные о новом сообщении в JSON-формате. Сразу ловим эти данные в начале функции и помещаем в переменные.
Продолжаем писать код функции. Опционально мы можем сохранить пришедшие данные в файл для последующего анализа и отладки, если это потребуется. Для этого мы воспользуемся буфером вывода.
Теперь напишем обработку входящих сообщений и вызов соответствующих функций. Будет много вложенного кода, но мы его разберем построчно.
if(isset($decoded[‘messages’]))
Уведомления типа «пользователь покинул чат» тоже присылаются сервером, но в них будет отсутствовать массив сообщений. Данная проверка предотвращает ошибку «Undefined index».
foreach($decoded[‘messages’] as $message)
Сообщения находятся в массиве, и их может прийти несколько сообщений одновременно. Бот должен отреагировать на каждое из них.
$text = explode(‘ ‘,trim($message[‘body’]));
Разбиваем тело сообщения на отдельные слова. Первое слово — команда, остальные будут параметрами команды.
if(!$message[‘fromMe’])
Эта проверка нужна, чтобы бот не ушел в рекурсию. Отметка «fromMe» означает, что сообщение было послано самим ботом. Поэтому выполнение продолжаем только для входящих сообщений.
switch(mb_strtolower($text[0],’UTF-8′))
Блок switch, который определяет, что за команда содержится в первом слове. Команду приводим в строчной регистр, чтобы бот реагировал на нее независимо от того, капсом она написана, с заглавной буквы или зАбОрЧиКоМ.
case ‘hi’: <$this->welcome($message[‘chatId’],false)>
Собственно, выполнение соответствующей команды в зависимости от первого слова. В вызываемую функцию передаем chatId из сообщения, чтобы отправка происходила в соответствующий чат. В принципе, все следующие строки одинаковые, но обратите внимание на:
case ‘file’: <$this->file($message[‘chatId’],$text[1])>
Здесь мы передаем еще один параметр, а именно второе слово сообщения, т.к. оно является параметром команды. Об этом ниже. Также обратите внимание на:
case ‘me’: <$this->me($message[‘chatId’],$message[‘senderName’])>
Здесь в качестве второго параметра стоит имя собеседника, взятое также из данных сообщения. А в default мы вызываем функцию, выводящую список команд, но с параметром true, что означает получение неправильной команды.
Мы закончили писать функцию __construct(). Теперь перейдем к функциям, вызываемым по командам из вышеупомянутого блока switch. В части функций вызывается функция sendMessage(), в другой части — sendRequest(). В скрипте эти функции помещены внизу, но расскажем о них сразу:
Функция sendRequest() осуществляет непосредственно запрос на сервер ChatAPI для отправки сообщений и различного медиа. Она принимает 2 параметра — $method и $data.
- $method определяет, какой метод chatAPI должен быть вызван.
- $data содержит необходимые для пересылки данные.
Разберем подробнее: В $url мы формируем корректный URL-адрес, содержащий APIUrl, метод и токен. Затем проверяем входящие данные. Если это массив, преобразовываем его в JSON. Если нет — значит преобразование в JSON было уже осуществлено в вызвавшей функции. $options — задаем HTTP-заголовки. Затем через file_get_contents выполняем запрос на сформированный URL, передавая данные. Последняя строка необязательна, она просто записывает ответ сервера ChatAPI в файл для отладки и логгирования.
Функция sendMessage() — по сути просто оболочка отправки простых текстовых сообщений. Она формирует корректный массив данных и передает его в вышеупомянутую функцию sendRequest() с методом «message».
Теперь создадим управляющие функции из блока switch. Функции, посылающие простое текстовое сообщение, в большинстве своем просто вызывают sendMessage() с определенным текстом. Функции, посылающие различное медиа, формируют свои массивы данных и вызывают sendRequest() с другими методами.
Функция welcome() — вывод списка доступных команд
Если параметр $noWelcome равен false, то первая строка сообщения будет приветствием, отображаемым по команде «hi». Если true — приветствие будет заменено на сообщение неверной команде.
Функция showchatId() — вывод ID текущего чата по команде «chatId».
Функция time() — вывод текущего времени сервера по команде «time».
Функция me() — вывод имени собеседника по команде «me».
Функция file() — отправка файла по команде «file». Эта функция наиболее интересна, т.к. работает с параметром. В качестве параметра передается формат файла, который нужно отправить.
- $availableFiles — это массив, в котором ключами выступают параметры функции, а значениями — имена файлов. Естественно, файлы с именами из массива должны присутствовать на сервере. В данном примере они лежат там же, где и скрипт бота, но вы можете поместить их в другую папку.
- if(isset($availableFiles[$format])) — проверяем существование ключа массива с полученным параметром. Если он существует, то мы формируем массив данных, и передаем его в sendRequest() с методом «sendFile». В массиве данных должны быть следующие данные:
- chatId — как обычно, ИД чата, в который посылается ответ.
- body — прямая ссылка на файл на вашем сервере. Обратите внимание, что на сервере должен быть включен SSL!
- filename — имя файла, можно указать любое
- caption — сопровождающее этот файл сообщение.
Функция ptt() — отправка голосового сообщения по команде «ptt». Голосовое сообщение должно быть файлом формата .OGG на вашем сервере.
Здесь, как и в предыдущей функции, формируем массив данных: chatId — ID чата audio — прямая ссылка на файл .ogg, опять же обязателен SSL И передаем его функции sendRequest с методом «sendAudio».
Функция geo() — отправка гео-координат по команде «geo»
Все то же самое, что и в предыдущих двух функциях. Массив должен содержать следующие данные: lat и lng — координаты; address — адрес, но можно написать любую строку; chatId — само собой разумеещееся.
Функция group() — создать конференцию, в которой будете вы и бот, по команде «group».
Здесь нам требуется указать номера телефонов пользователей, которые будут добавлены в конференцию. В первой строке извлечем номер телефона пользователя из его личного ID, который имеет вид [email protected] Затем формируем массив:
- groupName — название конференции;
- phones — массив номеров телефонов;
- messageText — текст первого сообщения в группе;
Обратите внимание, что это единственная функция, где НЕ НАДО передавать chatId. И передаем массив в sendRequest().
Теперь, когда мы закончили работать с функциями, после закрывающей класс скобки напишите строчку: new messengersBot();
Чтобы класс вызвался автоматически при обращении к скрипту.
Итоговый код будет выглядеть следующим образом
Вам необходимо будет только подставить свой токен из личного кабинета в переменную $token и номер инстанса
Bruno Tessaro
This post is made to teach you how to create and set up a simple fully functional Telegram bot written in pure PHP.
There are many good ready to use SDKs written in PHP.
This is only a simple tutorial that explains how to interact with the Telegram APIs without use of any SDK.
Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands and inline requests.
At the core, Telegram Bots are special accounts that do not require an additional phone number to set up.
Messages, commands and requests sent by users are passed to the software running on your servers.
Telegram intermediary server handles all encryption and communication with the Telegram API for you.
You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API.
Telegram Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
How do I create a bot? There’s a. bot for that.
BotFather is the one bot to rule them all. It will help you create new bots and change settings for existing ones.
Message @BotFather with the /newbot command to create a new bot. The BotFather will ask you for a name and username, then generate an authorization token for your new bot.
If you don’t know how to message by username, click the search field on your Telegram app and type @BotFather, where you should be able to initiate a conversation. Be careful not to send it to the wrong contact, because some users have similar usernames to BotFather.
The name of your bot is displayed in contact details and elsewhere.
The Username is a short name, to be used in mentions and telegram.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot’s username must end in ‘bot’, e.g. ‘tetris_bot’ or ‘TetrisBot’.
The token is a string along the lines of 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw that is required to authorize the bot and send requests to the Bot API. Keep your token secure and store it safely, it can be used by anyone to control your bot.
If your existing token is compromised or you lost it for some reason, use the /token command to generate a new one.
In order to make your Bot answering to requests from your Telegram users you can register a WebHook to automatically being called once updates are available.
The quickest and easiest way to set a WebHook for your Bot is to issue a GET request to the Bot API.
All you have to do is to call the setWebHook method in the Bot API via the following url write in your browser
where
my_bot_token is the token you got from BotFather when you created your Bot
url_to_send_updates_to is the url of the piece of code you wrote to implement your Bot behavior (in order to set a Webhook you need a server with HTTPS)
For instance
And you’ve got it.
Now if you go to the following url (you have to replace
you should see something like this
Now let’s explain how to develop the bot PHP file.
In your favorite editor, create a my-telegram-bot.php file with the following content.
where
$botToken is the bot token, generated by BotFather for your bot and used to register the bot on the Webhook service
$botAPI is the URL used to send commands to the Telegram API
file_get_contents(‘php://input’) handle the call incoming from Telegram server
json_decode($update, TRUE) decode communication message in a JSON structure
if (!$update) if it’s not a valid JSON command, it exits the script
$message if it’s a valid command, it extracts the sent message
The script can already be published; it still does nothing but works already.
Now let’s add some lines to extract useful data from the message incoming
where
$messageId is the unique identification number of the chat message
$messageText if it is a text message, the text contained in the message sent
$date is the date the message was sent
$chatId is the unique id of the user who sent the message
$username is the username of the user who sent the message
$firstname is the firs tname of the user who sent the message
$lastname is the last name of the user who sent the message
Message is not necessarily a text, it is possible to managed the type of incoming message with the following lines
When a photo is sent to the bot, you can retrieve the file and its info from Telegram API.
where
$fileAPI is the URL used to retrieve file info from Telegram API
$fileinfo the script performs an HTTP GET call to get file info in JSON format
$filePath the script get the URL path of file
$message[‘photo’][0][‘file_size’] is the size of the first file in byte
$message[‘photo’][0][‘width’] and $message[‘photo’][0][‘height’] are the dimension of the first file in pixels