Skip to content

TreeScout420/BobBotNexus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BobBot Nexus

BobBot Nexus is a modular Discord bot for ARK: Survival Ascended server owners.

It is designed to help server owners manage automated raid bases, boss events, Discord announcements, in-game announcements, role buttons, active event tracking, and RCON-based server automation from one shared bot framework.


Included Modules

BobBot Nexus currently includes:

  • AutoBases Controller Controls Auto Bases Ascended raid-base spawning, active-base tracking, public Discord announcements, in-game announcements, scheduler logic, role buttons, auto-wipe, and cap enforcement.

  • Boss Events Controller Controls ServerEventsAscended boss/event spawns, public Discord announcements, in-game announcements, alert role buttons, active-event locks, and feed-based completion tracking.

  • Nexus Core Provides the shared config loader, state manager, RCON helper, admin permission helper, update checker, and core /nexus commands.


Important Security Notice

Never publish or send a live config.json that contains real credentials.

A live config may contain:

  • Discord bot token
  • RCON host/IP
  • RCON password
  • Discord channel IDs
  • Discord role IDs
  • private server layout
  • active module settings

For setup or public sharing, use the included blank/example files:

  • config.json
  • config.commented.json
  • state.json

The commented config file is a setup guide only. JSON comments are not valid in strict .json files.


Clean Release Package

A public release package should not include development junk, cache folders, personal backups, or live server data.

A clean compiled EXE release should include:

  • BobBotNexus.exe
  • config.blank.json
  • config.commented.jsonc
  • state.blank.json
  • README.md

A clean source-code release should include:

  • BobBotNexus.py
  • core/
  • modules/
  • requirements.txt
  • config.blank.json
  • config.commented.jsonc
  • state.blank.json
  • README.md

Do not include:

  • __pycache__/
  • core/__pycache__/
  • modules/__pycache__/
  • old backup files
  • personal backup folders
  • a live config.json
  • a live state.json
  • temporary .tmp files
  • private test configs
  • real Discord tokens
  • real RCON passwords

For live use, copy the blank files:

copy config.blank.json config.json
copy state.blank.json state.json

Then edit config.json with your own Discord, RCON, server, and module settings.


Runtime Files

File / Folder Purpose
BobBotNexus.py Main Python launcher and core /nexus commands
BobBotNexus.exe Optional compiled executable version
config.json Live bot configuration
state.json Runtime state, dashboard IDs, active bases/events, and message IDs
requirements.txt Python dependencies for source-code installs
core/ Shared config, state, RCON, context, and permission helpers
modules/autobases.py AutoBases Controller module
modules/boss_events.py Boss Events Controller module

Public / Setup Files

File Purpose
config.blank.json Safe blank config with placeholders
config.commented.jsonc Detailed commented setup guide
state.blank.json Safe blank runtime state
README.md Main setup and usage guide

Installation

There are two common ways to run BobBot Nexus:

  1. Run from source using Python.
  2. Run as a compiled .exe.

Option 1 — Run From Source

Requirements

  • Windows server or PC
  • Python 3.11 or newer
  • Discord bot token
  • RCON enabled on your ARK servers
  • Required ARK plugins installed, depending on which modules you enable

Install dependencies:

py -m pip install -r requirements.txt

Create live config and state files:

copy config.blank.json config.json
copy state.blank.json state.json

Edit:

config.json

Start the bot:

py BobBotNexus.py

Option 2 — Run as EXE

If using the compiled version, place these files in the same folder:

BobBotNexus.exe
config.json
state.json
README.md

Create your live config/state first:

copy config.blank.json config.json
copy state.blank.json state.json

Then run:

BobBotNexus.exe

When running as an EXE, config.json and state.json must stay next to BobBotNexus.exe.


Discord Setup

Create a Discord bot in the Discord Developer Portal.

Common required permissions:

  • Send Messages
  • Embed Links
  • Read Message History
  • Use Slash Commands
  • Manage Roles, only if using alert role buttons
  • Manage Messages, only if using auto-delete cleanup posts

