38 lines
1.1 KiB
Python
Executable file
38 lines
1.1 KiB
Python
Executable file
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())
|