Spaces:
Sleeping
Sleeping
import gradio as gr | |
import asyncio | |
from telethon import TelegramClient | |
from telethon.tl.functions.messages import GetFullChatRequest | |
from telethon.tl.types import PeerChat, PeerChannel | |
# Замените на ваши реальные API ID и Hash (будьте осторожны с их раскрытием) | |
API_ID = 11975824 # Замените на свой API ID | |
API_HASH = '178337f2b9a0d6b487bc23b82cad4508' # Замените на свой API Hash | |
async def get_group_members(group_link): | |
"""Получает список участников группы Telegram.""" | |
client = TelegramClient('anon', API_ID, API_HASH) | |
try: | |
await client.connect() | |
if not client.is_connected(): | |
return "Не удалось подключиться к Telegram." | |
try: | |
chat = await client.get_entity(group_link) | |
if isinstance(chat, (PeerChat, PeerChannel)): | |
full_chat = await client(GetFullChatRequest(chat.id)) | |
participants = full_chat.users | |
members_list = [] | |
for user in participants: | |
username = f"@{user.username}" if user.username else "Нет username" | |
name = f"{user.first_name} {user.last_name or ''}" | |
members_list.append(f"{name} ({username}) - ID: {user.id}") | |
return "\n".join(members_list) | |
else: | |
return f"Ошибка: '{group_link}' не является публичной группой или каналом." | |
except ValueError: | |
return f"Ошибка: Некорректная ссылка на группу или канал: '{group_link}'." | |
except Exception as e: | |
return f"Произошла ошибка при получении участников группы: {e}" | |
finally: | |
await client.disconnect() | |
def parse_members(group_link): | |
"""Синхронная обертка для асинхронной функции get_group_members.""" | |
return asyncio.run(get_group_members(group_link)) | |
iface = gr.Interface( | |
fn=parse_members, | |
inputs=gr.Textbox(label="Ссылка на Telegram-группу"), | |
outputs=gr.Textbox(label="Список участников"), | |
title="Парсер участников Telegram-группы", | |
description="Введите ссылку на публичную Telegram-группу, чтобы получить список ее участников." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |