Add simple edit event deduplication
This commit is contained in:
@@ -775,6 +775,19 @@ class Portal:
|
|||||||
elif not config["bridge.edits_as_replies"]:
|
elif not config["bridge.edits_as_replies"]:
|
||||||
self.log.debug("Edits as replies disabled, ignoring edit event...")
|
self.log.debug("Edits as replies disabled, ignoring edit event...")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
tg_space = self.tgid if self.peer_type == "channel" else source.tgid
|
||||||
|
temporary_identifier = f"${random.randint(1000000000000,9999999999999)}TGBRIDGEDITEMP"
|
||||||
|
duplicate_found = self.is_duplicate(evt, (temporary_identifier, tg_space))
|
||||||
|
if duplicate_found:
|
||||||
|
mxid, other_tg_space = duplicate_found
|
||||||
|
if tg_space != other_tg_space:
|
||||||
|
msg = DBMessage.query.get((evt.id, tg_space))
|
||||||
|
msg.mxid = mxid
|
||||||
|
msg.mx_room = self.mxid
|
||||||
|
self.db.commit()
|
||||||
|
return
|
||||||
|
|
||||||
evt.reply_to_msg_id = evt.id
|
evt.reply_to_msg_id = evt.id
|
||||||
text, html = await formatter.telegram_event_to_matrix(evt, source,
|
text, html = await formatter.telegram_event_to_matrix(evt, source,
|
||||||
config["bridge.native_replies"],
|
config["bridge.native_replies"],
|
||||||
@@ -785,11 +798,14 @@ class Portal:
|
|||||||
response = await intent.send_text(self.mxid, text, html=html)
|
response = await intent.send_text(self.mxid, text, html=html)
|
||||||
|
|
||||||
mxid = response["event_id"]
|
mxid = response["event_id"]
|
||||||
tg_space = self.tgid if self.peer_type == "channel" else source.tgid
|
|
||||||
|
|
||||||
msg = DBMessage.query.get((evt.id, tg_space))
|
msg = DBMessage.query.get((evt.id, tg_space))
|
||||||
msg.mxid = mxid
|
msg.mxid = mxid
|
||||||
msg.mx_room = self.mxid
|
msg.mx_room = self.mxid
|
||||||
|
DBMessage.query \
|
||||||
|
.filter(DBMessage.mx_room == self.mxid,
|
||||||
|
DBMessage.mxid == temporary_identifier) \
|
||||||
|
.update({"mxid": mxid})
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
async def handle_telegram_message(self, source, sender, evt):
|
async def handle_telegram_message(self, source, sender, evt):
|
||||||
|
|||||||
Reference in New Issue
Block a user