1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-02-06 08:13:02 +00:00
2020-10-28 19:03:25 +01:00

44 lines
1.7 KiB
Python

import asyncio
from typing import Any, Dict, Optional, Union
from nio import AsyncClient, RoomCreateError, RoomCreateResponse, RoomInviteError, RoomInviteResponse, RoomPreset, \
RoomVisibility
class Matrix:
@classmethod
def _get_client(cls) -> AsyncClient:
if hasattr(cls, "_client"):
return cls._client
async def login():
cls._client = AsyncClient("https://correspondances-maths.fr", "@corres2mathbot:correspondances-maths.fr")
await cls._client.login("toto1234")
return cls._client
return asyncio.get_event_loop().run_until_complete(login())
@classmethod
def create_room(
cls,
visibility: RoomVisibility = RoomVisibility.private,
alias: Optional[str] = None,
name: Optional[str] = None,
topic: Optional[str] = None,
room_version: Optional[str] = None,
federate: bool = True,
is_direct: bool = False,
preset: Optional[RoomPreset] = None,
invite=(),
initial_state=(),
power_level_override: Optional[Dict[str, Any]] = None,
) -> Union[RoomCreateResponse, RoomCreateError]:
resp: Union[RoomCreateResponse, RoomCreateError]
return asyncio.get_event_loop().run_until_complete(cls._get_client().room_create(
visibility, alias, name, topic, room_version, federate, is_direct, preset, invite, initial_state,
power_level_override))
@classmethod
def invite(cls, room_id: str, user_id: str) -> Union[RoomInviteResponse, RoomInviteError]:
return asyncio.get_event_loop().run_until_complete(cls._get_client().room_invite(room_id, user_id))