Enable Message Content Intent if using modules that read Discord webhook/feed messages.

In config.json, configure:

"discord": {
    "bot_token": "PUT_BOT_TOKEN_HERE",
    "guild_id": 0,
    "admin_role_ids": [],
    "admin_command_channel_id": 0,
    "bot_update_feed_channel_id": 0
}

Field Notes

Field Meaning
bot_token Discord bot token
guild_id Discord server ID
admin_role_ids Role IDs allowed to use admin commands
admin_command_channel_id Default admin command channel
bot_update_feed_channel_id Optional channel for update notices

If admin_role_ids is empty, Discord server administrators can use admin commands.


Server / RCON Setup

Each server under servers is an RCON target.

Example:

"island": {
    "display_name": "The Island",
    "host": "PUT_RCON_HOST_HERE",
    "port": 0,
    "password": "PUT_RCON_PASSWORD_HERE",
    "enabled": false
}

Field Notes

Field Meaning
display_name Friendly map/server name shown in Discord
host RCON IP or hostname
port RCON port
password RCON password
enabled Whether this server is available to modules

The server_key used inside AutoBases maps and Boss Events spawn pools must match one of these top-level server keys.

Example:

"server_key": "island"

matches:

"servers": {
    "island": {}
}

Nexus Core Commands

Command Description
/nexus status Show loaded modules and enabled servers
/nexus reload Reload config.json and state.json
/nexus refresh_commands Force-refresh slash commands in the current Discord server
/nexus update_check Check GitHub releases for a newer bot version

Module enable/disable changes require a full restart.

Most normal config value changes can be applied with:

/nexus reload

AutoBases Controller

The AutoBases Controller is configured under:

"modules": {
    "autobases": {}
}

Enable it with:

"enabled": true

AutoBases Requirements

This module expects:

  • Auto Bases Ascended installed on the ARK server
  • RCON enabled
  • matching server entries under servers
  • AutoBases templates configured in the plugin
  • AutoBases spawn groups configured in the plugin
  • optional AutoBases webhook/feed channel for active/completed messages

The module uses RCON commands such as:

ab.activebases
ab.spawnrandomgroup <group>
ab.spawn <template name>
ab.destroybase <base id>
ab.destroyfromtemplate <template name>

AutoBases Commands

Command Description
/ab status Show module status, active bases, scheduler status, and auto-wipe info
/ab config Show readable config overview, caps, maps, templates, tags, and group caps
/ab scheduler Show scheduler eligibility by map
/ab dashboard Create or update the AutoBases dashboard message
/ab alert_buttons Create or update raid alert role buttons
/ab resync Resync active bases from ab.activebases
/ab active Show active bases on a selected map
/ab destroy_base Destroy one active base by base ID
/ab spawn_base Spawn one exact template/base name
/ab destroy Destroy all active bases from one template/base name
/ab spawn Spawn a random base from a configured plugin spawn group
/ab pause Pause scheduler for a map
/ab resume Resume scheduler for a map

AutoBases Map Config

Each AutoBases map lives under:

"modules": {
    "autobases": {
        "maps": {}
    }
}

Example:

"island": {
    "server_key": "island",
    "plugin_map_name": "TheIsland_WP",
    "enabled": true,
    "max_active": 1,
    "cooldown_minutes": 120,
    "spawn_interval_minutes": 300,
    "spawn_weight": 1,
    "spawn_groups": [
        {
            "name": "Tier1",
            "weight": 100
        }
    ],
    "templates": [
        {
            "name": "Example Raid Base",
            "enabled": true,
            "tags": [
                "tier1",
                "starter"
            ]
        }
    ]
}

Important Fields

Field Meaning
server_key Must match a top-level servers key
plugin_map_name Map name used by AutoBases plugin/webhook
enabled Enables this map for scheduling/resync
max_active Legacy per-map max; new configs should use caps.map_caps
cooldown_minutes Cooldown after completion or auto-wipe
spawn_interval_minutes Per-map scheduler timer
spawn_weight Used by cluster scheduler mode
spawn_groups Plugin group names for ab.spawnrandomgroup
templates Exact template/base names and optional tags

