Prepend relayed media messages with a new message of who sent it
And keep its body text unchanged from its original
This commit is contained in:
parent
587ec98f3e
commit
aa5c066552
|
@ -246,10 +246,10 @@ bridge:
|
|||
m.text: '<b>$sender_displayname</b>: $message'
|
||||
m.notice: '<b>$sender_displayname<b>: $message'
|
||||
m.emote: '* <b>$sender_displayname<b> $message'
|
||||
m.file: '<b>$sender_displayname</b> sent a file'
|
||||
m.image: '<b>$sender_displayname</b> sent an image'
|
||||
m.audio: '<b>$sender_displayname</b> sent an audio file'
|
||||
m.video: '<b>$sender_displayname</b> sent a video'
|
||||
m.file: 'File from <b>$sender_displayname</b>: $message'
|
||||
m.image: 'Image from <b>$sender_displayname</b>: $message'
|
||||
m.audio: 'Audio from <b>$sender_displayname</b>: $message'
|
||||
m.video: 'Video from <b>$sender_displayname</b>: $message'
|
||||
m.location: '<b>$sender_displayname</b> sent a location'
|
||||
|
||||
rpc:
|
||||
|
|
|
@ -791,6 +791,11 @@ class Portal(DBPortal, BasePortal):
|
|||
elif not sender.is_connected:
|
||||
raise Exception("not connected to KakaoTalk chats")
|
||||
elif is_relay:
|
||||
if not message.msgtype.is_text:
|
||||
intro_message = TextMessageEventContent(msgtype=MessageType.TEXT, body=message.body)
|
||||
await self.apply_relay_message_format(orig_sender, intro_message)
|
||||
await self._send_chat(sender, intro_message)
|
||||
else:
|
||||
await self.apply_relay_message_format(orig_sender, message)
|
||||
if message.msgtype == MessageType.TEXT or message.msgtype == MessageType.NOTICE:
|
||||
await self._handle_matrix_text(event_id, sender, message)
|
||||
|
@ -801,6 +806,21 @@ class Portal(DBPortal, BasePortal):
|
|||
else:
|
||||
raise NotImplementedError(f"Unsupported message type {message.msgtype}")
|
||||
|
||||
async def _send_chat(
|
||||
self, sender: u.User, message: TextMessageEventContent, event_id: EventID | None = None
|
||||
) -> Chatlog:
|
||||
converted = await matrix_to_kakaotalk(message, self.mxid, self.log, self.main_intent)
|
||||
try:
|
||||
return await sender.client.send_chat(
|
||||
self.channel_props,
|
||||
text=converted.text,
|
||||
reply_to=converted.reply_to,
|
||||
mentions=converted.mentions,
|
||||
)
|
||||
except CommandException as e:
|
||||
self.log.debug(f"Error handling Matrix message {event_id if event_id else '<extra>'}: {e!s}")
|
||||
raise
|
||||
|
||||
async def _make_dbm(self, event_id: EventID, ktid: Long | None = None) -> DBMessage:
|
||||
dbm = DBMessage(
|
||||
mxid=event_id,
|
||||
|
@ -817,17 +837,7 @@ class Portal(DBPortal, BasePortal):
|
|||
async def _handle_matrix_text(
|
||||
self, event_id: EventID, sender: u.User, message: TextMessageEventContent
|
||||
) -> None:
|
||||
converted = await matrix_to_kakaotalk(message, self.mxid, self.log, self.main_intent)
|
||||
try:
|
||||
chatlog = await sender.client.send_chat(
|
||||
self.channel_props,
|
||||
text=converted.text,
|
||||
reply_to=converted.reply_to,
|
||||
mentions=converted.mentions,
|
||||
)
|
||||
except CommandException as e:
|
||||
self.log.debug(f"Error handling Matrix message {event_id}: {e!s}")
|
||||
raise
|
||||
chatlog = await self._send_chat(sender, message, event_id)
|
||||
await self._make_dbm(event_id, chatlog.logId)
|
||||
self.log.debug(f"Handled Matrix message {event_id} -> {chatlog.logId}")
|
||||
sender.send_remote_checkpoint(
|
||||
|
|
Loading…
Reference in New Issue