mirror of
https://gitlab.com/animath/si/plateforme-corres2math.git
synced 2025-07-05 16:43:55 +02:00
Create Matrix room when a Team got created
This commit is contained in:
43
corres2math/matrix.py
Normal file
43
corres2math/matrix.py
Normal file
@ -0,0 +1,43 @@
|
||||
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))
|
Reference in New Issue
Block a user