На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Общение ботов телеграм, или авторизация через 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

Читайте также:




С. Визгорев - AI Factory's Chess, уровень 10, 10 мая 2016
Инъекции SQL: основы защиты


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.