The template name must match the Auto Bases Ascended template name.


AutoBases Cap System

The cap system controls how many raid bases can exist at once.

The current cap layout is:

"caps": {
    "cap_enforcement": {},
    "cluster_cap": {},
    "group_caps": {},
    "map_caps": {}
}

Map Caps

map_caps limits active bases per map.

Example:

"map_caps": {
    "enabled": true,
    "default_max_active": 1,
    "include_pending_spawns": true,
    "maps": {
        "island": 1,
        "center": 1,
        "rag": 1
    }
}

Field Notes

Field Meaning
enabled Enables the new map cap system
default_max_active Default cap for maps not listed
include_pending_spawns Counts pending spawn attempts toward the cap
maps Per-map cap overrides

Cluster Cap

cluster_cap limits total active bases across enabled maps.

Example:

"cluster_cap": {
    "enabled": false,
    "max_active_bases": 5,
    "include_pending_spawns": true,
    "only_enabled_maps": true,
    "only_enabled_bases": true,
    "override_group_caps": true
}

Field Notes

Field Meaning
enabled Enables the cluster-wide cap
max_active_bases Maximum active bases across the cluster
include_pending_spawns Counts pending spawns toward the cap
only_enabled_maps Only counts maps enabled in AutoBases config
only_enabled_bases Only counts templates enabled in AutoBases config
override_group_caps If true, group caps are ignored while cluster cap is enabled

Group Caps

group_caps allows custom caps using exact templates, tags, maps, or plugin spawn groups.

Example:

"tier2_raids": {
    "enabled": true,
    "label": "Tier 2 Raid Bases",
    "max_active": 3,
    "include_pending_spawns": true,
    "tags": [
        "tier2"
    ],
    "spawn_groups": [
        "Tier2"
    ]
}

Match Types

Field Meaning
templates Exact base/template names
tags Template tags from the map template config
maps Map keys, such as island, rag, or center
spawn_groups Plugin group names used by ab.spawnrandomgroup

Important Note About spawn_groups

spawn_groups must match the Auto Bases Ascended plugin group name.

Example:

ab.spawnrandomgroup Tier2

would use:

"spawn_groups": [
    "Tier2"
]

Tags work best when the bot knows the exact template name.

spawn_groups are important for scheduler/random group spawns because the plugin picks the final template after Bob sends the command.


Cap Enforcement

cap_enforcement controls cleanup when something is over cap.

Example:

"cap_enforcement": {
    "enabled": true,
    "mode": "log_only"
}

Modes

Mode Behavior
log_only Detect over-cap bases but do not delete
destroy_newest Delete newest overflow bases first
destroy_oldest Delete oldest overflow bases first

For first-time setup, log_only is safest.

Use destroy_newest only after confirming the caps are configured correctly.

Cap enforcement can apply to:

  • map caps
  • cluster cap
  • group caps

This allows the bot to clean up over-cap bases after a config change, startup resync, manual resync, or unexpected plugin behavior.


AutoBases Scheduler

The scheduler can run in two modes.

Mode Meaning
per_map Each enabled map has its own spawn interval
cluster One cluster-wide timer chooses an eligible map by weight

Example:

"scheduler": {
    "mode": "per_map",
    "tick_seconds": 60,
    "spawn_retry_timeout_seconds": 120,
    "startup_resync": true,
    "cluster_spawn_interval_minutes": 120,
    "periodic_resync_minutes": 15,
    "spawn_retry_attempts": 3
}

Field Notes

Field Meaning
mode per_map or cluster
tick_seconds How often the scheduler checks eligibility
spawn_retry_timeout_seconds How long to wait for spawn confirmation
startup_resync Resync active bases when the bot starts
cluster_spawn_interval_minutes Cluster-wide spawn interval when using cluster mode
periodic_resync_minutes How often to resync active bases
spawn_retry_attempts Number of spawn attempts before giving up

