from nio import AsyncClient, RoomMessageText import random class BooeehBot: def generate_boeh(self): boeh = "b" for _ in range(random.randint(1, 10)): boeh += "o" for _ in range(random.randint(1, 5)): boeh += "e" for _ in range(random.randint(1, 3)): boeh += "e" return boeh def __init__(self, url, username, password): self.url = url self.username = username self.password = password self.client = AsyncClient(url, username) async def login(self): try: response = await self.client.login(self.password) print(f"Logged in. Serving {self.username}.") return response except Exception as e: print(f"Login error: {e}") return None async def handle_message(self, room, event): specific_user_id = "@joewilliams007:matrix.org" if isinstance(event, RoomMessageText): if event.sender == specific_user_id: response_text = self.generate_boeh() try: await self.client.room_send( room.room_id, message_type="m.room.message", content={"msgtype": "m.text", "body": response_text}, ) print(f"Response to {event.sender}: " + response_text) except Exception as e: print(f"Failed to send message: {e}") async def start(self): login_response = await self.login() if not login_response: return self.client.add_event_callback(self.handle_message, RoomMessageText) await self.client.sync_forever(timeout=30000) async def stop(self): await self.client.close()