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
| Field | Default | Notes |
|---|---|---|
enabled | true | Enables commands, events, and recovery scans. |
command_permission | admin | Athena permission level required for /threadwatch. |
ephemeral_replies | true | Makes 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_threads | true | Reopens protected threads archived by Discord. |
extend_auto_archive_duration | true | Applies the preferred archive timer to protected threads. |
preferred_auto_archive_minutes | 10080 | Allowed values: 60, 1440, 4320, or 10080. Server availability may vary. |
scan_interval_seconds | 300 | Scheduled recovery interval. Allowed range: 60-86400 seconds. |
startup_scan | true | Runs a recovery scan after Athena connects. |
startup_delay_seconds | 10 | Startup scan delay. Allowed range: 0-300 seconds. |
archived_fetch_pages | 5 | Archived pages checked per forum. Each page contains up to 100 threads. Allowed range: 1-20. |
max_unarchives_per_scan | 25 | Maximum reopen actions per scan. Allowed range: 1-250. |
action_delay_ms | 750 | Delay between Discord changes. Allowed range: 0-5000 milliseconds. |
target_cache_seconds | 60 | Command-target cache lifetime. Allowed range: 5-3600 seconds. |
failure_log_cooldown_seconds | 3600 | Suppresses repeated copies of the same target error. Allowed range: 0-86400 seconds. |
dry_run | false | Reports 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
| Field | Default | Notes |
|---|---|---|
logging.log_channel_id | "" | Optional text channel for Thread Watcher embeds. |
logging.log_unarchives | true | Logs reopened threads. |
logging.log_duration_updates | false | Logs archive timer changes. |
logging.log_errors | true | Logs permission, target, and Discord API errors. |
logging.log_manual_scans | false | Logs scans started with /threadwatch check. |
logging.console | true | Writes 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.