Add switchable bot modes: default, chatty, and roast
Adds a server-wide mode system with /bcs-mode command. - Default: current hall-monitor behavior unchanged - Chatty: friendly chat participant with proactive replies (~10% chance) - Roast: savage roast mode with proactive replies - Chatty/roast use relaxed moderation thresholds - 5-message cooldown between proactive replies per channel - Bot status updates to reflect active mode - /bcs-status shows current mode and effective thresholds Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -262,14 +262,23 @@ class SentimentCog(commands.Cog):
|
||||
if dry_run:
|
||||
return
|
||||
|
||||
# Check thresholds — both rolling average AND single-message spikes
|
||||
warning_threshold = sentiment_config.get("warning_threshold", 0.6)
|
||||
base_mute_threshold = sentiment_config.get("mute_threshold", 0.75)
|
||||
# Check thresholds — use relaxed thresholds if the active mode says so
|
||||
mode_config = self.bot.get_mode_config()
|
||||
moderation_level = mode_config.get("moderation", "full")
|
||||
if moderation_level == "relaxed" and "relaxed_thresholds" in mode_config:
|
||||
rt = mode_config["relaxed_thresholds"]
|
||||
warning_threshold = rt.get("warning_threshold", 0.80)
|
||||
base_mute_threshold = rt.get("mute_threshold", 0.85)
|
||||
spike_warn = rt.get("spike_warning_threshold", 0.70)
|
||||
spike_mute = rt.get("spike_mute_threshold", 0.85)
|
||||
else:
|
||||
warning_threshold = sentiment_config.get("warning_threshold", 0.6)
|
||||
base_mute_threshold = sentiment_config.get("mute_threshold", 0.75)
|
||||
spike_warn = sentiment_config.get("spike_warning_threshold", 0.5)
|
||||
spike_mute = sentiment_config.get("spike_mute_threshold", 0.8)
|
||||
mute_threshold = self.bot.drama_tracker.get_mute_threshold(
|
||||
message.author.id, base_mute_threshold
|
||||
)
|
||||
spike_warn = sentiment_config.get("spike_warning_threshold", 0.5)
|
||||
spike_mute = sentiment_config.get("spike_mute_threshold", 0.8)
|
||||
|
||||
# Mute: rolling average OR single message spike
|
||||
if drama_score >= mute_threshold or score >= spike_mute:
|
||||
|
||||
Reference in New Issue
Block a user