Здравствуйте!
Я пытаюсь создать
Telegram-бота на
PHP, который позволяет получить информацию о
последней активности пользователя в Telegram. Я уже создал бота, получил его токен и добавил его в группу в качестве администратора. Однако я не могу понять, как получить информацию о последней активности пользователя.
Попытался использовать методы "getChatMembers" и "getChatMember", но не получил желаемых результатов. userID просто не выводятся и не сохраняются.
На сколько я знаю, телеграмм даёт возможность ботам с правами администраторов, получать userID всех участников группы/канала/чата. Но вот как это реализовать, информации не нашёл. (userID нужен дабы проверять последнюю активность человека в телеграмм).
Можете ли вы поделиться примером кода или объяснить, как правильно получить информацию о последней активности пользователя в Telegram с помощью Telegram-бота на PHP?
Заранее спасибо за вашу помощь!
Ниже предоставлен кусок кода, с помощью которого пытался извлечь userID людей, дабы проверить lastActivityDate:
elseif (is_numeric($message)) {
file_put_contents($daysFile, $message);
$parsedLink = file_get_contents($linkFile);
$channelLink = trim($parsedLink); // Удаляем лишние пробелы и переносы строк
$channelUsername = '@' . ltrim(parse_url($channelLink, PHP_URL_PATH), '/'); // Преобразовываем ссылку
$channelLink = 'https://api.telegram.org/bot' . TOKEN . '/getChat?chat_id=' . urlencode($channelUsername); // Отправляем запрос, и получаем ID чата в который был добавлен бот.
$chatInfo = sendTelegram('getChat', ['chat_id' => $channelUsername]);
$chatId = $chatInfo['result']['id'];
file_put_contents($chatIdFile, $chatId);
if(isBotAdmin($chatId, TOKEN)){
// Получаем общее количество подписчиков на канале
$getChatMembersCountResponse = sendTelegram('getChatMembersCount', ['chat_id' => $channelUsername]);
$totalSubscribers = $getChatMembersCountResponse['result'];
// Получаем количество администраторов и ботов на канале
$getChatAdministratorsResponse = sendTelegram('getChatAdministrators', ['chat_id' => $channelUsername]);
$adminsCount = count($getChatAdministratorsResponse['result']);
// Получаем название канала
$channelName = basename($channelUsername);
$membersResponse = sendTelegram('getChatMembers', ['chat_id' => $chatId]);
$members = $membersResponse['result'];
$userIDs = [];
foreach ($members as $member) {
$userId = $member['user']['id'];
$userIDs[] = $userId;
// Получение информации о последней активности пользователя
$chatMember = sendTelegram('getChatMember', ['chat_id' => $chatId, 'user_id' => $userId]);
$lastActivityDate = $chatMember['result']['last_activity_date'];
echo "User ID: $userId, Last Activity: $lastActivityDate\n";
}
$userIDsFile = 'user_ids.txt';
file_put_contents($userIDsFile, implode("\n", $userIDs));
$method = 'sendMessage';
$send_data = [
'text' => "Канал: $channelName\n" .
"Всего подписчиков: $totalSubscribers\n" .
"Администраторы: $adminsCount\n" .
"Чат-идентификатор: $chatId",
'reply_markup' => [
'resize_keyboard' => true,
'keyboard' => [
[
['text' => '️ Удалить'],
['text' => ' Вернуться назад']
]
]
]
];
} else {
$method = 'sendMessage';
$send_data = [
'chat_id' => $data['chat']['id'],
'text' => '❗ Бот не является администратором в данной группе! Сначала добавьте его в свою групу/канал/чат, либо назчачьте администратором!'
];
}
}