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