From b4449eeda2c9d0707fd6f733db03033a0472ff2c Mon Sep 17 00:00:00 2001 From: JSDio Date: Tue, 15 Feb 2022 18:30:40 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B0?= =?UTF-8?q?=20=D0=B8=D0=B7-=D0=B7=D0=B0=20=D0=BE=D0=B3=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/my_functions.py | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/data/my_functions.py b/data/my_functions.py index 3b420f7..e0f602b 100644 --- a/data/my_functions.py +++ b/data/my_functions.py @@ -3,7 +3,6 @@ import config from telethon.sync import TelegramClient from telethon.tl.types import ChannelParticipantsAdmins from telethon import functions, errors - api_id = config.api_id api_hash = config.api_hash session = 'session.session' @@ -70,12 +69,11 @@ async def check_chat(chat, type_link): ch = await client.get_entity(res.chats[1]) count_members = await client(functions.channels.GetFullChannelRequest(channel=ch)) count_members = count_members.full_chat.participants_count - if count_members > 10000: - print(f'Количество участников чата "{ch.title}" насчитывает более 10 тысяч человек. Выбран "обычный" + "агрессивный" режим.') - aggressive = True - else: - print(f'Количество участников чата "{ch.title}" насчитывает менее 10 тысяч человек. Выбран "обычный" режим.') - aggressive = False + if count_members > 5000: + print(f'Количество участников чата "{ch.title}" насчитывает более 5 тысяч человек. Из-за ограничений Telegram, мы не можем получить весь список. ' + f'Предлагаем выгрузить сообщения и получить список пользователей, которые хотя бы раз оставляли сообщение в чате.') + return {'status': 'error', 'error_type': 'too_many_users', 'ch': ch, 'channel_type': channel_type, + 'channel_title': ch.title} admins = [] titles = {} async for user in client.iter_participants(ch, filter=ChannelParticipantsAdmins): @@ -86,18 +84,11 @@ async def check_chat(chat, type_link): admins = None else: admins = list_users(admins, titles) - members = await client.get_participants(ch, aggressive=False) + members = await client.get_participants(ch) if len(members) == 0: members = None else: members = list_users(members) - if aggressive is True: - ag_members = await client.get_participants(ch, aggressive=True) - if len(ag_members) == 0: - ag_members = None - else: - ag_members = list_users(ag_members) - members = {**members, **ag_members} if channel_type == 'Каналы': limit = 3000 print( @@ -154,7 +145,9 @@ async def check_chat(chat, type_link): users.append(user) if channel_type != 'Каналы': channel_title = ch.title - return members, admins, ch, users, channel_type, channel_title + return {'status': 'ok', 'members': members, 'admins': admins, + 'ch': ch, 'users': users, 'channel_type': channel_type, + 'channel_title': channel_title} else: print('Вы ввели ссылку, которая не ведёт на открытую группу. Попробуйте другую.') return False @@ -168,6 +161,7 @@ async def dump_messages(chat, title): with open(f'../Чаты/{title}/Сообщения {title}.txt', 'w', encoding='utf8') as file: with open(f'../Чаты/{title}/Сообщения {title}.html', 'w', encoding='utf8') as f: async for message in client.iter_messages(chat): + print(message) file.write(f'{message}\n') if message.media is not None: f.write( @@ -215,4 +209,3 @@ def list_users(*args): for key, value in titles.items(): users[key]['title'] = value return users -