2026-05-13 16:05:56 +07:00
|
|
|
# Discord Bot Configuration
|
|
|
|
|
DISCORD_TOKEN=your_bot_token_here
|
2026-06-09 10:16:04 +07:00
|
|
|
MONITOR_GUILD_ID=your_guild_id_here
|
|
|
|
|
TEXT_GUILD_ID=optional_text_guild_id
|
|
|
|
|
TEXT_CHANNEL_ID=optional_text_channel_id
|
2026-05-13 16:05:56 +07:00
|
|
|
|
|
|
|
|
# Recording Configuration
|
|
|
|
|
RECORDINGS_DIR=./recordings
|
|
|
|
|
RECORDING_SEGMENT_MS=5000
|
|
|
|
|
VERBOSE=false
|
|
|
|
|
|
|
|
|
|
# Decoder Configuration
|
|
|
|
|
DECODER_ROTATE_MS=5000
|
|
|
|
|
DECODER_COOLDOWN_MS=30000
|
|
|
|
|
|
|
|
|
|
# Audio Configuration
|
|
|
|
|
AUDIO_STREAM_SILENCE_DURATION_MS=3000
|
|
|
|
|
PACKET_FILTER_MIN_SIZE=8
|
|
|
|
|
OPUS_FRAME_SIZE=960
|
|
|
|
|
AUDIO_SAMPLE_RATE=48000
|
|
|
|
|
AUDIO_CHANNELS=2
|
|
|
|
|
AVATAR_SIZE=64
|
|
|
|
|
|
|
|
|
|
# Webserver Configuration
|
|
|
|
|
WEBSERVER_PORT=3000
|
|
|
|
|
|
|
|
|
|
# Connection Configuration
|
|
|
|
|
VOICE_CONNECTION_TIMEOUT_MS=15000
|
|
|
|
|
RECONNECT_TIMEOUT_MS=5000
|
2026-05-13 16:57:07 +07:00
|
|
|
|
2026-05-15 15:58:38 +07:00
|
|
|
# Voice Recording Selection
|
|
|
|
|
# VOICE_GUILD_ID falls back to legacy GUILD_ID when omitted.
|
|
|
|
|
GUILD_ID=legacy_voice_guild_id
|
|
|
|
|
VOICE_GUILD_ID=voice_guild_id
|
|
|
|
|
VOICE_CHANNEL_ID=voice_channel_id
|
|
|
|
|
|
2026-05-13 16:57:07 +07:00
|
|
|
# Logging Configuration
|
|
|
|
|
LOG_LEVEL=info
|
|
|
|
|
NODE_ENV=development
|
|
|
|
|
|
2026-05-13 19:34:14 +07:00
|
|
|
# Moderation Configuration
|
2026-06-04 17:12:02 +07:00
|
|
|
TELE_UPLOAD_URL=https://upload.asepharyana.my.id/api/upload
|
2026-05-13 19:34:14 +07:00
|
|
|
ATTACHMENT_UPLOAD_TIMEOUT_MS=30000
|
|
|
|
|
ATTACHMENT_MAX_SIZE_MB=100
|
|
|
|
|
ATTACHMENT_RETRY_ATTEMPTS=3
|
2026-05-13 21:04:45 +07:00
|
|
|
BACKLOG_SYNC_HOURS=24
|
|
|
|
|
BACKLOG_SYNC_BATCH_SIZE=100
|
2026-05-13 17:06:22 +07:00
|
|
|
|
2026-05-14 02:31:16 +07:00
|
|
|
# AI Analysis Configuration
|
|
|
|
|
AI_ANALYSIS_ENABLED=false
|
|
|
|
|
AI_LLM_API_KEY=your_9router_key_here
|
2026-06-09 11:56:03 +07:00
|
|
|
AI_LLM_BASE_URL=https://9router.asepharyana.my.id/v1
|
|
|
|
|
AI_LLM_MODEL=text
|
2026-05-31 20:12:16 +07:00
|
|
|
# Vision model for image/video moderation (falls back to AI_LLM_MODEL if unset)
|
|
|
|
|
AI_LLM_VISION_MODEL=multimodal
|
2026-06-09 10:16:04 +07:00
|
|
|
# Max concurrent LLM API calls (default: 5)
|
|
|
|
|
AI_LLM_MAX_CONCURRENT=5
|
|
|
|
|
# Maximum image dimension in pixels before resize for vision API (default: 1024)
|
|
|
|
|
AI_LLM_IMAGE_MAX_DIMENSION=1024
|
|
|
|
|
# Maximum messages per text-only moderation batch (default: 20)
|
|
|
|
|
AI_LLM_TEXT_BATCH_SIZE=20
|
|
|
|
|
# Timeout in ms for individual media analysis calls (default: 60000)
|
|
|
|
|
AI_LLM_MEDIA_ANALYSIS_TIMEOUT_MS=60000
|
|
|
|
|
|
|
|
|
|
# AI Moderation Analysis Tuning (advanced)
|
|
|
|
|
AI_ANALYSIS_DEBOUNCE_MS=500
|
|
|
|
|
AI_ANALYSIS_RECOVERY_INTERVAL_MS=15000
|
|
|
|
|
AI_ANALYSIS_ERROR_COOLDOWN_MS=30000
|
|
|
|
|
# Max messages fetched per conversation batch (default: 200)
|
|
|
|
|
AI_ANALYSIS_MAX_BATCH_SIZE=200
|
|
|
|
|
AI_ANALYSIS_MAX_CONTEXT_TOKENS=8000
|
|
|
|
|
# Token budget for target messages specifically (default: 4000)
|
|
|
|
|
AI_ANALYSIS_MAX_TARGET_TOKENS=4000
|
|
|
|
|
AI_ANALYSIS_CONTEXT_MESSAGE_LIMIT=20
|
|
|
|
|
# How long a conversation is locked while being processed (default: 120000ms)
|
|
|
|
|
AI_ANALYSIS_PROCESSING_TIMEOUT_MS=120000
|
|
|
|
|
# Max concurrent individual-fallback jobs (default: 50)
|
|
|
|
|
AI_ANALYSIS_INDIVIDUAL_MAX_CONCURRENT=50
|
|
|
|
|
# Consecutive errors before individual circuit breaker trips (default: 50)
|
|
|
|
|
AI_ANALYSIS_INDIVIDUAL_CB_THRESHOLD=50
|
|
|
|
|
|
|
|
|
|
# OpenAI Moderation (optional separate provider)
|
|
|
|
|
# OPENAI_MODERATION_API_KEY=your_key_here
|
|
|
|
|
# OPENAI_MODERATION_BASE_URL=https://api.openai.com/v1
|
|
|
|
|
# OPENAI_MODERATION_MODEL=omni-moderation-latest
|
|
|
|
|
|
|
|
|
|
# Admin
|
|
|
|
|
ADMIN_PASSWORD=admin123
|
2026-05-14 02:31:16 +07:00
|
|
|
|
2026-05-31 15:46:18 +07:00
|
|
|
# Database Configuration (PostgreSQL)
|
2026-05-14 14:44:01 +07:00
|
|
|
# Option 1: Use DATABASE_URL for connection string
|
|
|
|
|
# DATABASE_URL=postgresql://user:password@localhost:5432/discord_bot
|
|
|
|
|
|
|
|
|
|
# Option 2: Use individual connection parameters
|
|
|
|
|
# POSTGRES_HOST=localhost
|
|
|
|
|
# POSTGRES_PORT=5432
|
|
|
|
|
# POSTGRES_USER=postgres
|
|
|
|
|
# POSTGRES_PASSWORD=your_password_here
|
|
|
|
|
# POSTGRES_DB=discord_bot
|
|
|
|
|
|
2026-05-31 14:21:43 +07:00
|
|
|
# Redis Configuration (queue + persistent KV store)
|
|
|
|
|
# REDIS_URL=redis://localhost:6379
|
|
|
|
|
|
2026-05-14 14:44:01 +07:00
|
|
|
# PostgreSQL Connection Pool Configuration
|
|
|
|
|
# POSTGRES_POOL_MIN=2
|
|
|
|
|
# POSTGRES_POOL_MAX=10
|
|
|
|
|
|
2026-05-30 15:35:07 +07:00
|
|
|
# Auto-Delete Configuration
|
|
|
|
|
AUTO_DELETE_FLAGGED_ENABLED=true
|
|
|
|
|
AUTO_DELETE_FLAGGED_DRY_RUN=true
|
2026-06-09 10:16:04 +07:00
|
|
|
AUTO_DELETE_FLAGGED_DELAY_MS=0
|
2026-05-30 15:35:07 +07:00
|
|
|
AUTO_DELETE_MIN_CONFIDENCE=0.50
|
2026-06-09 11:56:03 +07:00
|
|
|
AUTO_DELETE_ALLOWED_SEVERITIES=critical,high,medium,low
|
2026-06-09 10:16:04 +07:00
|
|
|
AUTO_DELETE_NOTIFY_USER=false
|
2026-05-30 15:35:07 +07:00
|
|
|
# Optional: comma-separated channel/user IDs to exclude
|
|
|
|
|
# AUTO_DELETE_EXCLUDED_CHANNEL_IDS=
|
|
|
|
|
# AUTO_DELETE_EXCLUDED_USER_IDS=
|
|
|
|
|
# Optional: comma-separated category filter (empty = all categories)
|
|
|
|
|
# AUTO_DELETE_ALLOWED_CATEGORIES=
|
2026-06-09 10:16:04 +07:00
|
|
|
# Optional: log channel ID for auto-delete actions
|
|
|
|
|
# AUTO_DELETE_LOG_CHANNEL_ID=
|
|
|
|
|
|
|
|
|
|
# Retention Configuration (0 = disabled)
|
|
|
|
|
RETENTION_MESSAGES_DAYS=0
|
|
|
|
|
RETENTION_ATTACHMENTS_DAYS=0
|
|
|
|
|
RETENTION_VOICE_DAYS=0
|
|
|
|
|
# Cleanup interval in ms (default: 24h)
|
|
|
|
|
RETENTION_CLEANUP_INTERVAL_MS=86400000
|
|
|
|
|
RETENTION_DRY_RUN=true
|
2026-05-30 15:35:07 +07:00
|
|
|
|
2026-05-31 23:01:38 +07:00
|
|
|
# Database Migration Configuration
|
|
|
|
|
# Safe default: run migrations on startup before the app accepts traffic.
|
|
|
|
|
AUTO_MIGRATE_ON_STARTUP=true
|
|
|
|
|
|
2026-06-09 10:16:04 +07:00
|
|
|
# Worker Pool Configuration
|
|
|
|
|
# PISCINA_MAX_THREADS=4
|