Bot and dashboard guide

Valkyrie Bot Docs

Use this page as the quick operating manual for the Discord bot and web dashboard. It covers setup, command usage, dashboard tabs, and the daily workflows your staff will use most.

Setup

Valkyrie needs both Discord-side permissions and dashboard configuration before everything works smoothly.

Invite the bot

Use the Bot Invite link and select a server where you have permission to manage apps. The invite includes bot and slash-command scopes with administrator permissions.

Log in to the dashboard

Sign in with Discord. The dashboard only shows servers where your account can manage the server or has administrator access.

Complete setup checks

Open the server in the dashboard and use Overview to confirm required channels, roles, ranks, command levels, training stages, and subdivisions.

Restart after command changes

If commands were added, removed, or renamed in the code, restart the bot so Discord receives the updated slash-command definitions.

Using the Dashboard

The dashboard is the command center for server configuration and live operations. Save changes from each section before moving on to another workflow.

Choose a server

The Servers page lists configured servers and manageable servers that still need the bot invited. Pick Manage to open server settings.

Review Overview

Use the setup checklist and counters to see what is ready. Missing setup items usually explain why a command cannot apply a role or log to a channel.

Configure Settings and Commands

Settings controls core channels, the join auto role, welcome embed wording, LOA behavior, activity limits, and IA channels. Commands lets you enable modules and restrict them to specific roles.

Maintain ranks and units

Use Promotions, Ranks, Training, Subdivisions, and Unit Members to keep your server structure aligned with the Discord roles the bot assigns.

Role and channel pickers

Pickers load from Discord when the bot token can reach the selected server. If a picker says resources are unavailable, check the bot token, bot membership, and network access.

Roster

The roster page is a spreadsheet-style staff list for each server. It can be created from the default template or imported from a CSV export, then edited directly in the browser.

Open the roster

From the dashboard, choose a server and select the Roster tab. If no roster exists yet, start with the default roster template or upload a CSV file exported from Google Sheets.

Import from a sheet

Use Roster Controls to import a public Google Sheets CSV link or upload a CSV file. The importer detects common columns such as name, call sign, rank, Discord ID, status, hours, dates, and notes.

Edit members and sections

Rows can be added, deleted, and edited inline. Sections group members on the sheet, roster tabs create separate pages, and column visibility controls which fields are shown.

Save and sync

Click Save Roster after changes. Saving refreshes monthly activity hours from the 1st of the current month and queues Discord rank and sub-unit role updates when the row has a Discord ID.

Roster Controls

Use controls to create or rename tabs, delete the roster, import sheets, hide columns, edit section names, and adjust roster colors. These controls only appear for users with dashboard permission.

Statuses and colors

Status cells use the roster color settings. Default statuses include Active, Semi Active, Inactive, Vacant, LOA, Reserve, and Suspended, and imported custom status labels remain visible.

Notes columns

Notes fields open a note dialog instead of a plain text cell. Add dated notes for context while keeping the main sheet compact and easy to scan.

Onboarding dates

The roster member picker loads Discord guild members, including members who joined before the bot was added. Blank onboarding dates are filled from Discord join dates when a row can be matched by Discord ID, Discord name, or member name.

Rank matching

If imported rank labels do not match configured dashboard ranks, the roster will warn about unmapped ranks. To resolve them, add the missing rank names in the bot dashboard's Ranks section, save the config, then save the roster again so Discord rank sync can run.

Bot Commands

Commands are controlled by Discord permissions plus any role restrictions configured in the dashboard Commands tab.

Activity

Post duty panels and inspect shift records.

/activity panel posts clock-in controls. /activity stats checks one member's time. /activity roster shows current activity. /activity leaderboard ranks weekly or all-time activity.

Moderation

Handle common staff moderation actions with audit logging.

/mod warn, kick, ban, unban /mod timeout and /mod untimeout /purge clears recent messages, optionally for one member.

Ranks and Training

Move members through training and rank structures.

/rank set assigns a configured rank. /rank info checks a member's rank. /training complete advances a member. /training status and reset inspect or restart progress.

Leave of Absence

Track LOA status and apply the configured LOA role.

/loa set adds an LOA through an end date. /loa end clears an LOA early. /loa check and /loa list review active LOAs.

Internal Affairs

Open and close IA cases while preserving case state.

/open case places a member on administrative leave. /case close resume restores the member. /case close terminate closes the case and removes the member.

Subdivisions and Units

Maintain subdivision status boards and membership.

/subdivision post, update, add, remove, view /setcommander assign, remove, setrole /unit assign, remove, setrole, list, member

Embeds

Create and revise polished announcement embeds without writing JSON by hand.

/embed opens a modal for title, description, color, and target channel. /editembed edits a bot-sent embed by message ID or message link.

Common Workflows

Put a member on duty

Post /activity panel in the desired channel. Members use the panel buttons to start, pause, resume, and end shifts. The dashboard Operations tab shows active and recent shift data.

Add a new rank

Create the Discord role, then add it in Dashboard > Ranks. Save the config, then use /rank set or the Promotions tab to assign it.

Create a subdivision board

Configure subdivisions in the dashboard, then run /subdivision post. Later updates from commands or the dashboard will keep the posted board in sync.

Handle an IA case

Use /open case to place the member on administrative leave and create case records. Close with /case close resume or /case close terminate.

Advanced JSON

The Advanced tab is powerful and bypasses normal form guardrails. Use it for backup, restore, or careful bulk edits only when the standard tabs cannot express the change.