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