# meta developer: @codrago_m from .. import loader, utils from telethon.tl.functions.contacts import GetBlockedRequest @loader.tds class Stats(loader.Module): """Показывает статистику твоего аккаунта""" strings = { "name": "Stats", "stats": """ Account Statistics 💜 Total chats: {all_chats} 👤 Private chats: {users} 🤖 Bots: {bots} 👥 Groups: {groups} 👥 Channels: {channels} 📨 Archived chats: {archived} Total blocked: {blocked} Ͱ👤 Users: {blocked_users} Ͱ🤖 Bots: {blocked_bots}""", "loading_stats": "🫥 Loading statistics...", } strings_ru = { "name": "Stats", "stats": """ Статистика аккаунта 💜 Всего чатов: {all_chats} 👤 Личных чатов: {users} 🤖 Ботов: {bots} 👥 Групп: {groups} 👥 Каналов: {channels} 📨 Архивированных чатов: {archived} Всего заблокированных: {blocked} Ͱ👤 Пользователи: {blocked_users} Ͱ🤖 Боты: {blocked_bots}""", "loading_stats": "🫥 Загрузка статистики...", } async def client_ready(self, client, db): self.db = db self._client = client @loader.command() async def stats(self, message): """Получить статистику""" await utils.answer(message, self.strings["loading_stats"]) users = 0 bots = 0 groups = 0 channels = 0 all_chats = 0 archived = 0 blocked_bots = 0 blocked_users = 0 limit = 100 offset = 0 total_blocked = 0 while True: blocked_chats = await self._client( GetBlockedRequest(offset=offset, limit=limit) ) for user in blocked_chats.users: if user.bot: blocked_bots += 1 else: blocked_users += 1 blocked = len(blocked_chats.users) total_blocked += blocked if blocked < limit: break offset += limit async for dialog in self._client.iter_dialogs(): if getattr(dialog, "archived", False): archived += 1 if dialog.is_user: if getattr(dialog.entity, "bot", False): bots += 1 all_chats += 1 else: users += 1 all_chats += 1 elif getattr(dialog, "is_group", False): groups += 1 all_chats += 1 elif dialog.is_channel: if getattr(dialog.entity, "megagroup", False) or getattr( dialog.entity, "gigagroup", False ): groups += 1 all_chats += 1 elif getattr(dialog.entity, "broadcast", False): channels += 1 all_chats += 1 await utils.answer( message, self.strings["stats"].format( users=users, bots=bots, channels=channels, groups=groups, all_chats=all_chats, blocked=total_blocked, archived=archived, blocked_users=blocked_users, blocked_bots=blocked_bots, ), )