messages.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from dataclasses import dataclass
  2. from datetime import datetime
  3. from aiogram.types.user import User
  4. from app.dates import compute_notification_dates
  5. @dataclass
  6. class Event:
  7. date_time: datetime
  8. organizer: User
  9. agenda: str
  10. participants: str
  11. meeting_url: str
  12. chat_id: int
  13. @dataclass
  14. class NotificationData:
  15. date_time_srting: str
  16. message: str
  17. chat_id: int
  18. @dataclass
  19. class Notifications:
  20. now: NotificationData
  21. befor_day: NotificationData
  22. befor_4hours: NotificationData
  23. befor_5mins: NotificationData
  24. def get_notifications(event: Event) -> Notifications:
  25. """
  26. Принимает событие встречи и возврашает объект с напоминаниями
  27. """
  28. dateformat = "%d\-%m\-%Y"
  29. event_info = f"*Дата:* {event.date_time.strftime(dateformat)}\n\n*Время:* \
  30. {event.date_time.strftime('%H:%M')} МСК\n\n*Повестка:* {event.agenda}\n\n*Участники:* \
  31. {event.participants}\n\n*Место встречи:* {event.meeting_url}"
  32. message_now = f"Внимание\! {event.organizer.first_name} \
  33. {event.organizer.last_name} запланировал\(а\) встречу\n\n{event_info}"
  34. notification_dates = compute_notification_dates(event.date_time)
  35. return Notifications(
  36. NotificationData("", message_now, event.chat_id),
  37. NotificationData(
  38. notification_dates.befor_day,
  39. f"Завтра встреча\n\n{event_info}",
  40. event.chat_id),
  41. NotificationData(
  42. notification_dates.befor_4hours,
  43. f"Сегодня встреча\n\n{event_info}",
  44. event.chat_id),
  45. NotificationData(
  46. notification_dates.befor_5mins,
  47. f"Начинается встреча\n\n{event_info}",
  48. event.chat_id)
  49. )