event.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from aiogram.types.message import Message
  2. from aiogram.types.user import User
  3. from app.data_provider import add_event2db, add_notifications2db, add_user2db
  4. from app.helpers import replacer
  5. from app.messages import Event
  6. from app.dates import parse_datetime_string
  7. from app.messages import get_notifications
  8. def handle_event_message(message: Message) -> str:
  9. """
  10. Получает и обрабатывает сообщение о планировании встречи
  11. Возвращает текст сообщения для мгновенной отправки
  12. """
  13. event = parse_event_string(
  14. message.md_text, message.from_user, message.chat.id)
  15. notifications = get_notifications(event)
  16. meeting_id = add_event2db(event)
  17. add_user2db(event.organizer)
  18. add_notifications2db(notifications, meeting_id)
  19. return notifications.now.message
  20. def parse_event_string(message: str, organizer: User, chat_id: int) -> Event:
  21. """
  22. Парсит сообщения о планировании мероприятия и возвращает данные о встрече
  23. """
  24. event_params = message.split("\n")
  25. if len(event_params) != 6:
  26. raise ValueError("Нужно ввести 6 строк \- ключевое слово, дата, время, \
  27. описание, участники и ссылка")
  28. _, date, time, description, participants, link = event_params
  29. meeting_datetime = parse_datetime_string(date, time)
  30. organizer.first_name = replacer(organizer.first_name)
  31. organizer.last_name = replacer(organizer.last_name)
  32. return Event(
  33. date_time=meeting_datetime,
  34. organizer=organizer,
  35. agenda=description,
  36. participants=participants,
  37. meeting_url=link,
  38. chat_id=chat_id
  39. )