Implement Matrix->Telegram presence

This commit is contained in:
Tulir Asokan
2018-07-22 17:42:29 -04:00
parent af46aee191
commit 76410ee7cb
2 changed files with 8 additions and 1 deletions
+4 -1
View File
@@ -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)
+4
View File
@@ -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