Количество участников группы Telegram с использованием Telethon

Я хочу отслеживать группу Telegram (EOS) и видеть, как она развивалась с течением времени. Для этого я написал небольшой скрипт Python / Telethon, который извлекает все сообщения вместе с данными конструктора . и записывает это в базу данных MySQL.

Моя идея заключалась в том, чтобы суммировать MessageActionChatAddUser и MessageActionChatJoinedByLink, а затем вычесть MessageActionChatDeleteUser.

Однако мне не хватает ок. Всего было 10k пользователей и, кроме того, всего 3 MessageActionChatDeleteUser, что я очень сомневаюсь в таком большом канале.

MySQL Query выглядит следующим образом:

USE db_test;
SELECT COUNT(*) 
FROM telegram_raw
WHERE srvNme = 'MessageActionChatDeleteUser';

Часть моего скрипта Python, который оценивает полученные сообщения из канала:

    if payload[cnt].__class__.__name__ == 'MessageService':
        is_message = False
        is_msg_srv = True
        constr_id = payload[cnt].action.CONSTRUCTOR_ID
        act_nme = payload[cnt].action.__class__.__name__

    elif payload[cnt].__class__.__name__ == 'Message':
        is_message = True
        is_msg_srv = False
        constr_id = 0
        act_nme = ''

    else:
        is_message = False
        is_msg_srv = False
        constr_id = 0
        act_nme = ''

РЕДАКТИРОВАТЬ: изучив мою проблему, я обнаружил, что несколько сообщений возвращаются как пустые, вот пример:

client = TelegramClient(username, api_id, api_hash)
client.start()

if not client.is_user_authorized():
    client.send_code_request(phone)
    try:
        client.sign_in(phone, input('Enter the code: '))
    except SessionPasswordNeededError:
        client.sign_in(password=input('Password: '))

me = client.get_me()
print(me)

try:
    enty = client.get_entity('t.me/EOSproject')
    messages = client.get_messages(entity=enty, ids=37)
finally:
    client.disconnect()

person Zaehzar    schedule 03.01.2019    source источник
comment
группа или канал?   -  person Alihossein shahabi    schedule 03.01.2019
comment
это группа, я раньше перепутал каналы и группы   -  person Zaehzar    schedule 05.01.2019


Ответы (1)


Думаю, у меня есть ответ, но он плохой. Поигравшись и спросив в телеграм-канале Telethon, я обнаружил, что:

  1. Сообщения возвращаются как «Nonetype» или пустые, когда они, например, скрыты -> нет способа получить информацию как обычный член в группе

  2. большой просчет пользователей в канале происходит из-за несогласованности данных на стороне телеграмм (что я не совсем понял), а также в сообщениях типа «Nonetype». Решением было бы перейти к журналу администратора, в котором регистрируются все такие события. -> невозможно как обычный участник в группе

Если кто-то найдет решение, не стесняйтесь комментировать, и я отмечу это как правильный ответ.

person Zaehzar    schedule 05.01.2019