Я хочу отслеживать группу 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()