Как узнать активность человека в telegram?
Здравствуйте!
Я пытаюсь создать 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: $lastActivityDaten"; } $userIDsFile = 'user_ids.txt'; file_put_contents($userIDsFile, implode("n", $userIDs)); $method = 'sendMessage'; $send_data = [ 'text' => "Канал: $channelNamen" . "Всего подписчиков: $totalSubscribersn" . "Администраторы: $adminsCountn" . "Чат-идентификатор: $chatId", 'reply_markup' => [ 'resize_keyboard' => true, 'keyboard' => [ [ ['text' => '️ Удалить'], ['text' => ' Вернуться назад'] ] ] ] ]; } else { $method = 'sendMessage'; $send_data = [ 'chat_id' => $data['chat']['id'], 'text' => '❗ Бот не является администратором в данной группе! Сначала добавьте его в свою групу/канал/чат, либо назчачьте администратором!' ]; } } |
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: $lastActivityDaten"; } $userIDsFile = 'user_ids.txt'; file_put_contents($userIDsFile, implode("n", $userIDs)); $method = 'sendMessage'; $send_data = [ 'text' => "Канал: $channelNamen" . "Всего подписчиков: $totalSubscribersn" . "Администраторы: $adminsCountn" . "Чат-идентификатор: $chatId", 'reply_markup' => [ 'resize_keyboard' => true, 'keyboard' => [ [ ['text' => '️ Удалить'], ['text' => ' Вернуться назад'] ] ] ] ]; } else { $method = 'sendMessage'; $send_data = [ 'chat_id' => $data['chat']['id'], 'text' => '❗ Бот не является администратором в данной группе! Сначала добавьте его в свою групу/канал/чат, либо назчачьте администратором!' ]; } }
Дополнительно:
Ответы:
Вероятно, стоит учесть, что пользователь может скрыть свою последнюю активность и сделать что-ли isset проверку на такой элемент в ответе.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы узнать активность человека в Telegram, можно использовать несколько способов. Одним из самых простых способов является проверка времени последнего онлайна пользователя в мессенджере.
Для этого необходимо зайти в чат с этим человеком в Telegram и нажать на его профиль. После этого появится информация о пользователе, включая время последнего посещения.
Если вы хотите узнать активность пользователя без его участия, то можно воспользоваться сторонними приложениями или сервисами, которые предоставляют информацию о статусе онлайн пользователей в Telegram. Однако, стоит помнить, что использование таких приложений может нарушать политику конфиденциальности мессенджера.
Также можно попробовать отправить сообщение этому пользователю и посмотреть, когда он его прочтет или ответит. Однако, это не всегда точный способ определения активности, так как пользователь может просто не отвечать на сообщения.
В любом случае, следует помнить о том, что уважение к чужой личной жизни и приватности является важным аспектом в общении в мессенджерах, поэтому стоит быть осторожным при попытках узнать активность другого пользователя в Telegram.