aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/umabot/rules/umaddit_removal.py56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/umabot/rules/umaddit_removal.py b/src/umabot/rules/umaddit_removal.py
index 759c784..91562d4 100644
--- a/src/umabot/rules/umaddit_removal.py
+++ b/src/umabot/rules/umaddit_removal.py
@@ -1,4 +1,4 @@
-"""Rule to remove posts containing umaddit references."""
+"""Rule to remove posts containing umaddit and umagusher references."""
import re
import praw.models
@@ -6,25 +6,31 @@ from .base import Rule
class UmadditRemovalRule(Rule):
- """Removes posts containing umaddit subreddit references (r/umaddit, /umaddit)."""
+ """Removes posts containing umaddit or umagusher subreddit references (r/umaddit, /umaddit, r/umagusher, /umagusher)."""
def __init__(self, config):
- """Initialize the umaddit removal rule."""
+ """Initialize the umaddit/umagusher removal rule."""
super().__init__(config)
- # Regex pattern to match subreddit references to umaddit
- # Matches: r/umaddit, /umaddit (case-insensitive)
- # Word boundary after umaddit ensures we don't match "umaddit123" or similar
+ # Regex patterns to match subreddit references
+ # Umaddit: only matches with subreddit prefix (r/umaddit, /umaddit)
+ # Umagusher: matches with or without prefix, and handles whitespace variations (uma gusher, uma-gusher, etc.)
self.umaddit_pattern = re.compile(r'(?:r/|/)umaddit\b', re.IGNORECASE)
+ # Match umagusher with prefix, without prefix, or with whitespace variations
+ # Pattern allows: r/umagusher, /umagusher, umagusher, uma gusher, uma-gusher, uma_gusher, umagusher123
+ # Uses negative lookbehind to prevent false matches like "forumagusher"
+ # No word boundary at end to catch variations like "umagusher123"
+ self.umagusher_pattern = re.compile(r'(?<![a-z])(?:r/|/)?uma[\s\-_]?gusher', re.IGNORECASE)
def should_remove(self, submission: praw.models.Submission) -> bool:
- """Check if a post contains umaddit subreddit references."""
+ """Check if a post contains umaddit or umagusher subreddit references."""
if not submission.author:
return False
- # Check if the post contains umaddit subreddit references
- if self._contains_umaddit_reference(submission):
+ # Check if the post contains umaddit or umagusher subreddit references
+ reference_type = self._contains_forbidden_reference(submission)
+ if reference_type:
self.logger.info(
- f"Post by {submission.author.name} silently removed for containing umaddit subreddit reference "
+ f"Post by {submission.author.name} silently removed for containing {reference_type} subreddit reference "
f"(post ID: {submission.id})"
)
return True
@@ -32,11 +38,15 @@ class UmadditRemovalRule(Rule):
return False
def get_removal_message(self, submission: praw.models.Submission) -> str:
- """Get the umaddit removal message - silent removal."""
+ """Get the umaddit/umagusher removal message - silent removal."""
return "" # Silent removal - no message sent
- def _contains_umaddit_reference(self, submission: praw.models.Submission) -> bool:
- """Check if a submission contains any umaddit subreddit references."""
+ def _contains_forbidden_reference(self, submission: praw.models.Submission) -> str:
+ """Check if a submission contains any umaddit or umagusher subreddit references.
+
+ Returns:
+ str: The type of reference found ('umaddit' or 'umagusher'), or empty string if none found.
+ """
try:
# Get all text content to check
content_to_check = []
@@ -53,19 +63,27 @@ class UmadditRemovalRule(Rule):
if submission.url:
content_to_check.append(submission.url)
- # Check each piece of content for umaddit subreddit references
+ # Check each piece of content for forbidden subreddit references
for content in content_to_check:
if content:
- # Use regex search
+ # Check for umaddit references
match = self.umaddit_pattern.search(content)
if match:
self.logger.info(
f"Found umaddit subreddit reference '{match.group()}' in post {submission.id}"
)
- return True
+ return "umaddit"
+
+ # Check for umagusher references
+ match = self.umagusher_pattern.search(content)
+ if match:
+ self.logger.info(
+ f"Found umagusher subreddit reference '{match.group()}' in post {submission.id}"
+ )
+ return "umagusher"
- return False
+ return ""
except Exception as e:
- self.logger.error(f"Error checking umaddit references for submission {submission.id}: {e}")
- return False \ No newline at end of file
+ self.logger.error(f"Error checking forbidden references for submission {submission.id}: {e}")
+ return "" \ No newline at end of file