tell-papa / app.py
elasko-aim's picture
Update app.py
8bf96a0 verified
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()