From 5ba466b7aa289c1f921d42016fefbbe4fdf7a939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= <tm@tlater.net> Date: Sat, 20 May 2023 02:51:46 +0100 Subject: [PATCH 1/2] tlsappointmentbot: Don't send warnings on first failure --- src/tlsappointmentbot.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tlsappointmentbot.py b/src/tlsappointmentbot.py index a458ae5..7243618 100644 --- a/src/tlsappointmentbot.py +++ b/src/tlsappointmentbot.py @@ -37,6 +37,8 @@ class TLSAppointmentBot: while not self.matrix_bot.initial_sync_done: await asyncio.sleep(1) + tries = 0 + while True: try: logger.info("checking for appointment slots") @@ -57,10 +59,18 @@ class TLSAppointmentBot: except Exception: logging.error(traceback.format_exc().strip()) - await self.matrix_bot.send_warning() + if tries > 3: + await self.matrix_bot.send_warning() + break + tries += 1 + continue + + tries = 0 await asyncio.sleep(2 * 60) + self.quit() + def _is_logged_in(self) -> bool: self.driver.get(f"{self.config.tls_instance}/BJS/index.php") button = wait.WebDriverWait(self.driver, 10).until( @@ -87,7 +97,7 @@ class TLSAppointmentBot: # Make sure we're on the page, and that we can see the # appointment table - wait.WebDriverWait(self.driver, 10).until( + wait.WebDriverWait(self.driver, 20).until( ec.visibility_of_element_located((By.XPATH, "//tr[@class='amend']")) ) From 0b1683933fcb07370b19f620ae698e8c1caf7767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= <tm@tlater.net> Date: Sat, 20 May 2023 02:52:43 +0100 Subject: [PATCH 2/2] matrixbot: Send a greeting when first connected --- src/matrixbot.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/matrixbot.py b/src/matrixbot.py index 417ec26..a2e98b4 100644 --- a/src/matrixbot.py +++ b/src/matrixbot.py @@ -41,6 +41,7 @@ class MatrixBot: logger.debug(f"left room {room_id} since all other users left") logger.info("initial sync done, ready for work") + await self._send_greeting() async def _on_invite(self, room, event): logger.info(f"invited by {event.sender} to {room.room_id}") @@ -93,6 +94,20 @@ class MatrixBot: }, ) + async def _send_greeting(self): + """Send a greeting to make sure the bot is working.""" + assert self.client + + for room_id in self.client.rooms: + await self.client.room_send( + room_id=room_id, + message_type="m.room.message", + content={ + "msgtype": "m.text", + "body": "Whaaaaaaa, good monning. I'll check slots for you.", + }, + ) + async def run(self): """Start the bot.""" logger.info(f"Connecting to {self.homeserver}")