Update mautrix-python again and fix bugs in accepting invites as puppets

This commit is contained in:
Tulir Asokan
2020-07-09 19:03:50 +03:00
parent 31cac3eef3
commit 64c9759de8
4 changed files with 8 additions and 18 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ async def sync_state(evt: CommandEvent) -> EventID:
elif not await user_has_power_level(evt.room_id, evt.az.intent, evt.sender, "bridge"):
return await evt.reply(f"You do not have the permissions to synchronize this room.")
await portal.sync_matrix_members()
await portal.main_intent.get_joined_members(portal.mxid)
await evt.reply("Synchronization complete")
+5 -4
View File
@@ -72,7 +72,7 @@ class MatrixHandler(BaseMatrixHandler):
async def handle_puppet_invite(self, room_id: RoomID, puppet: pu.Puppet, inviter: u.User,
event_id: EventID) -> None:
intent = puppet.default_mxid_intent
self.log.debug(f"{inviter} invited puppet for {puppet.tgid} to {room_id}")
self.log.debug(f"{inviter.mxid} invited puppet for {puppet.tgid} to {room_id}")
if not await inviter.is_logged_in():
await intent.error_and_leave(
room_id, text="Please log in before inviting Telegram puppets.")
@@ -87,11 +87,12 @@ class MatrixHandler(BaseMatrixHandler):
await intent.join_room(room_id)
return
try:
members = await self.az.intent.get_room_members(room_id)
members = await intent.get_room_members(room_id)
except MatrixError:
members = []
self.log.exception(f"Failed to get members after joining {room_id} as {intent.mxid}")
return
if self.az.bot_mxid not in members:
if len(members) > 1:
if len(members) > 2:
await intent.error_and_leave(room_id, text=None, html=(
f"Please invite "
f"<a href='https://matrix.to/#/{self.az.bot_mxid}'>the bridge bot</a> "
+1 -12
View File
@@ -172,17 +172,6 @@ class PortalMetadata(BasePortal, ABC):
elif not self.bot or self.tg_receiver != self.bot.tgid:
raise ValueError("Invalid peer type for Telegram user invite")
async def sync_matrix_members(self) -> None:
resp = await self.main_intent.get_room_joined_memberships(self.mxid)
members = resp["joined"]
for mxid, info in members.items():
member = Member(membership=Membership.JOIN)
if "display_name" in info:
member.displayname = info["display_name"]
if "avatar_url" in info:
member.avatar_url = info["avatar_url"]
self.az.state_store.set_member(self.mxid, mxid, member)
# endregion
# region Telegram -> Matrix
@@ -231,7 +220,7 @@ class PortalMetadata(BasePortal, ABC):
self.save()
await self.update_bridge_info()
if self.sync_matrix_state:
await self.sync_matrix_members()
await self.main_intent.get_joined_members(self.mxid)
puppet = p.Puppet.get_by_custom_mxid(user.mxid)
if puppet:
try:
+1 -1
View File
@@ -4,6 +4,6 @@ ruamel.yaml>=0.15.35,<0.17
python-magic>=0.4,<0.5
commonmark>=0.8,<0.10
aiohttp>=3,<4
mautrix==0.6.0.beta5
mautrix==0.6.0.beta6
telethon>=1.13,<1.16
telethon-session-sqlalchemy>=0.2.14,<0.3