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. Если у кого-то вызовут сомнения или просто нужны исходники исполняемых файлов, прикреплю в комментариях по первому запросу.
Все файлы для запуска описанного в посте расположил в ЯДИСКЕ.

3
Автор поста оценил этот комментарий

Дельфи ещё живо?

раскрыть ветку
1
DELETED
Автор поста оценил этот комментарий

@SupportTech,  подскажите, я считаю что данный пост может навредить пользователем так как это может нарушить безопасность их устройства, в частности электронное вычислительное устройство - ПК из за не осведомлённости последствий которые могут последовать после повторения пунктов описанных в посте. Прошу удалить данный пост и ссылки на данный пост на вашем ресурсе если таковые имеются чтобы предотвратить порчу их имущества.

раскрыть ветку
1
Автор поста оценил этот комментарий
Жесть какая-то, ей богу.
Иллюстрация к комментарию
раскрыть ветку
0
Автор поста оценил этот комментарий

Привет.


Полезная инструкция, фунциклирует отменно, и простое как карандаш!


Слегка параною за своё  электронное вычислительное устройство.

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


Заранее Благодыр!

раскрыть ветку
1
DELETED
Автор поста оценил этот комментарий

Для_минусов_1