puppet: add contact info to all member events
Signed-off-by: Sumner Evans <sumner@beeper.com>
This commit is contained in:
@@ -39,6 +39,8 @@ from .abstract_user import AbstractUser # isort: skip
|
||||
class TelegramBridge(Bridge):
|
||||
module = "mautrix_telegram"
|
||||
name = "mautrix-telegram"
|
||||
beeper_service_name = "telegram"
|
||||
beeper_network_name = "telegram"
|
||||
command = "python -m mautrix-telegram"
|
||||
description = "A Matrix-Telegram puppeting bridge."
|
||||
repo_url = "https://github.com/mautrix/telegram"
|
||||
|
||||
@@ -55,6 +55,7 @@ if TYPE_CHECKING:
|
||||
|
||||
|
||||
class Puppet(DBPuppet, BasePuppet):
|
||||
bridge: TelegramBridge
|
||||
config: Config
|
||||
hs_domain: str
|
||||
mxid_template: SimpleTemplate[TelegramID]
|
||||
@@ -156,6 +157,7 @@ class Puppet(DBPuppet, BasePuppet):
|
||||
|
||||
@classmethod
|
||||
def init_cls(cls, bridge: "TelegramBridge") -> AsyncIterable[Awaitable[None]]:
|
||||
cls.bridge = bridge
|
||||
cls.config = bridge.config
|
||||
cls.loop = bridge.loop
|
||||
cls.mx = bridge.matrix
|
||||
@@ -281,6 +283,8 @@ class Puppet(DBPuppet, BasePuppet):
|
||||
|
||||
if not self.disable_updates:
|
||||
try:
|
||||
changed = await self._update_contact_info(force=changed) or changed
|
||||
|
||||
changed = (
|
||||
await self.update_displayname(source, info, client_override=client_override)
|
||||
or changed
|
||||
@@ -298,6 +302,36 @@ class Puppet(DBPuppet, BasePuppet):
|
||||
await self.update_portals_meta()
|
||||
await self.save()
|
||||
|
||||
async def _update_contact_info(self, force: bool = False) -> bool:
|
||||
if not self.bridge.homeserver_software.is_hungry:
|
||||
return False
|
||||
|
||||
if self.contact_info_set and not force:
|
||||
return False
|
||||
|
||||
try:
|
||||
identifiers = []
|
||||
if self.username:
|
||||
identifiers.append(f"telegram:{self.username}")
|
||||
if self.phone:
|
||||
phone = "+" + self.phone.lstrip("+")
|
||||
identifiers.append(f"tel:{phone}")
|
||||
await self.default_mxid_intent.beeper_update_profile(
|
||||
{
|
||||
"com.beeper.bridge.identifiers": identifiers,
|
||||
"com.beeper.bridge.remote_id": str(self.tgid),
|
||||
"com.beeper.bridge.service": "telegram",
|
||||
"com.beeper.bridge.network": "telegram",
|
||||
"com.beeper.bridge.is_bridge_bot": False,
|
||||
"com.beeper.bridge.is_bot": False,
|
||||
}
|
||||
)
|
||||
self.contact_info_set = True
|
||||
except Exception:
|
||||
self.log.exception("Error updating contact info")
|
||||
self.contact_info_set = False
|
||||
return True
|
||||
|
||||
async def update_portals_meta(self) -> None:
|
||||
if p.Portal.private_chat_portal_meta != "always" and not self.mx.e2ee:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user