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())