Implement Matrix->Telegram presence
This commit is contained in:
@@ -308,7 +308,10 @@ class MatrixHandler:
|
||||
await portal.mark_read(user, event_id)
|
||||
|
||||
async def handle_presence(self, user: str, presence: str):
|
||||
pass
|
||||
user = await User.get_by_mxid(user).ensure_started()
|
||||
if not await user.is_logged_in():
|
||||
return
|
||||
await user.set_presence(presence == "online")
|
||||
|
||||
async def handle_typing(self, room_id: str, now_typing: List[str]):
|
||||
portal = Portal.get_by_mxid(room_id)
|
||||
|
||||
@@ -22,6 +22,7 @@ import re
|
||||
from telethon.tl.types import *
|
||||
from telethon.tl.types.contacts import ContactsNotModified
|
||||
from telethon.tl.functions.contacts import GetContactsRequest, SearchRequest
|
||||
from telethon.tl.functions.account import UpdateStatusRequest
|
||||
from mautrix_appservice import MatrixRequestError
|
||||
|
||||
from .db import User as DBUser, Contact as DBContact
|
||||
@@ -188,6 +189,9 @@ class User(AbstractUser):
|
||||
def ensure_started(self, even_if_no_session=False) -> "Awaitable[User]":
|
||||
return super().ensure_started(even_if_no_session)
|
||||
|
||||
def set_presence(self, online: bool = True):
|
||||
return self.client(UpdateStatusRequest(offline=not online))
|
||||
|
||||
async def update_info(self, info: User = None):
|
||||
info = info or await self.client.get_me()
|
||||
changed = False
|
||||
|
||||
Reference in New Issue
Block a user