Add FindSomeone page

This commit is contained in:
miruka
2019-11-09 14:20:53 -04:00
parent 0aedc1a7d0
commit 46ff911bfa
5 changed files with 115 additions and 13 deletions

View File

@@ -7,7 +7,7 @@ import platform
import re
import traceback
from contextlib import suppress
from dataclasses import dataclass
from dataclasses import dataclass, field
from datetime import datetime
from functools import partial
from pathlib import Path
@@ -57,6 +57,15 @@ class MatrixForbidden(MatrixError):
m_code: str = "M_FORBIDDEN"
@dataclass
class UserNotFound(Exception):
user_id: str = field()
@dataclass
class InvalidUserInContext(Exception):
user_id: str = field()
@dataclass
class UploadError(Exception):
http_code: Optional[int] = None
@@ -448,7 +457,28 @@ class MatrixClient(nio.AsyncClient):
more = await self.load_past_events(room_id)
async def room_create(
async def new_direct_chat(self, invite: str, encrypt: bool = False) -> str:
if invite == self.user_id:
raise InvalidUserInContext(invite)
if isinstance(await self.get_profile(invite), nio.ProfileGetError):
raise UserNotFound(invite)
response = await super().room_create(
invite = [invite],
is_direct = True,
visibility = nio.RoomVisibility.private,
initial_state =
[nio.EnableEncryptionBuilder().as_dict()] if encrypt else [],
)
if isinstance(response, nio.RoomCreateError):
raise MatrixError.from_nio(response)
return response.room_id
async def new_group_chat(
self,
name: Optional[str] = None,
topic: Optional[str] = None,