> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremewx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Snowball Utility Commands: Levels, EAS, QOTD & More

> Complete reference for Snowball's utility commands — help, ping, birthdays, levels, leaderboards, QOTD, suggestions, spotter applications, and EAS tools.

Snowball's utility commands cover general-purpose tools, community features, and Emergency Alert System utilities. Some utility commands support prefix commands (e.g., `.ping`, `.level`), but not all — slash commands work everywhere.

## Commands at a glance

| Command             | Description                                                |
| ------------------- | ---------------------------------------------------------- |
| `/help`             | Browse all Snowball command categories                     |
| `/ping`             | Check bot latency                                          |
| `/about`            | View Snowball's version, build number, and developer info  |
| `/suggest`          | Submit a suggestion or bug report                          |
| `/birthday add`     | Set your birthday                                          |
| `/birthday remove`  | Remove your birthday                                       |
| `/birthday queue`   | View all registered birthdays (staff only)                 |
| `/level view`       | View a level card for yourself or another user             |
| `/level set`        | Set a member's level (staff only)                          |
| `/level multiplier` | Set the XP multiplier globally or per channel (staff only) |
| `/leaderboard`      | View server leaderboards                                   |
| `/qotd submit`      | Submit a question for QOTD                                 |
| `/qotd queue`       | View the pending and approved QOTD queue (staff only)      |
| `/qotd remove`      | Remove a question from the queue (staff only)              |
| `/spotter add`      | Submit proof of trained weather spotter certification      |
| `/stats messages`   | View a message activity chart                              |
| `/stats members`    | View a member count chart                                  |
| `/say`              | Send a message to a channel as the bot                     |
| `/eas decode`       | Decode a raw SAME EAS header                               |
| `/eas audio`        | Generate an EAS audio alert from a SAME header             |
| `/eas generate`     | Build and generate an EAS alert from scratch               |
| `Quote Message`     | Right-click context menu — quote a message as a graphic    |

***

## General utility

### `/help`

Opens an interactive browser for all Snowball command categories. A dropdown menu lets you switch between sections: Weather, Economy, Music & Radio, Community, EAS, and Utility. Staff members also see a Moderation section.

### `/ping`

Returns Snowball's current total latency and WebSocket API ping in milliseconds.

### `/about`

Shows Snowball's version, framework version, current ping, build number, and developer credit.

### `/suggest`

Submits a suggestion or bug report to Snowball's development channel. Your submission is forwarded to staff for review. The response is ephemeral (only you see it).

<ParamField path="type" type="string" required>
  | Choice     |
  | ---------- |
  | Suggestion |
  | Bug Report |
</ParamField>

<ParamField path="message" type="string" required>
  Describe your suggestion or bug.
</ParamField>

***

## Birthdays

### `/birthday add`

Sets your birthday. Snowball will announce it on the correct day in the birthday channel.

<ParamField path="month" type="integer" required>
  Your birth month (1–12).
</ParamField>

<ParamField path="day" type="integer" required>
  Your birth day (1–31).
</ParamField>

### `/birthday remove`

Removes your saved birthday.

### `/birthday queue`

Shows all birthdays registered in the server, sorted by month and day. Staff only.

***

## Levels

### `/level view`

Displays a visual level card showing a user's current level, XP, server rank, and weekly XP.

<ParamField path="user" type="user" optional>
  The user to view. Defaults to yourself.
</ParamField>

### `/level set`

Manually sets a member's level and recalculates their XP. Level roles are updated automatically. Requires Administrator permission.

<ParamField path="user" type="user" required>
  The member to update.
</ParamField>

<ParamField path="level" type="integer" required>
  The level to set (minimum 0).
</ParamField>

### `/level multiplier`

Sets the XP gain multiplier for the whole server or a specific channel. Requires Administrator permission.

<ParamField path="value" type="integer" required>
  The multiplier value (1–100).
</ParamField>

<ParamField path="channel" type="channel" optional>
  Apply the multiplier to a specific channel. Leave blank to set it globally for all channels.
</ParamField>

***

## Leaderboard

### `/leaderboard`

Opens the interactive server leaderboard. Defaults to the Snowflake leaderboard. Use the dropdown to switch between:

| Board      | Description                                        |
| ---------- | -------------------------------------------------- |
| Snowflakes | Top users by net worth (wallet + bank)             |
| Levels     | Top users by XP                                    |
| Starboard  | Top members or messages by total stars             |
| Boar ELO   | Top boars by ELO rating                            |
| Moderation | Top staff by total moderation actions (staff only) |

Pagination buttons and a "Jump to you" button are included on each board.

***

## Question of the Day

### `/qotd submit`

Submits a question for consideration as a future Question of the Day. Your submission goes to staff for review before being added to the queue. The response is ephemeral.

<ParamField path="question" type="string" required>
  Your question. Must be 10–200 characters.
</ParamField>

### `/qotd queue`

Shows all pending and approved questions in the QOTD queue. Includes a Shuffle Queue button. Staff only.

### `/qotd remove`

Removes a question from the QOTD queue by its ID. Staff only.

<ParamField path="id" type="integer" required>
  The question ID to remove (visible in the queue view as `qotd-N`).
</ParamField>

***

## Spotter certification

### `/spotter add`

