Files
Breehavior-Monitor/config.yaml
AJ Isaacs a35705d3f1 Initial commit: Breehavior Monitor Discord bot
Discord bot for monitoring chat sentiment and tracking drama using
Ollama LLM on athena.lan. Includes sentiment analysis, slash commands,
drama tracking, and SQL Server persistence via Docker Compose.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 22:39:40 -05:00

53 lines
2.8 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.75
spike_warning_threshold: 0.5 # Single message score that triggers instant warning
spike_mute_threshold: 0.8 # Single message score that triggers instant mute
context_messages: 3 # 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
cooldown_between_analyses: 2 # Seconds between analyzing same user's messages
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."
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."