From f51ac60a2e6f24430cdd00b1c6f6b5a7a33b97b5 Mon Sep 17 00:00:00 2001 From: retoor Date: Mon, 3 Feb 2025 09:50:35 +0100 Subject: [PATCH] Updated bot. --- src/ragnar/bot.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/ragnar/bot.py b/src/ragnar/bot.py index 238a3a6..28db8cf 100644 --- a/src/ragnar/bot.py +++ b/src/ragnar/bot.py @@ -17,7 +17,7 @@ class Bot: self.name = self.username.split("@")[0] self.amount_of_rants_to_check = 30 - self.sus_users = ["Buffon"] + self.sus_users = vic.get_spammers() self.names = { "no-spam": "Anna", "no-spam1": "Ira", @@ -74,6 +74,18 @@ class Bot: def clean_rant_text(self, rant_text): return rant_text.replace(" ", "").lower() + def get_mentions(self, rant_text): + return re.findall(r"@\w+", rant_text) + + def is_comment_deletable(self, rant_id, username): + rant = self.api.get_rant(rant_id) + for comment in rant.get("comments", []): + print("Checking if sus comment: ", comment["body"]) + if comment.get("user_username") == username and comment.get("user_score") <= 10: + vic.register_spammer(comment["user_username"]) + return True + return False + @method_cache def is_sus_content(self, content): clean_text = self.clean_rant_text(content) @@ -85,6 +97,19 @@ class Bot: log.info(f"Regex trigger {regex} matched!") return True elif trigger in clean_text: + if trigger == "ragnar": + mentions = self.get_mentions(content) + for mention in mentions: + if mention == "@ragnar": + continue + username = mention.strip("@") + if self.is_comment_deletable(username): + vic.register_spammer(mention.strip("@")) + self.api.post_comment(rant_id, f"User {username} is sucessfully registered as spammer.") + else: + self.api.post_comment(rant_id, f"Can't register user {username} as spammer. User is trusted.") + if len(mentions) > 1: + return False log.info(f"Trigger {trigger} matched!") return True return False @@ -121,6 +146,11 @@ class Bot: self.rsleepii() rant = self.api.get_rant(rant_id) for comment in rant.get("comments", []): + for spammer in self.sus_users: + if comment['user_username'] == spammer: + vic.downvote_comment(comment['id']) + return False + print("Checking if sus comment: ", comment["body"]) if "@ragnar" in comment.get("body", "").lower(): print("Ragnar is mentioned, so flagging as sus comment.")