Discount any history times older than 6 months #36

Merged
mdiluz merged 1 commit from limit-history into main 2025-11-29 23:15:07 +00:00
Showing only changes of commit 3675430390 - Show all commits

View file

@ -1,6 +1,6 @@
"""Store bot state""" """Store bot state"""
import os import os
from datetime import datetime from datetime import datetime, timedelta
from schema import Schema, Use, Optional from schema import Schema, Use, Optional
from collections.abc import Generator from collections.abc import Generator
from typing import Protocol from typing import Protocol
@ -243,18 +243,20 @@ class _State():
def get_history_timestamps(self, users: list[Member]) -> list[datetime]: def get_history_timestamps(self, users: list[Member]) -> list[datetime]:
"""Grab all timestamps in the history""" """Grab all timestamps in the history"""
others = [m.id for m in users] ids = [int(m.id) for m in users]
# Fetch all the interaction times in history # Fetch all the interaction times in history
# But only for interactions in the given user group # But only for interactions in the given user group
times = set() times = set()
for data in (data for id, data in self._users.items() if int(id) in others): for data in (data for id, data in self._users.items() if id in ids):
matches = data.get(_Key.MATCHES, {}) matches = data.get(_Key.MATCHES, {})
for ts in (ts for id, ts in matches.items() if int(id) in others): for ts in (ts for id, ts in matches.items() if id in ids):
times.add(ts) times.add(ts)
# Convert to datetimes and sort # Convert to datetimes and sort
datetimes = [ts_to_datetime(ts) for ts in times] datetimes = [ts_to_datetime(ts) for ts in times]
# Remove any entries older than 6 months ago
datetimes = [t for t in datetimes if t >= datetime.now() - timedelta(months=3)]
datetimes.sort() datetimes.sort()
return datetimes return datetimes