Files
Breehavior-Monitor/config.yaml
AJ Isaacs ac4057b906 Add hype mode: positive/supportive teammate personality
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>
2026-02-23 20:02:39 -05:00

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."