# meta developer: @modwini
import datetime
from telethon import events, utils
from telethon.tl import types
from .. import loader, utils
@loader.tds
class MessageStatsMod(loader.Module):
"""Показывает статистику сообщений в текущем чате"""
strings = {"name": "MessageStats"}
def __init__(self):
self.name = self.strings["name"]
self._client = None
self.today = datetime.datetime.now().date()
self.week_ago = self.today - datetime.timedelta(days=7)
self.month_ago = self.today.replace(day=1)
self.all_time = None
async def client_ready(self, client, db):
self._client = client
me = await self._client.get_me()
async for dialog in self._client.iter_dialogs():
if dialog.entity.id == me.id:
self.all_time = (await self._client.get_messages(dialog, limit=1))[0].date.date()
break
async def statscmd(self, message: types.Message):
"""Показать статистику сообщений"""
await utils.answer(message, f"👺🔪Считаю сообщения...")
day_count = week_count = month_count = all_count = 0
async for msg in self._client.iter_messages(message.to_id):
if msg.date.date() == self.today:
day_count += 1
if self.week_ago <= msg.date.date() <= self.today:
week_count += 1
if self.month_ago <= msg.date.date() <= self.today:
month_count += 1
if msg.date.date() >= self.all_time:
all_count += 1
day_text = f"За день: {day_count}"
week_text = f"За неделю: {week_count}"
month_text = f"За месяц: {month_count}"
all_text = f"За все время: {all_count}"
await utils.answer(message, f"👾Вот ваша статистика активности в этом чате:\n{day_text}\n{week_text}\n{month_text}\n{all_text}")