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}")