version: "3.9" services: shaiwatcher: build: context: . dockerfile: dockerfile args: WITH_PLAYWRIGHT: ${WITH_PLAYWRIGHT:-1} container_name: shaiwatcher restart: unless-stopped environment: # Wrapper / repo DISCORD_TOKEN: ${DISCORD_TOKEN} REPO_URL: ${REPO_URL} REPO_BRANCH: ${REPO_BRANCH:-main} REPO_TOKEN: ${REPO_TOKEN:-} CHECK_TIME_UTC: ${CHECK_TIME_UTC:-03:00} IGNORE_TEST_LEVEL: ${IGNORE_TEST_LEVEL:-1} SHAI_REPO_RSS: ${SHAI_REPO_RSS:-} # Bot runtime SHAI_DATA_FILE: ${SHAI_DATA_FILE:-/data/data.json} # Deep Desert scraper SHAI_DD_CHANNEL_ID: ${SHAI_DD_CHANNEL_ID:-} SHAI_DD_FETCHER: ${SHAI_DD_FETCHER:-playwright} SHAI_DD_PW_TIMEOUT_MS: ${SHAI_DD_PW_TIMEOUT_MS:-60000} SHAI_DD_PW_WAIT: ${SHAI_DD_PW_WAIT:-} # Slash scope SHAI_SLASH_GUILD_ONLY: ${SHAI_SLASH_GUILD_ONLY:-true} SHAI_HOME_GUILD_ID: ${SHAI_HOME_GUILD_ID:-} # Channels SHAI_MOD_CHANNEL_ID: ${SHAI_MOD_CHANNEL_ID:-} SHAI_MODLOG_CHANNEL_ID: ${SHAI_MODLOG_CHANNEL_ID:-} SHAI_USERSLIST_CHANNEL_ID: ${SHAI_USERSLIST_CHANNEL_ID:-} SHAI_REPORT_CHANNEL_ID: ${SHAI_REPORT_CHANNEL_ID:-} SHAI_PIRATES_LIST_CHANNEL_ID: ${SHAI_PIRATES_LIST_CHANNEL_ID:-} SHAI_TRIGGER_CHANNEL_ID: ${SHAI_TRIGGER_CHANNEL_ID:-} SHAI_AUTO_VC_CATEGORY_ID: ${SHAI_AUTO_VC_CATEGORY_ID:-} # Reaction messages SHAI_RULES_MESSAGE_ID: ${SHAI_RULES_MESSAGE_ID:-} SHAI_ENGAGEMENT_MESSAGE_ID: ${SHAI_ENGAGEMENT_MESSAGE_ID:-} SHAI_NICKNAME_MESSAGE_ID: ${SHAI_NICKNAME_MESSAGE_ID:-} # Roles SHAI_RULES_ROLE_ID: ${SHAI_RULES_ROLE_ID:-} SHAI_ENGAGEMENT_ROLE_ID: ${SHAI_ENGAGEMENT_ROLE_ID:-} SHAI_FULL_ACCESS_ROLE_ID: ${SHAI_FULL_ACCESS_ROLE_ID:-} SHAI_ADMIN_ROLE_ID: ${SHAI_ADMIN_ROLE_ID:-} SHAI_FIELD_MOD_ROLE_ID: ${SHAI_FIELD_MOD_ROLE_ID:-} SHAI_INTEL_MOD_ROLE_ID: ${SHAI_INTEL_MOD_ROLE_ID:-} SHAI_MODERATOR_ROLE_ID: ${SHAI_MODERATOR_ROLE_ID:-} # Auto-VC SHAI_VC_NAME_PREFIX: ${SHAI_VC_NAME_PREFIX:-DD Crew} SHAI_AUTO_VC_CLEANUP_DELAY: ${SHAI_AUTO_VC_CLEANUP_DELAY:-30} # Threat weights SHAI_THREAT_W_KILL: ${SHAI_THREAT_W_KILL:-0.30} SHAI_THREAT_W_DESTRUCTION: ${SHAI_THREAT_W_DESTRUCTION:-0.40} SHAI_THREAT_W_GROUP: ${SHAI_THREAT_W_GROUP:-0.20} SHAI_THREAT_W_SKILL: ${SHAI_THREAT_W_SKILL:-0.10} SHAI_THREAT_GROUP_THRESHOLD: ${SHAI_THREAT_GROUP_THRESHOLD:-3} SHAI_THREAT_MIN_SAMPLES_FOR_STATS: ${SHAI_THREAT_MIN_SAMPLES_FOR_STATS:-3} # Toggles SHAI_NICK_NUDGE_LOOP_ENABLED: ${SHAI_NICK_NUDGE_LOOP_ENABLED:-false} SHAI_USER_CARDS_CRON_ENABLED: ${SHAI_USER_CARDS_CRON_ENABLED:-true} # SpicePay defaults SHAI_SPICEPAY_LSR_CUT_PERCENT: ${SHAI_SPICEPAY_LSR_CUT_PERCENT:-10} SHAI_SPICEPAY_BASE_WEIGHT: ${SHAI_SPICEPAY_BASE_WEIGHT:-25} SHAI_SPICEPAY_CARRIER_BONUS: ${SHAI_SPICEPAY_CARRIER_BONUS:-12.5} SHAI_SPICEPAY_CRAWLER_BONUS: ${SHAI_SPICEPAY_CRAWLER_BONUS:-12.5} # Emojis SHAI_EMOJI_MELANGE_ID: ${SHAI_EMOJI_MELANGE_ID:-} SHAI_EMOJI_SAND_ID: ${SHAI_EMOJI_SAND_ID:-} SHAI_EMOJI_CARRIER_CRAWLER_ID: ${SHAI_EMOJI_CARRIER_CRAWLER_ID:-} # Docs site SHAI_DOCS_HOST: ${SHAI_DOCS_HOST:-0.0.0.0} SHAI_DOCS_PORT: ${SHAI_DOCS_PORT:-8910} SHAI_DOCS_TITLE: ${SHAI_DOCS_TITLE:-ShaiWatcher Commands} SHAI_DOCS_SUPPORT_URL: ${SHAI_DOCS_SUPPORT_URL:-} SHAI_DOCS_SUPPORT_LABEL: ${SHAI_DOCS_SUPPORT_LABEL:-Buy me a ☕} # Wrapper knobs PIP_INSTALL_REQUIREMENTS: ${PIP_INSTALL_REQUIREMENTS:-1} WRAPPER_STOP_TIMEOUT: ${WRAPPER_STOP_TIMEOUT:-25} # Locale LANG: ${LANG:-C.UTF-8} volumes: - data:/data - cache:/cache volumes: data: external: true name: ${SHAI_VOL_DATA:-shaiwatcher_data} cache: external: true name: ${SHAI_VOL_CACHE:-shaiwatcher_cache}