New mode that gasses people up for their plays and takes using gaming hype terminology, but reads the room and dials back to genuine encouragement when someone's tilted or frustrated. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
130 lines
4.9 KiB
YAML
130 lines
4.9 KiB
YAML
bot:
|
|
prefix: "!"
|
|
status: "Monitoring vibes..."
|
|
|
|
monitoring:
|
|
dry_run: false # Log analysis results to channel but don't warn/mute
|
|
enabled: true
|
|
channels: [] # Empty = monitor all channels. Add channel IDs to limit.
|
|
ignored_users: [] # User IDs to never monitor (bot owner, etc.)
|
|
immune_roles: [] # Role IDs that are immune to monitoring
|
|
|
|
sentiment:
|
|
warning_threshold: 0.6
|
|
mute_threshold: 0.65
|
|
spike_warning_threshold: 0.5 # Single message score that triggers instant warning
|
|
spike_mute_threshold: 0.7 # Single message score that triggers instant mute
|
|
context_messages: 8 # Number of previous messages to include as context
|
|
rolling_window_size: 10 # Number of messages to track per user
|
|
rolling_window_minutes: 15 # Time window for tracking
|
|
batch_window_seconds: 10 # Wait this long for more messages before analyzing (debounce)
|
|
escalation_threshold: 0.25 # Triage toxicity score that triggers re-analysis with heavy model
|
|
|
|
game_channels:
|
|
gta-online: "GTA Online"
|
|
battlefield: "Battlefield"
|
|
warzone: "Call of Duty: Warzone"
|
|
cod-zombies: "Call of Duty: Zombies"
|
|
|
|
topic_drift:
|
|
enabled: true
|
|
remind_cooldown_minutes: 10 # Don't remind same user more than once per this window
|
|
escalation_count: 3 # After this many reminds, DM the server owner
|
|
reset_minutes: 60 # Reset off-topic count after this much on-topic behavior
|
|
|
|
timeouts:
|
|
escalation_minutes: [5, 15, 30, 60] # Escalating timeout durations
|
|
offense_reset_minutes: 120 # Reset offense counter after this much good behavior
|
|
warning_cooldown_minutes: 5 # Don't warn same user more than once per this window
|
|
|
|
messages:
|
|
warning: "Easy there, {username}. The Breehavior Monitor is watching. \U0001F440"
|
|
mute_title: "\U0001F6A8 BREEHAVIOR ALERT \U0001F6A8"
|
|
mute_description: "{username} has been placed in timeout for {duration}.\n\nReason: Sustained elevated drama levels detected.\nDrama Score: {score}/1.0\nCategories: {categories}\n\nCool down and come back when you've resolved your skill issues."
|
|
topic_remind: "Hey {username}, this is a gaming server \U0001F3AE — maybe take the personal stuff to DMs?"
|
|
topic_nudge: "{username}, we've chatted about this before — let's keep it to gaming talk in here. Personal drama belongs in DMs."
|
|
topic_owner_dm: "Heads up: {username} keeps going off-topic with personal drama in #{channel}. They've been reminded {count} times. Might need a word."
|
|
channel_redirect: "Hey {username}, that sounds like {game} talk — head over to {channel} for that!"
|
|
|
|
modes:
|
|
default_mode: roast
|
|
proactive_cooldown_messages: 8 # Minimum messages between proactive replies
|
|
|
|
default:
|
|
label: "Default"
|
|
description: "Hall-monitor moderation mode"
|
|
prompt_file: "chat_personality.txt"
|
|
proactive_replies: false
|
|
reply_chance: 0.0
|
|
moderation: full
|
|
|
|
chatty:
|
|
label: "Chatty"
|
|
description: "Friendly chat participant"
|
|
prompt_file: "chat_chatty.txt"
|
|
proactive_replies: true
|
|
reply_chance: 0.10
|
|
moderation: relaxed
|
|
relaxed_thresholds:
|
|
warning_threshold: 0.80
|
|
mute_threshold: 0.85
|
|
spike_warning_threshold: 0.70
|
|
spike_mute_threshold: 0.85
|
|
|
|
roast:
|
|
label: "Roast"
|
|
description: "Savage roast mode"
|
|
prompt_file: "chat_roast.txt"
|
|
proactive_replies: true
|
|
reply_chance: 0.20
|
|
moderation: relaxed
|
|
relaxed_thresholds:
|
|
warning_threshold: 0.85
|
|
mute_threshold: 0.90
|
|
spike_warning_threshold: 0.75
|
|
spike_mute_threshold: 0.90
|
|
|
|
hype:
|
|
label: "Hype"
|
|
description: "Your biggest fan"
|
|
prompt_file: "chat_hype.txt"
|
|
proactive_replies: true
|
|
reply_chance: 0.15
|
|
moderation: relaxed
|
|
relaxed_thresholds:
|
|
warning_threshold: 0.80
|
|
mute_threshold: 0.85
|
|
spike_warning_threshold: 0.70
|
|
spike_mute_threshold: 0.85
|
|
|
|
english_teacher:
|
|
label: "English Teacher"
|
|
description: "Insufferable grammar nerd mode"
|
|
prompt_file: "chat_english_teacher.txt"
|
|
proactive_replies: true
|
|
reply_chance: 0.20
|
|
moderation: relaxed
|
|
relaxed_thresholds:
|
|
warning_threshold: 0.85
|
|
mute_threshold: 0.90
|
|
spike_warning_threshold: 0.75
|
|
spike_mute_threshold: 0.90
|
|
|
|
polls:
|
|
enabled: true
|
|
duration_hours: 4
|
|
cooldown_minutes: 60 # Per-channel cooldown between auto-polls
|
|
|
|
coherence:
|
|
enabled: true
|
|
drop_threshold: 0.3 # How far below baseline triggers alert
|
|
absolute_floor: 0.5 # Don't alert if score is above this regardless
|
|
cooldown_minutes: 30 # Don't alert same user more than once per window
|
|
messages:
|
|
intoxicated: "Someone get {username} some water... or maybe cut them off."
|
|
tired: "{username} might need some sleep, that message was rough."
|
|
angry_typing: "{username} is typing so hard their keyboard is scared."
|
|
mobile_keyboard: "{username}'s thumbs are having a rough day."
|
|
language_barrier: "Having trouble there, {username}? Take your time."
|
|
default: "You okay there, {username}? That message was... something."
|