Общение ботов телеграм, или авторизация через PHP
Для одного проекта мне понадобилось получать данные от одного бота в автоматическом режиме. То есть при получении сообщений от бота необходимо было их обрабатывать или как-то пересылать дальше. Осложнялось дело тем, что этот бот – чужой, не мой, у меня нет к нему доступов. Что ж, тогда давайте создадим обычный аккаунт и научимся им управлять удаленно.
Для решения данной задачи мы воспользуемся клиентом MadelineProto для телеграм на PHP. Первым делом необходим хостинг с разрешенными исходящими соединениями (любой платный) иди впс/вдс. Создайте папку, разрешите юзеру писать в ней и закиньте файл index.php в неё с таким содержимым:
if (!file_exists('madeline.php')) { copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); } include 'madeline.php'; $MadelineProto = new \danog\MadelineProto\API('session.madeline'); $MadelineProto->start();И перейдите к этому файлу в браузере. Первоначально вам необходимо будет зарегистрировать клиент – в автоматическом или ручном режиме. Обратите внимание, что лучше использовать такой аккаунт в телеграм, который не жалко потерять – мало ли куда могут уйти данные!
Также вам надо будет выбрать, для чего вы будете использовать данный клиент – для магазина, для разработки, для обучения – буквально можно пару слов написать. Все на английском. Выбираем ручной режим, вводим свой номер телефона телеграм, затем вводим код, который получим в сообщении, немного ждем, получаем сообщение о входе с нового устройства и можно начинать работать.
В вашей папке появится несколько новых файлов - session.madeline.ipcState.php, madeline-74.phar и тд – не переживайте, это так и должно быть.
Итак, после успешной регистрации клиента можно уже начинать работу. Давайте попробуем получить данные какого-нибудь канала (или переписку с пользователем, это неважно). Например, добавимся к каналу "@phpdigest" (из интерфейса пользователя) для простоты, а в файл index.php добавим следующий код:
//авторизуемся в телеграме include 'madeline.php'; $MadelineProto = new \danog\MadelineProto\API('session.madeline'); $MadelineProto->start(); //получаем последние сообщения от @phpdigest $messages_Messages = $MadelineProto->messages->getHistory( ['peer' => "@phpdigest", 'offset_id' => 0, 'offset_date' => 0, 'add_offset' => 0, 'limit' => 20, 'max_id' => 9999999, 'min_id' => 0 ]); $messages = $messages_Messages['messages']; foreach ($messages as $mes){ echo $mes["date"].$mes['message']."<br /><br />"; } die();Здесь мы получаем последние 20 сообщений данного канала. Как видите, все довольно просто. В MadelineProto есть разные методы – добавления в канал, писать самим и тд. Для моей задачи необходимо было просто получать сообщения – для этого периодически запрашивал принятые сообщения от необходимого контакта, сравнивал с имеющимися в базе данных и если были более новые писал их и отправлял другому боту.
Таким образом, с помощью клиента telegram на PHP и хостинга можно создавать довольно сложные, многоуровневые системы с ботами и настоящими людьми. Все ограничивается вашей фантазией, временем и, конечно, бюджетом.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.