-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathstats.py
More file actions
120 lines (104 loc) · 5.04 KB
/
stats.py
File metadata and controls
120 lines (104 loc) · 5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# meta developer: @xdesai
from .. import loader, utils
from telethon.tl.functions.contacts import GetBlockedRequest
@loader.tds
class Stats(loader.Module):
"""Показывает статистику твоего аккаунта"""
strings = {
"name": "Stats",
"stats": """
<emoji document_id=5774022692642492953>✅</emoji><b> Account Statistics</b>
</b><emoji document_id=5208454037531280484>💜</emoji><b> Total chats: </b><code>{all_chats}</code><b>
</b><emoji document_id=6035084557378654059>👤</emoji><b> Private chats: </b><code>{users}</code><b>
</b><emoji document_id=6030400221232501136>🤖</emoji><b> Bots: </b><code>{bots}</code><b>
</b><emoji document_id=6032609071373226027>👥</emoji><b> Groups: </b><code>{groups}</code><b>
</b><emoji document_id=5870886806601338791>👥</emoji><b> Channels: </b><code>{channels}</code><b>
</b><emoji document_id=5870563425628721113>📨</emoji><b> Archived chats: </b><code>{archived}</code><b>
</b><emoji document_id=5870948572526022116>✋</emoji><b> Total blocked: </b><code>{blocked}</code>
<b>Ͱ</b><emoji document_id=6035084557378654059>👤</emoji><b> Users: </b><code>{blocked_users}</code>
<b>Ͱ</b><emoji document_id=6030400221232501136>🤖</emoji><b> Bots: </b><code>{blocked_bots}</code>""",
"loading_stats": "<b><emoji document_id=5309893756244206277>🫥</emoji> Loading statistics...</b>",
}
strings_ru = {
"name": "Stats",
"stats": """
<emoji document_id=5774022692642492953>✅</emoji><b> Статистика аккаунта
</b><emoji document_id=5208454037531280484>💜</emoji><b> Всего чатов: </b><code>{all_chats}</code><b>
</b><emoji document_id=6035084557378654059>👤</emoji><b> Личных чатов: </b><code>{users}</code><b>
</b><emoji document_id=6030400221232501136>🤖</emoji><b> Ботов: </b><code>{bots}</code><b>
</b><emoji document_id=6032609071373226027>👥</emoji><b> Групп: </b><code>{groups}</code><b>
</b><emoji document_id=5870886806601338791>👥</emoji><b> Каналов: </b><code>{channels}</code><b>
</b><emoji document_id=5870563425628721113>📨</emoji><b> Архивированных чатов: </b><code>{archived}</code><b>
</b><emoji document_id=5870948572526022116>✋</emoji><b> Всего заблокированных: </b><code>{blocked}</code>
<b>Ͱ</b><emoji document_id=6035084557378654059>👤</emoji><b> Пользователи: </b><code>{blocked_users}</code>
<b>Ͱ</b><emoji document_id=6030400221232501136>🤖</emoji><b> Боты: </b><code>{blocked_bots}</code>""",
"loading_stats": "<b><emoji document_id=5309893756244206277>🫥</emoji> Загрузка статистики...</b>",
}
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,
),
)