message_manager.py 863 B

123456789101112131415161718192021
  1. from typing import Dict, List, Tuple
  2. class MessageManager:
  3. def __init__(self, max_messages_per_chat_id: int = 5):
  4. self._message_ids_map: Dict[int, Tuple[int, int]] = {}
  5. self._chat_ids_map: Dict[int, List[int]] = {}
  6. self._max_messages = max_messages_per_chat_id
  7. def add(self, reply_to_message_id: int, group_message_id: int, chat_id: int) -> None:
  8. chat_id_messages = self._chat_ids_map.setdefault(chat_id, [])
  9. if len(chat_id_messages) >= self._max_messages:
  10. old_message_id = chat_id_messages.pop(0)
  11. self._message_ids_map.pop(old_message_id)
  12. chat_id_messages.append(group_message_id)
  13. self._message_ids_map[group_message_id] = (reply_to_message_id, chat_id)
  14. def get(self, message_id: int) -> tuple[int, int] | None:
  15. return self._message_ids_map.get(message_id)