23

Создаем бота Telegram на локальном компьютере Windows - PHP и Delphi.

По мотивам постов от @naykob первая часть и вторая часть

Задача: Запустить бота Telegram на локальном компьютере под управлением Windows (в данном случае под Windows 7) и выполнять различные процессы с использованием PHP и Delphi.

Чтобы не плодить баяны не повторяться , настоятельно рекомендую ознакомится с второй частью от @naykob, так как именно в ней расписано как завести бота через "помощника @BotFather" для дальнейшей работы с ним.

Краткая инструкция для Лиги лени.
Самое главное запомнить token для получения доступа к Telegram API:

Далее выбираем локальный сервер, мой выбор пал на Open Server Panel, так как Denwer давно не обновляется, хотя для данной задачи и он бы подошёл. Далее я буду описывать все действия на примере Open Server.

Переходим в папку с установленным Open Server и исходя из какой разрядности ваша операционная система запускаем необходимый exe.


Переходим в папку "domains" и создаем новую папку, в моём случае это "pikabu-bot.ru", именно в ней будут располагаться файлы бота.

webhook.php

Маленькое отступление: Для того что бы сервер Telegram видел наш локальный сервер мы сделаем туннелирование при помощи консольного приложения Ngrok. Приложение создает безопасный общедоступный URL вида: (https://yourapp.ngrok.io) который будет ссылаться на ваш\наш локальный веб-сервер. Ngrok бесплатен хотя и имеет платные плюшки , например в виде постоянного домена, но мы справимся и без этого.

Как говорит интернет его нужно запускать с параметрами:

ngrok http --host-header=pikabu-bot.ru 80


Но сдается мне что это не совсем правильно так как устанавливается перенаправленние на "localhost" и приходится настраивать Алиасы (об этом в конце поста), если кто подскажет как правильно, будет круто. При его запуске становиться доступна страница статистики расположенная по адресу:
http://localhost:4040/status

На ней нас интересует только полученный адрес по которому наш локальный сервер доступен из вне, одно из ограничений бесплатной версии Ngrok заключается в том что при каждом новом запуске нам выдаётся новый адрес. В файле "webhook.php" мы парсим данное значение и устанавливаем webhook c новым адресом который ведет к файлу "bot.php" на нашем локальном сервере. И все наше содержимое будет общаться с Telegram по https как он и любит.

Содержимое всех файлов и их краткое описание:

bot.php

index.php
По сути заглушка которая показывает информацию о боте.

lib.php
Функция перевода символов в нижний регистр, учитывающая кириллицу для удобного анализа. Ни чего интересного.

options.php
Файл с настройками, а именно: $token - полученный нами от @BotFather и имя пользователя которому разрешено выполнять процессы на нашем локальном сервере.

Имя должно быть без знака @, посмотреть его можете в своем профиле, если там его нет укажите его в настройках приложения мессенджера.

run.exe

Консольное приложение которое принимает в качестве параметра путь для приложения которое нужно запустить, так как если напрямую запустить приложение командой из bot.php exec('calc.exe');
то все остальные команды не будут выполняться пока запущенное приложение, в данном случае калькулятор не будет завершён, есть родной способ это обойти но решил исполнить именно в таком виде так как функционал по мере необходимости можно наращивать.
В файле bot.php видно как обращаться к данному приложению:
exec('run.exe C:\Windows\System32\calc.exe');

Так как в Windows параметры\текст с пробелами считается разными параметрами, в цикле соединяю все параметры в одну строку и далее выполняем её, а после приложение закрывается, тем самым у нас остаётся свободный скрипт от выполнения приложения.

Еще немного о webhook.php
Для автоматического запуска приложения Ngrok и установки webhook'а, было написанно еще одно консольное приложение start.exe которое так же принимает параметры запуска.

Настроить start.exe можно через ярлык и засунуть в автозагрузку:

Про Алиасы:
Осталось дело за малым, настроить Open Server. После запуска в области уведомлений возле часов будет иконка с флажком, кликаем по нему и переходим в настройки во вкладку "Алиасы"  и перенаправляем наш созданный домен на "localhost".

Собственно видео работы: https://youtu.be/J1ScV5JXUmc

Очень удобно делать подобные манипуляции с ботом на домашней машине, чем каждое исправление заливать на хостинг\сервер.

Я осознано упускал очевидные, по крайней мере для меня, вещи, но несмотря на это надеюсь что изложил достаточно доходчиво.

За ошибки прошу не пинать. Все для минусов приложил.
Писал\собирал\записывал и скриншотил  - я, значит и тегу "моё" быть. Спасибо.

P.S. Если у кого-то вызовут сомнения или просто нужны исходники исполняемых файлов, прикреплю в комментариях по первому запросу.
Все файлы для запуска описанного в посте расположил в ЯДИСКЕ.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества