From 08fd2400546a9b233a137a81b0ef1f4ceab4139f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Sat, 27 Feb 2021 10:53:27 +0100 Subject: [PATCH] event "id" includes begin time --- bot.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index 94cd261..5138967 100644 --- a/bot.py +++ b/bot.py @@ -8,7 +8,7 @@ from asyncio import sleep import aiohttp import arrow -from ics import Calendar +from ics import Calendar, Event from config import Config @@ -74,6 +74,10 @@ async def send_message(text): logging.debug(f"RECV: [{result.status}] {await result.text()}") +def get_event_id(event: Event) -> str: + return f"{event.begin}//{event.name}" + + async def main(): try: with open(STATE_PATH, 'rb') as state_fp: @@ -93,15 +97,15 @@ async def main(): logging.debug(f"Got {len(future_events)} future events...") for event in future_events: - if event.name not in state.notified and event.begin.shift(days=-2) < arrow.now(): + if get_event_id(event) not in state.notified and event.begin.shift(days=-2) < arrow.now(): logging.info(f"Sending description of {event.name}") await send_message(process_event(event, config.EVENT_TEMPLATE)) - state.notified.append(event.name) + state.notified.append(get_event_id(event)) - if event.name not in state.notified_soon and event.begin.shift(hours=-2) < arrow.now(): + if get_event_id(event) not in state.notified_soon and event.begin.shift(hours=-2) < arrow.now(): logging.info(f"Notifying of {event.name}") await send_message(process_event(event, config.SOON_TEMPLATE)) - state.notified_soon.append(event.name) + state.notified_soon.append(get_event_id(event)) with open(STATE_PATH, 'wb') as state_fp: pickle.dump(state, state_fp)