!bot stats rewrite
- Only count users once - Report total homeserver count - Nicer format of top ten
This commit is contained in:
parent
c4d075a97f
commit
40b810bec8
|
@ -98,22 +98,26 @@ class MatrixModule(BotModule):
|
||||||
|
|
||||||
async def stats(self, bot, room):
|
async def stats(self, bot, room):
|
||||||
roomcount = len(bot.client.rooms)
|
roomcount = len(bot.client.rooms)
|
||||||
usercount = 0
|
|
||||||
homeservers = dict()
|
homeservers = dict()
|
||||||
for croomid in bot.client.rooms:
|
for croomid in bot.client.rooms:
|
||||||
roomobj = bot.client.rooms[croomid]
|
try:
|
||||||
usercount = usercount + len(roomobj.users)
|
users = bot.client.rooms[croomid].users
|
||||||
for user in roomobj.users:
|
except (KeyError, ValueError) as e:
|
||||||
hs = user.split(':')[1]
|
self.logger.warning(f"Couldn't get user list in room with id {croomid}, skipping: {repr(e)}")
|
||||||
|
continue
|
||||||
|
for user in users:
|
||||||
|
user, hs = user.split(':', 1)
|
||||||
if homeservers.get(hs):
|
if homeservers.get(hs):
|
||||||
homeservers[hs] = homeservers[hs] + 1
|
homeservers[hs].add(user)
|
||||||
else:
|
else:
|
||||||
homeservers[hs] = 1
|
homeservers[hs] = {user}
|
||||||
|
homeservers = {k: len(v) for k, v in homeservers.items()}
|
||||||
|
usercount = sum(homeservers.values())
|
||||||
|
hscount = len(homeservers)
|
||||||
homeservers = sorted(homeservers.items(), key=lambda kv: (kv[1], kv[0]), reverse=True)
|
homeservers = sorted(homeservers.items(), key=lambda kv: (kv[1], kv[0]), reverse=True)
|
||||||
if len(homeservers) > 10:
|
homeservers = ', '.join(['{} ({})'.format(*hs) for hs in homeservers[:10]])
|
||||||
homeservers = homeservers[0:10]
|
await bot.send_text(room, f'I\'m seeing {usercount} users in {roomcount} rooms.'
|
||||||
await bot.send_text(room,
|
f' Top ten homeservers (out of {hscount}): {homeservers}')
|
||||||
f'I\'m seeing {usercount} users in {roomcount} rooms. Top ten homeservers: {homeservers}')
|
|
||||||
|
|
||||||
async def status(self, bot, room):
|
async def status(self, bot, room):
|
||||||
systime = time.time()
|
systime = time.time()
|
||||||
|
|
Loading…
Reference in New Issue