Auto-Wipe

Auto-wipe removes active bases after a maximum age.

Example:

"auto_wipe": {
    "enabled": false,
    "max_age_minutes": 4320,
    "check_interval_minutes": 60,
    "start_cooldown_after_wipe": true,
    "public_expired_embed": true,
    "ping_on_expired": false
}

4320 minutes is 3 days.

Field Notes

Field Meaning
enabled Enables automatic wiping of old bases
max_age_minutes Maximum allowed base age
check_interval_minutes How often the bot checks for expired bases
start_cooldown_after_wipe Starts map cooldown after auto-wipe
public_expired_embed Posts/updates an expired-base Discord embed
ping_on_expired Pings the configured alert role on expiration

AutoBases Public Discord Announcements

Public Discord raid announcements are configured under:

"public_discord_announcement": {}

This controls active, completed, expired, and attack-related public raid posts.

Common settings:

"public_discord_announcement": {
    "enabled": true,
    "announcement_channel_id": 0,
    "ping_role_id": 0,
    "use_alert_role_as_ping_fallback": true,
    "delete_completed_after_minutes": 60,
    "ping_on_active": true,
    "ping_on_completed": true
}

AutoBases Public Raid Details

Use base_details or the legacy public_raid_details.bases section to add extra details to public raid embeds.

Preferred layout:

"base_details": {
    "Example Raid Base": {
        "sections": [
            {
                "title": "Raid Rules",
                "lines": [
                    "Destroy the vaults or generators to complete the raid."
                ]
            }
        ]
    }
}

The key must match the exact template/base name.


AutoBases Alert Role Buttons

Alert role buttons allow users to join or leave a Discord alert role.

Example:

"alert_role_buttons": {
    "enabled": true,
    "message_id": 0,
    "title": "💥 Raid Base Alerts",
    "description": "Use the buttons below to join or leave raid base alert pings.",
    "join_button_label": "Join Raid Alerts",
    "leave_button_label": "Leave Raid Alerts",
    "button_panel_channel_id": 0,
    "alert_role_id": 0
}

The bot role must be above the alert role in Discord and must have Manage Roles permission.


Boss Events Controller

The Boss Events Controller is configured under:

"modules": {
    "boss_events": {}
}

Enable it with:

"enabled": true

Boss Events Requirements

This module expects:

  • ServerEventsAscended installed/configured on the ARK server
  • RCON enabled
  • valid server entries under servers
  • spawn pools with valid event names and coordinates
  • optional Discord feed channel for ServerEventsAscended event messages

Boss Commands

Command Description
/boss status Show Boss Events module status
/boss config Show readable boss event config
/boss active Show active/locked boss events
/boss spawn Spawn a configured boss event pool
/boss cancel Cancel a server event
/boss clear Clear a local active boss lock
/boss alert_buttons Create or update boss alert role buttons

Boss Spawn Pools

Boss spawn pools define which events can be spawned and where.

Example:

"spawn_pools": [
    {
        "name": "Example Boss Event - Ragnarok",
        "enabled": false,
        "command_mode": "start",
        "event_name": "ExampleBossEvent",
        "servers": [
            "rag"
        ],
        "coords_by_server": {
            "rag": [
                "0 0 0"
            ]
        }
    }
]

Field Notes

Field Meaning
name Friendly pool name shown in slash commands
enabled Enables this spawn pool
command_mode start or startrandom
event_name Event name used with ServerEventsAscended.start
event_type Event type used with ServerEventsAscended.startrandom
servers Server keys where this pool can spawn
coords_by_server Spawn coordinates per server

Boss Command Modes

Mode Meaning
start Uses event_name with ServerEventsAscended.start
startrandom Uses event_type with ServerEventsAscended.startrandom

Boss Active Locks

Boss Events uses local active locks so the bot knows an event is in progress.

Example:

