Кол-во сообщений пользователя за неделю telethon

Мне с помощью бота нужно считать, сколько сообщений написал каждый пользователь за неделю с помощью. Идея такова: брать историю сообщений за неделю, и по айди добавлять 1 в словарь, вообще сначала пробовал на aiogram 3, но там нельзя было брать историю сообщений.

Возвращаюсь к моей идее, если брать историю сообщений, то нужно знать их количество, чтобы указать лимит, и идти циклом проверяя дату отправки сообщения, но если лимит маленький, то могут не все сообщения посчитаться, а если большой, то слишком долго выполняется. В итоге пришёл к такому коду:

post = await client.get_messages(channel)

last_date = post[0].date + timedelta(hours=3)
end_date = datetime.now(pytz.timezone('UTC')) - timedelta(days=7) + timedelta(hours=3)
while last_date >= end_date:
    id = post[0].from_id.user_id
    if id not in count_messages:
        count_messages[id] = 0
    count_messages[id] += 1
    post = await client.get_messages(channel, offset_date=last_date-timedelta(hours=3, microseconds=1))
    last_date = post[0].date + timedelta(hours=3)
print(count_messages)

Этот код берёт последнее сообщение в чате, считает его, а потом тоже берёт 1 сообщение от даты отправки прошлого. Всё было бы хорошо, НО время выполнения, он берёт 1 сообщение за 0.1 секунду приблизительно, следовательно не подходит по времени тоже.

Может есть функция которая считает количество сообщений каждого пользователя за определённый срок? Или может можно это на aiogram 3 как-нибудь реализовать?


Ответы (0 шт):