#php #api #chat #telegram #telegram-api
Вопрос:
Я ищу здесь некоторой помощи. Я пытаюсь получать сообщения из нескольких чатов в Telegram с помощью MadelineProto, используя идентификаторы пользователей с кодом:
require 'vendorautoload.php';
$settings[ 'logger' ][ 'logger' ] = 0;
$settings[ 'serialization' ][ 'serialization_interval' ] = 30;
$MadelineProto = new API('session.madeline', $settings);
$MadelineProto->async(true);
$MadelineProto->start();
$chat_one = 1234567;
$chat_two = 3254682;
$chat_three = 154789965;
function getMessagesById($u_id, $MadelineProto){
$offset_id = 0;
$limit = 100;
do {
$messages_Messages = $MadelineProto->messages->getHistory(
['peer' =>$u_id,
'offset_id' => $offset_id,
'offset_date' => 0,
'add_offset' => 0,
'limit' => $limit,
'max_id' => 0,
'min_id' => 0,
'hash' => 0 ]
);
if (count($messages_Messages['messages']) == 0) break;
print_r($messages_Messages);
$offset_id = end($messages_Messages['messages'])['id'];
yield $MadelineProto->sleep(3);
} while (true);
}
getMessagesById($chat_one , $MadelineProto);
getMessagesById($chat_two , $MadelineProto);
getMessagesById($chat_three , $MadelineProto);
Но это не возвращает никакого сообщения. Я попробовал это, установив async в значение false, и я получаю сообщения только для первого вызова функции, а не для двух других.
Есть какие-нибудь идеи, чего мне не хватает?
На самом деле я получаю сообщения только от определенных контактов, и приведенный выше код работает с асинхронным значением false только для одного контакта. Я использую ajax, чтобы обновлять его каждые 10 секунд для новых сообщений, но иногда он возвращается пустым, поэтому любая лучшая идея для этого была бы признательна. Я просмотрел документы, но ничего не помогло в получении сообщений, все отправлено.
Спасибо
Ответ №1:
Необходимо перенести объект:
$inputChannel = ['_' => 'inputPeerChat', 'chat_id' => $u_id];
['peer' => inputChannel,