buttons.py 1015 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. from typing import List, Dict
  4. class ButtonsDB:
  5. '''`after`: time after wich buton will be delated'''
  6. def __init__(self, after: datetime.timedelta):
  7. self._data: Dict = dict()
  8. '''msg_id: time'''
  9. self._after = after
  10. def _next_time(self) -> datetime.datetime:
  11. return datetime.datetime.now() + self._after
  12. def append(self, id: int) -> None:
  13. self._data.update({id: self._next_time()})
  14. def shift(self, id: int) -> None:
  15. if id not in self._data.keys():
  16. return
  17. self._data.update({id: self._next_time()})
  18. def delete(self, id: int) -> bool:
  19. try:
  20. del self._data[id]
  21. except KeyError:
  22. return False
  23. return True
  24. @property
  25. def expired(self) -> List[int]:
  26. now = datetime.datetime.now()
  27. return [id for id, time in self._data.items() if now >= time]
  28. @property
  29. def data(self) -> Dict:
  30. return self._data