Skip to Content
Haven Documentation is the shared home for product guides, plugin setup, and release docs.

Thread Watcher Configuration

When dashboard-backed configuration is enabled, use the dashboard first because live settings may be stored in MongoDB instead of reading only local JSON5 files.

Config Files

  • Main config: configuration/thread_watcher.json5
  • Language config: configuration/thread_watcher_lang.json5
  • Plugin entry: plugins/thread_watcher/main.js

Main Fields

FieldDefaultNotes
enabledtrueEnables commands, events, and recovery scans.
command_permissionadminAthena permission level required for /threadwatch.
ephemeral_repliestrueMakes command responses private.
forum_channel_ids[]Forum or media channels where every post is protected.
thread_ids[]Individual forum post or thread IDs to protect.
reopen_archived_threadstrueReopens protected threads archived by Discord.
extend_auto_archive_durationtrueApplies the preferred archive timer to protected threads.
preferred_auto_archive_minutes10080Allowed values: 60, 1440, 4320, or 10080. Server availability may vary.
scan_interval_seconds300Scheduled recovery interval. Allowed range: 60-86400 seconds.
startup_scantrueRuns a recovery scan after Athena connects.
startup_delay_seconds10Startup scan delay. Allowed range: 0-300 seconds.
archived_fetch_pages5Archived pages checked per forum. Each page contains up to 100 threads. Allowed range: 1-20.
max_unarchives_per_scan25Maximum reopen actions per scan. Allowed range: 1-250.
action_delay_ms750Delay between Discord changes. Allowed range: 0-5000 milliseconds.
target_cache_seconds60Command-target cache lifetime. Allowed range: 5-3600 seconds.
failure_log_cooldown_seconds3600Suppresses repeated copies of the same target error. Allowed range: 0-86400 seconds.
dry_runfalseReports actions without reopening threads or changing archive timers.

Invalid IDs are ignored. Target IDs must contain 17-20 digits, and duplicate IDs are removed automatically.

Target Scope

forum_channel_ids protects every active, archived, and future post in each configured forum or media channel. thread_ids protects only the listed public, private, or announcement threads.

Targets added with /threadwatch add are stored in MongoDB. Removing a command-added target does not remove the same target from forum_channel_ids or thread_ids.

Logging Fields

FieldDefaultNotes
logging.log_channel_id""Optional text channel for Thread Watcher embeds.
logging.log_unarchivestrueLogs reopened threads.
logging.log_duration_updatesfalseLogs archive timer changes.
logging.log_errorstrueLogs permission, target, and Discord API errors.
logging.log_manual_scansfalseLogs scans started with /threadwatch check.
logging.consoletrueWrites actions and errors to Athena’s console.

If Discord does not support the preferred archive duration for your server, Thread Watcher pauses repeated timer attempts during the error cooldown. It can still reopen protected threads when they archive.

Language Config

Use thread_watcher_lang.json5 to change:

  • The command, subcommand, and target option names
  • Command success, validation, and error messages
  • List, status, scan, and log embed wording
  • Embed colors, footers, timestamps, and target labels
  • Discord log messages

Restart AthenaBot after renaming the command, a subcommand, or the target option so Discord receives the updated command structure.