Opens a modal to submit proof of your trained weather spotter certification (e.g., SKYWARN). You can upload up to 5 files as proof. Staff will review your submission and assign the spotter role if approved.

<Note>
  If you already have the spotter role, or have a pending application, Snowball will let you know and prevent a duplicate submission.
</Note>

***

## Server stats

### `/stats messages`

Displays a message activity chart for the server or a specific channel.

<ParamField path="period" type="string" optional>
  Time range for the chart. Defaults to 1 day.

  | Choice  |
  | ------- |
  | 1 Day   |
  | 7 Days  |
  | 14 Days |
  | 30 Days |
</ParamField>

<ParamField path="channel" type="channel" optional>
  Filter the chart to a specific channel. Omit for server-wide data.
</ParamField>

### `/stats members`

Displays a member count chart showing growth and decline over time.

<ParamField path="period" type="string" optional>
  Time range for the chart. Defaults to 1 day.

  | Choice  |
  | ------- |
  | 1 Day   |
  | 7 Days  |
  | 14 Days |
  | 30 Days |
</ParamField>

***

## Bot messaging

### `/say`

Sends a plain text message to any text channel as Snowball. The confirmation to you is ephemeral. Requires Manage Messages permission.

<ParamField path="channel" type="channel" required>
  The channel to send the message in.
</ParamField>

<ParamField path="message" type="string" required>
  The message text. Maximum 2000 characters.
</ParamField>

***

## Quote Message (context menu)

Right-click any message in the server and select **Apps → Quote Message** to generate a styled quote graphic of that message. The graphic includes the author's display name, avatar, handle, and the channel it was posted in.

* Snowball's own messages cannot be quoted.
* Messages that contain only images (no text) cannot be quoted.
* A **Remove Quote** button appears on the graphic so you can delete it after posting.

***

## EAS tools

The `/eas` command provides Emergency Alert System utilities. All three subcommands decode or generate SAME-format EAS headers.

### `/eas decode`

Decodes a raw SAME EAS header string and displays a human-readable translation of the alert type, affected areas, effective time, and originating station.

<ParamField path="header" type="string" required>
  The raw SAME header string (e.g., `ZCZC-WXR-TOR-042003+0030-0970000-KBOU/NWS-`).
</ParamField>

***

### `/eas audio`

Generates a `.wav` EAS audio file from an existing SAME header. Optionally adds a TTS voice reading the alert text.

<ParamField path="header" type="string" required>
  The raw SAME header string.
</ParamField>

<ParamField path="voice" type="string" optional>
  TTS voice to read the alert message. Available voices include NWS Paul, James, Julie, Kate, multiple DECTalk voices, AT\&T, Nuance, Loquendo, Microsoft, Cepstral, ScanSoft, and Festvox options.
</ParamField>

<ParamField path="tts" type="string" optional>
  Custom message for the TTS voice to read. If omitted, the decoded alert text is used automatically.
</ParamField>

<ParamField path="type" type="string" optional>
  ENDEC encoder type. Defaults to Default.

  | Choice                       |
  | ---------------------------- |
  | Default                      |
  | NWS (1050 Hz attention tone) |
  | Digital (SAGE DIGITAL 3644)  |
  | Sage (SAGE EAS 1822)         |
  | Trilithic                    |
</ParamField>

***

### `/eas generate`

Builds a complete EAS alert from scratch — no existing header required. Snowball constructs the SAME header from your inputs, decodes it for verification, and generates the audio file.

<ParamField path="alerttype" type="string" required>
  The EAS event code (e.g., `TOR` for Tornado Warning, `SVR` for Severe Thunderstorm Warning). Supports autocomplete — start typing to search all valid event codes.
</ParamField>

<ParamField path="duration" type="string" required>
  How long the alert is active. Accepts flexible formats: `1h 30m`, `30min`, `2h`, `1d 2h`, or a bare number of minutes. Maximum is 99 hours 59 minutes.
</ParamField>

<ParamField path="sender" type="string" required>
  The station callsign that originated the alert (e.g., `KBOU`, `KABC/TV`). Letters, numbers, and `/` only, up to 8 characters.
</ParamField>

<ParamField path="counties" type="string" optional>
  County names with state codes, semicolon-separated (e.g., `Summit, CO; Jefferson, CO`). Snowball resolves these to FIPS codes automatically. Maximum 31 counties. Provide either `counties` or `fips`, not both.
</ParamField>

<ParamField path="fips" type="string" optional>
  Raw 6-digit FIPS county codes, comma-separated (e.g., `008031, 008059`). Maximum 31 codes. Provide either `counties` or `fips`, not both.
</ParamField>

<ParamField path="origin" type="string" optional>
  The alert originator. Defaults to NWS.

  | Choice                         |
  | ------------------------------ |
  | National Weather Service (WXR) |
  | Civil Authorities (CIV)        |
  | EAS Participant (EAS)          |
  | United States Government (PEP) |
  | Emergency Action Network (EAN) |
</ParamField>

<ParamField path="voice" type="string" optional>
  TTS voice to read the alert. Same choices as `/eas audio`.
</ParamField>

<ParamField path="tts" type="string" optional>
  Custom TTS message. If omitted, the auto-generated alert text is used.
</ParamField>

<ParamField path="type" type="string" optional>
  ENDEC encoder type. Same choices as `/eas audio`. Defaults to Default.
</ParamField>
