Merge remote-tracking branch 'origin/sumner/bri-2496'
This commit is contained in:
@@ -2964,9 +2964,10 @@ class Portal(DBPortal, BasePortal):
|
|||||||
msg_id: TelegramID,
|
msg_id: TelegramID,
|
||||||
data: MessageReactions,
|
data: MessageReactions,
|
||||||
dbm: DBMessage | None = None,
|
dbm: DBMessage | None = None,
|
||||||
|
timestamp: datetime | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
try:
|
try:
|
||||||
await self.handle_telegram_reactions(source, msg_id, data, dbm)
|
await self.handle_telegram_reactions(source, msg_id, data, dbm, timestamp)
|
||||||
except Exception:
|
except Exception:
|
||||||
self.log.exception(f"Error handling reactions in message {msg_id}")
|
self.log.exception(f"Error handling reactions in message {msg_id}")
|
||||||
|
|
||||||
@@ -2976,6 +2977,7 @@ class Portal(DBPortal, BasePortal):
|
|||||||
msg_id: TelegramID,
|
msg_id: TelegramID,
|
||||||
data: MessageReactions,
|
data: MessageReactions,
|
||||||
dbm: DBMessage | None = None,
|
dbm: DBMessage | None = None,
|
||||||
|
timestamp: datetime | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
if self.peer_type == "channel" and not self.megagroup:
|
if self.peer_type == "channel" and not self.megagroup:
|
||||||
# We don't know who reacted in a channel, so we can't bridge it properly either
|
# We don't know who reacted in a channel, so we can't bridge it properly either
|
||||||
@@ -3004,10 +3006,16 @@ class Portal(DBPortal, BasePortal):
|
|||||||
# recent_reactions = resp.reactions
|
# recent_reactions = resp.reactions
|
||||||
|
|
||||||
async with self.reaction_lock(dbm.mxid):
|
async with self.reaction_lock(dbm.mxid):
|
||||||
await self._handle_telegram_reactions_locked(dbm, recent_reactions, total_count)
|
await self._handle_telegram_reactions_locked(
|
||||||
|
dbm, recent_reactions, total_count, timestamp=timestamp
|
||||||
|
)
|
||||||
|
|
||||||
async def _handle_telegram_reactions_locked(
|
async def _handle_telegram_reactions_locked(
|
||||||
self, msg: DBMessage, reaction_list: list[MessagePeerReaction], total_count: int
|
self,
|
||||||
|
msg: DBMessage,
|
||||||
|
reaction_list: list[MessagePeerReaction],
|
||||||
|
total_count: int,
|
||||||
|
timestamp: datetime | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
reactions = {
|
reactions = {
|
||||||
p.Puppet.get_id_from_peer(reaction.peer_id): reaction.reaction
|
p.Puppet.get_id_from_peer(reaction.peer_id): reaction.reaction
|
||||||
@@ -3035,7 +3043,7 @@ class Portal(DBPortal, BasePortal):
|
|||||||
self.log.debug(f"Bridging reaction {new_emoji} by {sender} to {msg.tgid}")
|
self.log.debug(f"Bridging reaction {new_emoji} by {sender} to {msg.tgid}")
|
||||||
puppet: p.Puppet = await p.Puppet.get_by_tgid(sender)
|
puppet: p.Puppet = await p.Puppet.get_by_tgid(sender)
|
||||||
mxid = await puppet.intent_for(self).react(
|
mxid = await puppet.intent_for(self).react(
|
||||||
msg.mx_room, msg.mxid, variation_selector.add(new_emoji)
|
msg.mx_room, msg.mxid, variation_selector.add(new_emoji), timestamp=timestamp
|
||||||
)
|
)
|
||||||
await DBReaction(
|
await DBReaction(
|
||||||
mxid=mxid,
|
mxid=mxid,
|
||||||
@@ -3061,7 +3069,7 @@ class Portal(DBPortal, BasePortal):
|
|||||||
intent = puppet.intent_for(self)
|
intent = puppet.intent_for(self)
|
||||||
await intent.redact(changed_reaction.mx_room, changed_reaction.mxid)
|
await intent.redact(changed_reaction.mx_room, changed_reaction.mxid)
|
||||||
changed_reaction.mxid = await intent.react(
|
changed_reaction.mxid = await intent.react(
|
||||||
msg.mx_room, msg.mxid, variation_selector.add(new_emoji)
|
msg.mx_room, msg.mxid, variation_selector.add(new_emoji), timestamp=timestamp
|
||||||
)
|
)
|
||||||
changed_reaction.reaction = new_emoji
|
changed_reaction.reaction = new_emoji
|
||||||
await changed_reaction.save()
|
await changed_reaction.save()
|
||||||
@@ -3223,7 +3231,9 @@ class Portal(DBPortal, BasePortal):
|
|||||||
return
|
return
|
||||||
if isinstance(evt, Message) and evt.reactions:
|
if isinstance(evt, Message) and evt.reactions:
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.try_handle_telegram_reactions(source, dbm.tgid, evt.reactions, dbm=dbm)
|
self.try_handle_telegram_reactions(
|
||||||
|
source, dbm.tgid, evt.reactions, dbm=dbm, timestamp=evt.date
|
||||||
|
)
|
||||||
)
|
)
|
||||||
await self._send_delivery_receipt(event_id)
|
await self._send_delivery_receipt(event_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user