From d5c596a8b1c024610a09de5e6e70f6e32afe790f Mon Sep 17 00:00:00 2001 From: coon Date: Tue, 18 Nov 2025 00:23:44 +0100 Subject: [PATCH] add main.py with basic matrix client implementation --- main.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 main.py diff --git a/main.py b/main.py new file mode 100755 index 0000000..869b0cd --- /dev/null +++ b/main.py @@ -0,0 +1,38 @@ +import asyncio +import tomllib + +from nio import AsyncClient, MatrixRoom, RoomMessageText, RoomMemberEvent + + +async def message_callback(room: MatrixRoom, event: RoomMessageText) -> None: + print( + f"Message received in room {room.display_name}\n" + f"{room.user_name(event.sender)} | {event.body}" + ) + + +async def membership_callback(room: MatrixRoom, event: RoomMemberEvent) -> None: + print(f"Room member event on room '{repr(room)}': {repr(event)}\n") + + if event.content["membership"] == "join": + print(f"{event.content['displayname']} joined room") + + +async def main() -> None: + with open("credentials.toml", "rb") as f: + config = tomllib.load(f) + + server = config["credentials"]["server"] + username = config["credentials"]["username"] + password = config["credentials"]["password"] + + client = AsyncClient(server, username) + client.add_event_callback(message_callback, RoomMessageText) + client.add_event_callback(membership_callback, RoomMemberEvent) + + print(await client.login(password)) + + await client.sync_forever(timeout=30000) # milliseconds + + +asyncio.run(main())