Изменена структура из-за ограничений телеги
This commit is contained in:
parent
c271be3792
commit
b4449eeda2
|
@ -3,7 +3,6 @@ import config
|
||||||
from telethon.sync import TelegramClient
|
from telethon.sync import TelegramClient
|
||||||
from telethon.tl.types import ChannelParticipantsAdmins
|
from telethon.tl.types import ChannelParticipantsAdmins
|
||||||
from telethon import functions, errors
|
from telethon import functions, errors
|
||||||
|
|
||||||
api_id = config.api_id
|
api_id = config.api_id
|
||||||
api_hash = config.api_hash
|
api_hash = config.api_hash
|
||||||
session = 'session.session'
|
session = 'session.session'
|
||||||
|
@ -70,12 +69,11 @@ async def check_chat(chat, type_link):
|
||||||
ch = await client.get_entity(res.chats[1])
|
ch = await client.get_entity(res.chats[1])
|
||||||
count_members = await client(functions.channels.GetFullChannelRequest(channel=ch))
|
count_members = await client(functions.channels.GetFullChannelRequest(channel=ch))
|
||||||
count_members = count_members.full_chat.participants_count
|
count_members = count_members.full_chat.participants_count
|
||||||
if count_members > 10000:
|
if count_members > 5000:
|
||||||
print(f'Количество участников чата "{ch.title}" насчитывает более 10 тысяч человек. Выбран "обычный" + "агрессивный" режим.')
|
print(f'Количество участников чата "{ch.title}" насчитывает более 5 тысяч человек. Из-за ограничений Telegram, мы не можем получить весь список. '
|
||||||
aggressive = True
|
f'Предлагаем выгрузить сообщения и получить список пользователей, которые хотя бы раз оставляли сообщение в чате.')
|
||||||
else:
|
return {'status': 'error', 'error_type': 'too_many_users', 'ch': ch, 'channel_type': channel_type,
|
||||||
print(f'Количество участников чата "{ch.title}" насчитывает менее 10 тысяч человек. Выбран "обычный" режим.')
|
'channel_title': ch.title}
|
||||||
aggressive = False
|
|
||||||
admins = []
|
admins = []
|
||||||
titles = {}
|
titles = {}
|
||||||
async for user in client.iter_participants(ch, filter=ChannelParticipantsAdmins):
|
async for user in client.iter_participants(ch, filter=ChannelParticipantsAdmins):
|
||||||
|
@ -86,18 +84,11 @@ async def check_chat(chat, type_link):
|
||||||
admins = None
|
admins = None
|
||||||
else:
|
else:
|
||||||
admins = list_users(admins, titles)
|
admins = list_users(admins, titles)
|
||||||
members = await client.get_participants(ch, aggressive=False)
|
members = await client.get_participants(ch)
|
||||||
if len(members) == 0:
|
if len(members) == 0:
|
||||||
members = None
|
members = None
|
||||||
else:
|
else:
|
||||||
members = list_users(members)
|
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 == 'Каналы':
|
if channel_type == 'Каналы':
|
||||||
limit = 3000
|
limit = 3000
|
||||||
print(
|
print(
|
||||||
|
@ -154,7 +145,9 @@ async def check_chat(chat, type_link):
|
||||||
users.append(user)
|
users.append(user)
|
||||||
if channel_type != 'Каналы':
|
if channel_type != 'Каналы':
|
||||||
channel_title = ch.title
|
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:
|
else:
|
||||||
print('Вы ввели ссылку, которая не ведёт на открытую группу. Попробуйте другую.')
|
print('Вы ввели ссылку, которая не ведёт на открытую группу. Попробуйте другую.')
|
||||||
return False
|
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}.txt', 'w', encoding='utf8') as file:
|
||||||
with open(f'../Чаты/{title}/Сообщения {title}.html', 'w', encoding='utf8') as f:
|
with open(f'../Чаты/{title}/Сообщения {title}.html', 'w', encoding='utf8') as f:
|
||||||
async for message in client.iter_messages(chat):
|
async for message in client.iter_messages(chat):
|
||||||
|
print(message)
|
||||||
file.write(f'{message}\n')
|
file.write(f'{message}\n')
|
||||||
if message.media is not None:
|
if message.media is not None:
|
||||||
f.write(
|
f.write(
|
||||||
|
@ -215,4 +209,3 @@ def list_users(*args):
|
||||||
for key, value in titles.items():
|
for key, value in titles.items():
|
||||||
users[key]['title'] = value
|
users[key]['title'] = value
|
||||||
return users
|
return users
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user