From f1716d76360c25b289337df7a5b8e5cf743eb092 Mon Sep 17 00:00:00 2001 From: Mega-JC <65417594+Mega-JC@users.noreply.github.com> Date: Sun, 28 Jul 2024 16:31:08 +0200 Subject: [PATCH] Refactor 'crosspost_cmp()' to use better message content comparison function, split 'message_length_threshold' into same and cross-channel cases --- pcbot/exts/anti_crosspost.py | 51 ++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/pcbot/exts/anti_crosspost.py b/pcbot/exts/anti_crosspost.py index 86ef729..38c0ea9 100644 --- a/pcbot/exts/anti_crosspost.py +++ b/pcbot/exts/anti_crosspost.py @@ -190,7 +190,9 @@ async def on_message(self, message: discord.Message): ): return - logger.debug(f"Received noteworthy message from {message.author.name}: {message.jump_url}") + logger.debug( + f"Received noteworthy message from {message.author.name}: {message.jump_url}" + ) # Attempt to enforce the cache size limit for user_id in list(self.crossposting_cache.keys()): @@ -216,18 +218,21 @@ async def on_message(self, message: discord.Message): # Check for crossposts or duplicates in existing message groups for messages in user_cache["message_groups"]: for existing_message in messages: - if ( - message.channel.id == existing_message.channel.id - and len(message.content) - < self.same_channel_message_length_threshold - ) or ( - message.channel.id != existing_message.channel.id - and len(message.content) - < self.cross_channel_message_length_threshold + if message.content and ( + ( + message.channel.id == existing_message.channel.id + and len(message.content) + < self.same_channel_message_length_threshold + ) + or ( + message.channel.id != existing_message.channel.id + and len(message.content) + < self.cross_channel_message_length_threshold + ) ): # enforce same-channel and cross-channel message length thresholds in order for them to be considered crossposts continue - + elif ( await crosspost_cmp(message, existing_message) and message.created_at.timestamp() @@ -239,18 +244,20 @@ async def on_message(self, message: discord.Message): f"Found crosspost for user {message.author.name}, message URL {message.jump_url}!!!!!!!!!!" ) - # try: - # alert_message = await message.reply( - # "This message is a recent crosspost/duplicate among the following messages: " - # + ", ".join([m.jump_url for m in messages]) - # + ".\n\nPlease delete all duplicate messages." - # ) - # user_cache["message_to_alert"][ - # message.id - # ] = alert_message.id - # logger.debug(f"Sent alert message for crosspost URL {message.jump_url}") - # except discord.HTTPException as e: - # logger.debug(f"Failed to send alert message: {e}") + try: + alert_message = await message.reply( + "This message is a recent crosspost/duplicate among the following messages: " + + ", ".join([m.jump_url for m in messages]) + + ".\n\nPlease delete all duplicate messages." + ) + user_cache["message_to_alert"][ + message.id + ] = alert_message.id + logger.debug( + f"Sent alert message for crosspost URL {message.jump_url}" + ) + except discord.HTTPException as e: + logger.debug(f"Failed to send alert message: {e}") break else: continue