Общение ботов телеграм, или авторизация через 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, telegram




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Периодическое копирование файлов в C++ с паузой
Урок 26. Сравнение LinkedList и ArrayList в Java
Кодирование и декодирование base64 на Java 8