Discount any history times older than 6 months
All checks were successful
Test, Build and Publish / test (pull_request) Successful in 37s
Test, Build and Publish / build-and-push-images (pull_request) Successful in 44s

This commit is contained in:
Marc Di Luzio 2025-11-29 23:10:11 +00:00
parent 647c0266e1
commit 3675430390

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