Skip to content
This repository was archived by the owner on Mar 2, 2024. It is now read-only.

Added relay mode #27

Closed
wants to merge 20 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Working with mautrix-ython modifications in the pr mautrix/python#72
Alejandro Herrera committed Dec 10, 2021
commit c917b4ed6c8093770d9fd59ce30bce6fbbc7568e
23 changes: 0 additions & 23 deletions mautrix_instagram/commands/conn.py
Original file line number Diff line number Diff line change
@@ -28,29 +28,6 @@ async def set_notice_room(evt: CommandEvent) -> None:
await evt.sender.update()
await evt.reply("This room has been marked as your bridge notice room")

@command_handler(needs_auth=True, management_only=False, help_section=SECTION_CONNECTION,
help_text="Relay messages in this room through your Instagram account.")
async def set_relay(evt: CommandEvent) -> EventID:
if not evt.config["bridge.relay.enabled"]:
return await evt.reply("Relay mode is not enable in this instance of the bridge.")
elif not evt.is_portal:
return await evt.reply("This is not a portal room.")
await evt.portal.set_relay_user(evt.sender)
return await evt.reply("Messages from non-logged-in users in this room will now be bridged "
"through your Instagram account.")

@command_handler(needs_auth=True, management_only=False, help_section=SECTION_CONNECTION,
help_text="Stop relaying messages in this room.")
async def unset_relay(evt: CommandEvent) -> EventID:
if not evt.config["bridge.relay.enabled"]:
return await evt.reply("Relay mode is not enable in this instance of the bridge.")
elif not evt.is_portal:
return await evt.reply("This is not a portal room.")
elif not evt.portal.has_relay:
return await evt.reply("This room does not have a relay user set.")
await evt.portal.set_relay_user(None)
return await evt.reply("Messages from non-logged-in users will no longer be bridged.")

@command_handler(needs_auth=False, management_only=True, help_section=SECTION_CONNECTION,
help_text="Check if you're logged into Instagram")
async def ping(evt: CommandEvent) -> None:
17 changes: 7 additions & 10 deletions mautrix_instagram/portal.py
Original file line number Diff line number Diff line change
@@ -198,10 +198,7 @@ async def _upsert_reaction(self, existing: Optional[DBReaction], intent: IntentA
# endregion
# region Matrix event handling

async def get_displayname(self, user: 'u.User') -> str:
return await self.main_intent.get_room_displayname(self.mxid, user.mxid) or user.mxid

async def _apply_msg_format(self, sender: 'u.User', content: MessageEventContent) -> None:
async def apply_msg_format(self, sender: 'u.User', content: MessageEventContent) -> None:

tpl = (self.config[f"relay.message_formats.[{content.msgtype.value}]"]
or "$sender_displayname: $message")
@@ -218,7 +215,7 @@ async def _apply_msg_format(self, sender: 'u.User', content: MessageEventContent
if content.msgtype == MessageType.EMOTE:
content.msgtype = MessageType.TEXT

async def _get_relay_sender(self, sender: 'u.User', evt_identifier: str
async def get_relay_sender(self, sender: 'u.User', evt_identifier: str
) -> Tuple[Optional['u.User'], bool]:
if await sender.is_logged_in():
return sender, False
@@ -257,7 +254,7 @@ async def _handle_matrix_message(self, sender: 'u.User', message: MessageEventCo
return

orig_sender = sender
sender, is_relay = await self._get_relay_sender(sender, f"message {event_id}")
sender, is_relay = await self.get_relay_sender(sender, f"message {event_id}")

if not sender.is_connected:
await self._send_bridge_error(
@@ -273,13 +270,13 @@ async def _handle_matrix_message(self, sender: 'u.User', message: MessageEventCo
if not sender:
return
elif is_relay:
await self._apply_msg_format(orig_sender, message)
await self.apply_msg_format(orig_sender, message)


if not await sender.is_logged_in() and self.config['bridge.relaybot.enabled']:
self.log.trace(f"Message sent by non instagram-user {sender.mxid}")
async for user in u.User.all_logged_in():
await self._apply_msg_format(sender, message)
await self.apply_msg_format(sender, message)
if await user.is_in_portal(self) and user.is_relay:
await self._handle_matrix_message(user, message, event_id, True)
return
@@ -373,7 +370,7 @@ async def handle_matrix_reaction(self, sender: 'u.User', event_id: EventID,
self.log.debug(f"Ignoring reaction to unknown event {reacting_to}")
return

sender, _ = await self._get_relay_sender(sender, f"message {event_id}")
sender, _ = await self.get_relay_sender(sender, f"message {event_id}")

if not await sender.is_logged_in():
self.log.trace(f"Ignoring reaction by non-logged-in user {sender.mxid}")
@@ -414,7 +411,7 @@ async def handle_matrix_reaction(self, sender: 'u.User', event_id: EventID,

async def handle_matrix_redaction(self, sender: 'u.User', event_id: EventID,
redaction_event_id: EventID) -> None:
sender, _ = await self._get_relay_sender(sender, f"message {event_id}")
sender, _ = await self.get_relay_sender(sender, f"message {event_id}")
if not self.mxid or not await sender.is_logged_in():
return