diff options
| author | Fuwn <[email protected]> | 2025-09-21 15:30:44 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-09-21 15:30:44 -0700 |
| commit | 9e9ef2ef28015336830ae1e1b888b0a233ce3b84 (patch) | |
| tree | 2e81722b13cb0c7f3ca277e81cb5d864919fa8ac /src | |
| parent | fix(base): NO_TEXT error handling (diff) | |
| download | umabot-9e9ef2ef28015336830ae1e1b888b0a233ce3b84.tar.xz umabot-9e9ef2ef28015336830ae1e1b888b0a233ce3b84.zip | |
feat(irm): Rephrase low-effort content
Diffstat (limited to 'src')
| -rw-r--r-- | src/umabot/rules/intelligent_moderator_base.py | 10 | ||||
| -rw-r--r-- | src/umabot/rules/intelligent_roleplay_moderator.py | 22 |
2 files changed, 16 insertions, 16 deletions
diff --git a/src/umabot/rules/intelligent_moderator_base.py b/src/umabot/rules/intelligent_moderator_base.py index a78359c..781057a 100644 --- a/src/umabot/rules/intelligent_moderator_base.py +++ b/src/umabot/rules/intelligent_moderator_base.py @@ -21,7 +21,7 @@ class IntelligentModeratorBase(ABC): You are an expert moderator for an in-character subreddit. Your job is to evaluate in-character posts and determine: 1. Whether this post would be better flaired as "Art" instead of "In Character" -2. Whether this is low-effort content that should be removed +2. Whether this content needs more development and should be removed For each post, respond with a JSON object containing: {{ @@ -39,10 +39,10 @@ Guidelines for Art vs In-Character: - Having media (images/videos) does NOT automatically make it an Art post - consider the primary purpose and narrative context - Posts that describe building, creating, or doing something from a character's perspective should stay In Character even if they show the result -Guidelines for Low-Effort: -- A post is "low-effort" if it lacks substance, creativity, or meaningful in-character content +Guidelines for Content Needing Development: +- Content "needs more development" if it lacks substance, creativity, or meaningful in-character content - Consider factors like: word count, creativity, effort, engagement potential, originality -- Be strict but fair - err on the side of allowing content unless it's clearly low quality +- Be strict but fair - err on the side of allowing content unless it's clearly brief or lacking development - High confidence (0.8+) for clear cases, lower confidence for borderline cases Post to evaluate: @@ -180,7 +180,7 @@ Word Count: {word_count} # Change flair to Art and notify user (priority over removal) actions.append("CHANGE_FLAIR_TO_ART") elif evaluation["is_low_effort"]: - # Remove low-effort post and notify user + # Remove brief content post and notify user actions.append("REMOVE_POST") else: # Post is good quality roleplay - allow it diff --git a/src/umabot/rules/intelligent_roleplay_moderator.py b/src/umabot/rules/intelligent_roleplay_moderator.py index 50aa7d6..a0d29cc 100644 --- a/src/umabot/rules/intelligent_roleplay_moderator.py +++ b/src/umabot/rules/intelligent_roleplay_moderator.py @@ -43,8 +43,8 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): return False # Don't remove, just change flair elif evaluation["is_low_effort"]: - # Remove low-effort post and notify user - self._notify_low_effort_removal(submission, evaluation) + # Remove brief post and notify user + self._notify_brief_content_removal(submission, evaluation) return True # Remove the post # Post is good quality roleplay - allow it @@ -55,7 +55,7 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): return False # Don't remove on error def get_removal_message(self, submission: praw.models.Submission) -> str: - """Get removal message for low-effort posts.""" + """Get removal message for brief content posts.""" return "" # We send mod mail instead of commenting # Abstract method implementations for IntelligentModeratorBase @@ -156,8 +156,8 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): except Exception as e: self.logger.error(f"Error sending art flair notification for {submission.id}: {e}") - def _notify_low_effort_removal(self, submission: praw.models.Submission, evaluation: dict) -> None: - """Send mod mail about low-effort removal.""" + def _notify_brief_content_removal(self, submission: praw.models.Submission, evaluation: dict) -> None: + """Send mod mail about brief content removal.""" try: username = submission.author.name subject = "Your in-character post has been removed" @@ -165,7 +165,7 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): # Format reasoning based on configuration formatted_reasoning = self._format_reasoning(evaluation) - message = f"Hello u/{username},\n\nYour in-character post has been removed because it was determined to be low-effort content." + message = f"Hello u/{username},\n\nYour in-character post has been removed because it needs more development to meet our community standards." # Add reasoning if configured if formatted_reasoning: @@ -174,12 +174,12 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): message += f"\n\nPost link: https://reddit.com{submission.permalink}\n\nTo improve your in-character posts, consider:\n- Adding more detailed descriptions\n- Creating engaging scenarios\n- Including meaningful character interactions\n- Ensuring your content adds value to the community\n\nIf you enjoy active roleplay, join the official r/okbuddyumamusume Discord server! It features a comprehensive layout of channels, forums, roles, bots, events, and more! https://discord.gg/okbuddyumamusume\n\nIf you believe this was done in error, please contact the moderators via Mod Mail.\n\nThank you for understanding!" submission.author.message(subject, message) - self.logger.info(f"Sent low-effort removal notification to {username}") + self.logger.info(f"Sent brief content removal notification to {username}") # Log to Discord if configured if self.discord_client: # Get brief reason for Discord log - brief_reason = "Low-effort content" + brief_reason = "Needs more development" if formatted_reasoning: brief_reason = formatted_reasoning[:100] + "..." if len(formatted_reasoning) > 100 else formatted_reasoning @@ -193,7 +193,7 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): ) except Exception as e: - self.logger.error(f"Error sending low-effort notification for {submission.id}: {e}") + self.logger.error(f"Error sending brief content notification for {submission.id}: {e}") def _format_reasoning(self, evaluation: dict, is_art_flair_change: bool = False) -> str: """Format reasoning based on the configured reasoning level.""" @@ -222,7 +222,7 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): # Extract key issues issues = [] - # Check for common low-effort indicators + # Check for common brief content indicators if any(word in reasoning_lower for word in ['short', 'brief', 'minimal', 'little']): issues.append('short') if any(word in reasoning_lower for word in ['word count', 'words', 'length']): @@ -232,7 +232,7 @@ class IntelligentRoleplayModerator(Rule, IntelligentModeratorBase): issues.append('no plot development') if any(word in reasoning_lower for word in ['effort', 'substance', 'content']): if 'low' in reasoning_lower or 'lack' in reasoning_lower: - issues.append('low-effort') + issues.append('needs more development') if any(word in reasoning_lower for word in ['creativity', 'originality']): if 'lack' in reasoning_lower or 'no' in reasoning_lower: issues.append('lacks creativity') |