"active_event_tracking": {
    "enabled": false,
    "active_lock_minutes": 90,
    "block_timer_while_active": true,
    "spawn_verify_timeout_seconds": 10,
    "startup_resync_message_limit": 100,
    "announce_feed_updates": false,
    "server_events_feed_channel_id": 0
}

Field Notes

Field Meaning
enabled Enables feed-based active tracking
active_lock_minutes How long an active lock lasts without completion
block_timer_while_active Blocks scheduled boss spawns while an event is active
spawn_verify_timeout_seconds Time allowed for feed confirmation
startup_resync_message_limit Number of feed messages to inspect on startup/resync
announce_feed_updates Posts feed tracking updates to Discord
server_events_feed_channel_id Channel containing ServerEventsAscended feed messages

Boss Public Discord Announcements

Boss public announcements use:

"public_discord_announcement": {
    "enabled": false,
    "announcement_channel_id": 0,
    "ping_role_id": 0,
    "use_alert_role_as_ping_fallback": true,
    "delete_completed_after_minutes": 60
}

Boss In-Game Announcements

Boss in-game announcements use:

"cluster_announcement": {
    "enabled": false,
    "rcon_command": "ServerChat",
    "announce_to_all_servers": true,
    "announce_on_event_started": true,
    "announce_on_event_complete": true,
    "announce_on_event_canceled": false
}

Boss Alert Role Buttons

Boss alert buttons work the same way as AutoBases alert buttons.

Example:

"alert_role_buttons": {
    "enabled": false,
    "message_id": 0,
    "title": "⚔️ Boss Event Alerts",
    "description": "Use the buttons below to join or leave boss event alert pings.",
    "join_button_label": "Join Boss Alerts",
    "leave_button_label": "Leave Boss Alerts",
    "button_panel_channel_id": 0,
    "alert_role_id": 0
}

The bot role must be above the alert role in Discord and must have Manage Roles permission.


Slash Command Troubleshooting

If Discord shows stale slash commands:

  1. Run:
/nexus refresh_commands
  1. Reload Discord with:
Ctrl + R
  1. Restart the bot if module enable/disable settings changed.

Normal config value changes usually only need:

/nexus reload

Runtime State

state.json stores runtime data such as:

  • dashboard message IDs
  • alert role button message IDs
  • active AutoBases state
  • active Boss Events locks
  • public Discord message IDs
  • recent activity logs

Do not publish a live state.json.

For a fresh setup, use:

copy state.blank.json state.json

Updating

BobBot Nexus includes a notify-only update checker.

The bot does not replace files automatically.

Use:

/nexus update_check

to check for a newer release.

If an update is available, download it manually and replace the program files while preserving your own:

config.json
state.json

Always back up your config before updating.


Copyright and License

Copyright © 2026 TreeScout / Battered Bobs. All rights reserved.

BobBot Nexus, including the AutoBases Controller, Boss Events Controller, configuration structure, documentation, command logic, and related files, is provided for personal or authorized server-owner use only.

You may use this tool to run and manage your own ARK: Survival Ascended server or cluster.

You may not sell, redistribute, re-upload, rebrand, reverse engineer, decompile, modify for resale, or claim this project or any part of it as your own without written permission from the original author.

Configuration files may be edited for personal server use. Public example configuration files are provided only as setup references and do not grant ownership or redistribution rights to the bot source code or compiled executable.

This project is not affiliated with, endorsed by, sponsored by, or officially connected to Studio Wildcard, Snail Games, Discord, Auto Bases Ascended, Server Events Ascended, ArkApi, or any other third-party plugin or service referenced by this project. All trademarks and game/plugin names belong to their respective owners.

Use of this bot is at your own risk. The author is not responsible for server downtime, lost data, accidental base deletion, misconfigured RCON access, plugin conflicts, Discord permission issues, or damage caused by improper setup or use.

About

A modular Discord bot / Windows EXE for ARK: Survival Ascended server automation and expandable plugin control modules.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages