From 269ab7e1a0f35c4ecf14bffba93ab1695841364b Mon Sep 17 00:00:00 2001 From: TizzySaurus <47674925+TizzySaurus@users.noreply.github.com> Date: Mon, 4 Oct 2021 21:00:59 +0100 Subject: Improvements to anti-spam log message - Removed redundant f-string - Made it so that messages with attachments will *always* upload to the log site. - Made it so that truncates messages will also upload to the paste site, for full viewing. - Fixed a previously unnoticed bug where truncating didn't account for extra characters of the ellipses. --- bot/exts/filters/antispam.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py index 70c1168bf..dc8d24bba 100644 --- a/bot/exts/filters/antispam.py +++ b/bot/exts/filters/antispam.py @@ -83,7 +83,11 @@ class DeletionContext: ) # For multiple messages or those with excessive newlines, use the logs API - if len(self.messages) > 1 or 'newlines' in self.rules: + if any(( + len(self.messages) > 1, + self.messages[0].attachments, + self.messages[0].count('\n') > 15 + )): url = await modlog.upload_log(self.messages.values(), actor_id, self.attachments) mod_alert_message += f"A complete log of the offending messages can be found [here]({url})" else: @@ -93,9 +97,11 @@ class DeletionContext: remaining_chars = 4080 - len(mod_alert_message) if len(content) > remaining_chars: - content = content[:remaining_chars] + "..." + url = await modlog.upload_log([message], actor_id, self.attachments) + log_site_msg = f"The full message can be found [here]({url})" + content = content[:remaining_chars - (3 + len(log_site_msg))] + "..." - mod_alert_message += f"{content}" + mod_alert_message += content *_, last_message = self.messages.values() await modlog.send_log_message( -- cgit v1.2.3 From 74493f202d3478d6159dcfc0dbe4ee27b6334fc6 Mon Sep 17 00:00:00 2001 From: TizzySaurus <47674925+TizzySaurus@users.noreply.github.com> Date: Tue, 5 Oct 2021 11:52:32 +0100 Subject: Make attachments check explicit Co-authored-by: Matteo Bertucci --- bot/exts/filters/antispam.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py index dc8d24bba..7f4b5a627 100644 --- a/bot/exts/filters/antispam.py +++ b/bot/exts/filters/antispam.py @@ -85,7 +85,7 @@ class DeletionContext: # For multiple messages or those with excessive newlines, use the logs API if any(( len(self.messages) > 1, - self.messages[0].attachments, + len(self.messages[0].attachments) > 0, self.messages[0].count('\n') > 15 )): url = await modlog.upload_log(self.messages.values(), actor_id, self.attachments) -- cgit v1.2.3 From 62ec6f6c52921854e00e0af71490f050adce0749 Mon Sep 17 00:00:00 2001 From: TizzySaurus <47674925+TizzySaurus@users.noreply.github.com> Date: Tue, 5 Oct 2021 14:00:10 +0100 Subject: Fix if statement error Adds `messages_as_list` for easy indexing of `self.messages.values()` Also updated the comment above if statement and tidied some code --- bot/exts/filters/antispam.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py index 7f4b5a627..3b30817df 100644 --- a/bot/exts/filters/antispam.py +++ b/bot/exts/filters/antispam.py @@ -46,7 +46,6 @@ RULE_FUNCTION_MAPPING = { @dataclass class DeletionContext: """Represents a Deletion Context for a single spam event.""" - members: frozenset[Member] triggered_in: TextChannel channels: set[TextChannel] = field(default_factory=set) @@ -82,34 +81,34 @@ class DeletionContext: f"**Rules:** {', '.join(rule for rule in self.rules)}\n" ) - # For multiple messages or those with excessive newlines, use the logs API + messages_as_list = list(self.messages.values()) + first_message = messages_as_list[0] + # For multiple messages and those with attachments or excessive newlines, use the logs API if any(( - len(self.messages) > 1, - len(self.messages[0].attachments) > 0, - self.messages[0].count('\n') > 15 + len(messages_as_list) > 1, + len(first_message.attachments) > 0, + first_message.content.count('\n') > 15 )): url = await modlog.upload_log(self.messages.values(), actor_id, self.attachments) mod_alert_message += f"A complete log of the offending messages can be found [here]({url})" else: mod_alert_message += "Message:\n" - [message] = self.messages.values() - content = message.clean_content + content = first_message.clean_content remaining_chars = 4080 - len(mod_alert_message) if len(content) > remaining_chars: - url = await modlog.upload_log([message], actor_id, self.attachments) + url = await modlog.upload_log([first_message], actor_id, self.attachments) log_site_msg = f"The full message can be found [here]({url})" content = content[:remaining_chars - (3 + len(log_site_msg))] + "..." mod_alert_message += content - *_, last_message = self.messages.values() await modlog.send_log_message( icon_url=Icons.filtering, colour=Colour(Colours.soft_red), title="Spam detected!", text=mod_alert_message, - thumbnail=last_message.author.avatar_url_as(static_format="png"), + thumbnail=first_message.author.avatar_url_as(static_format="png"), channel_id=Channels.mod_alerts, ping_everyone=AntiSpamConfig.ping_everyone ) -- cgit v1.2.3 From 025efcde7c5c478ecdc91ecd4c73f13bdfa6bdad Mon Sep 17 00:00:00 2001 From: TizzySaurus <47674925+TizzySaurus@users.noreply.github.com> Date: Tue, 5 Oct 2021 16:17:20 +0100 Subject: Fix linting Reverted accidental line deletion --- bot/exts/filters/antispam.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py index 3b30817df..8bae159d2 100644 --- a/bot/exts/filters/antispam.py +++ b/bot/exts/filters/antispam.py @@ -46,6 +46,7 @@ RULE_FUNCTION_MAPPING = { @dataclass class DeletionContext: """Represents a Deletion Context for a single spam event.""" + members: frozenset[Member] triggered_in: TextChannel channels: set[TextChannel] = field(default_factory=set) -- cgit v1.2.3