diff --git a/src/boeh/__init__.py b/src/boeh/__init__.py index fd7c294..82f2709 100644 --- a/src/boeh/__init__.py +++ b/src/boeh/__init__.py @@ -1,14 +1,13 @@ -import asyncio -import os from nio import AsyncClient, RoomMessageText + class BooeehBot: 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) @@ -17,10 +16,10 @@ class BooeehBot: except Exception as e: print(f"Login error: {e}") return None - + async def handle_message(self, room, event): - specific_user_id = '@joewilliams007:matrix.org' - + specific_user_id = "@joewilliams007:matrix.org" + if isinstance(event, RoomMessageText): if event.sender == specific_user_id: response_text = "booeeeh" @@ -28,26 +27,20 @@ class BooeehBot: await self.client.room_send( room.room_id, message_type="m.room.message", - content={ - "msgtype": "m.text", - "body": response_text - } + 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() - - - diff --git a/src/boeh/__main__.py b/src/boeh/__main__.py index 804a2d6..d44e1f5 100644 --- a/src/boeh/__main__.py +++ b/src/boeh/__main__.py @@ -1,20 +1,23 @@ import asyncio -from boeh import env -from boeh import BooeehBot + +from boeh import BooeehBot, env + async def main_async(): url = "https://matrix.org" username = "@retoor2:matrix.org" password = env.secret4 bot = BooeehBot(url, username, password) - + try: await bot.start() except KeyboardInterrupt: await bot.stop() + def main(): asyncio.run(main_async()) + if __name__ == "__main__": - main() \ No newline at end of file + main()