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

# Guess Word Game

> Run a 'guess the word' giveaway — first correct answer wins. Starts from the dashboard or Discord.

A Guess Word game is a quick moderator-run giveaway where the bot posts a question in a channel and the first member to type the correct answer wins. You can run it from the dashboard or directly in Discord with `/guess_word`. Only one game can be active per server at a time.

Open **Dashboard → Activity → Guess Word Game**.

<Note>
  **How this message is delivered.** It posts through a bot-owned webhook. With no custom
  identity set it uses the bot's own name and avatar, so it looks exactly like a normal bot
  message. Enabling **Custom identity** simply overrides that name and avatar (the custom name is capped at
  **80 characters** — Discord's webhook limit). This works in
  both Message and Embed mode. The bot needs **Manage Webhooks** in the target channel; without
  it the message is posted normally instead, so nothing is ever lost.
</Note>

## Lifecycle

<Steps>
  <Step title="Fill in the form">
    Pick a channel, configure the ping and role gates, type the question and correct answer, and (if you have the Booster or Premium tier) fill in the Private Winner Thread card with a prize, code, preset text, and anyone to auto-invite.
  </Step>

  <Step title="Press Start Game">
    The single **Start Game** button at the bottom both saves the form values as this guild's defaults AND fires a new game. Values persist so the form is pre-filled on the next visit and the slash command picks them up too.
  </Step>

  <Step title="Members answer">
    The bot posts the question embed in the channel. Any member whose role gate allows them to participate can type in the channel; the bot checks each message against the answer.
  </Step>

  <Step title="Winner found">
    The bot posts a "GUESSED!" reply tagging the winner. If the private-thread option is on, the bot creates a thread (in the configured thread channel, or the game channel if none is set) and posts the preset message with the prize, code, and other placeholders filled in. The original question embed stays in the channel as a record.
  </Step>
</Steps>

Use `/guess_word_control` from Discord to see the running game and stop it with a one-click red button. Stopping the game **deletes** the original question embed and posts a short "stopped" notice in the channel.

## Start Game card

<ResponseField name="Channel" type="channel picker (required)">
  Where the bot posts the question and listens for answers. Also used as the default channel for `/guess_word` when the `channel` argument isn't given.
</ResponseField>

<ResponseField name="Game Message" type="two WYSIWYG templates (tabs)">
  The opening announcement, composed in the full WYSIWYG message/embed editor (Variables, Markdown, Emoji, Timestamp, Preview, Restore default — with author, fields, image, thumbnail, colour and **Random color** support). There are **two templates**, one per start path:

  * **Start from Dashboard** — what the **Start Game** button posts. Write your question **and prize directly into the message** as plain text; the prefilled question/prize are just examples. `{host}` / `{host_name}` stay greyed out in the Variables popup until the Game Host field holds a user.
  * **Start from Discord command** — what `/guess_word` posts. An **Enable /guess\_word command** toggle sits at the top of this tab (**off by default** — the command is refused and the builder is greyed out until you turn it on). The command's `question:` option fills the `{question}` line and `prize:` fills `{prize_name}` — keep those variables in the template (the question is prepended automatically if the line is removed).

  Both ship the original announcement copy, and the `Started` footer (with the game host's avatar) flips to `Ended` when someone wins. **Role pings** go straight into the message-text line above the embed (type `@role`) — `/guess_word ping_role:@role` replaces them for a single run. A **Custom Identity** (name + avatar via webhook) is available on both editors — Booster **or** Premium.
</ResponseField>

<ResponseField name="Game Host" type="user ID (optional)">
  `{host}` pings this user, `{host_name}` shows their name — and they're invited to the winner thread. Leave empty to use whoever pressed **Start Game**. Games started with `/guess_word` always use the command's moderator.
</ResponseField>

<ResponseField name="Correct Answer" type="text (required, 256 chars)">
  The expected answer. The bot compares case-insensitively, strips leading/trailing whitespace, drops basic punctuation (`. , ! ? ' " ; :`), and collapses internal whitespace. To accept multiple spellings, separate them with `|` — e.g. `blue|navy|azure`.
</ResponseField>

<ResponseField name="Allowed Roles" type="role list (participation)">
  If set, only members with at least one of these roles can submit an answer. Admins are always allowed.
</ResponseField>

<ResponseField name="Blacklisted Roles" type="role list">
  Members with any of these roles cannot participate, even if they also have an allowed role.
</ResponseField>

## Private Winner Thread (Booster or Premium)

<Info>
  Unlocked by **Booster** tier **or** **Premium** tier. The tier pills render side-by-side on the toggle row.
</Info>

<Tip>
  **When this card is enabled,** the `/guess_word` slash command accepts `prize` and `code` options. Values passed to the command **replace** the saved Prize and Win Code for that run — they're substituted into `{prize_name}` and `{winner_code}` inside the thread message. If the command omits either option, the bot falls back to whatever is saved on the dashboard.
</Tip>

<ResponseField name="Create Private Thread for Winner" type="toggle">
  When on, the bot opens a private thread the moment a winner is found. The thread includes: the winner, the game host, the server owner, and any extra user IDs listed below.

  Threads are named `[<user_id>] <Display Name>` — the same convention as `/create_thread`. If the same user wins again later, the bot reuses their existing thread (unarchiving and renaming it if their display name changed) instead of spawning a duplicate.
</ResponseField>

<ResponseField name="Thread Channel" type="channel picker (optional)">
  The channel the thread is opened under. Leave empty to use the same channel where the game ran.
</ResponseField>

<ResponseField name="Winner Thread Message" type="WYSIWYG editor">
  The first message posted inside the winner thread, composed in the full WYSIWYG editor (embed by default — flip the **Embed** toggle off for a plain message). Ships prefilled as an **embed** with `Congrats {user}! 🎉 You won {prize_name}. / Your code: {winner_code}` — a line whose value is empty is removed automatically. Tokens: `{user}`, `{host}`, `{prize_name}`, `{winner_code}`, `{answer}`, `{question}`, `{server}` — the `{prize_name}` / `{winner_code}` chips in the Variables popup stay greyed out until the Prize / Win Code fields below hold a value. A **Custom Identity** is available here too (Booster or Premium). Leave the message empty for a silent thread (members are still invited).
</ResponseField>

<ResponseField name="Prize" type="text (optional, 256 chars)">
  Used inside the thread message as `{prize_name}`. If `/guess_word prize:…` is used, that value replaces this one for that run.
</ResponseField>

<ResponseField name="Win Code" type="text (optional, 256 chars)">
  Posted privately inside the winner thread via `{winner_code}`. Not shown publicly.
</ResponseField>

<ResponseField name="Extra Users to Invite to Thread" type="user-ID list (up to 20)">
  Additional Discord user IDs that are auto-added to the winner thread — typically staff or sponsors who should see the prize and code.
</ResponseField>

The card has its own **Save** button so you can persist the thread defaults (channel, message, prize, code, invite list) without starting a game. Pressing **Start Game** at the bottom of the page also saves these values, so the dedicated Save button is just the "store the defaults and walk away" path.

## Slash commands

<ResponseField name="/guess_word question answer [prize] [code] [channel] [ping_role]" type="moderator">
  Starts a game. **Must be enabled first** — the *Enable /guess\_word command* toggle on the dashboard's *Start from Discord command* tab (off by default). `question` and `answer` are required. `channel` defaults to the dashboard-configured channel, or the current channel if none is saved. `ping_role` (if provided) is a single role that replaces the dashboard ping list for this run only. The bot's confirmation reply is **ephemeral** — only the moderator sees the answer.
</ResponseField>

<ResponseField name="/guess_word_control" type="moderator">
  Shows the currently running game (channel, host, question, started time, prize) in an ephemeral embed with a red **Stop Game** button. Pressing the button is identical to pressing **Stop** on the dashboard banner — it deletes the opening question embed and posts a short stop message in the channel.
</ResponseField>

## While the game is running

The dashboard shows a green status banner at the top of the Guess Word view with the channel, host, question, started time, and prize. The rest of the page is greyed out — you cannot change settings or start a second game until the first one ends. The **Stop** button in the banner is the dashboard equivalent of the red **Stop Game** button on `/guess_word_control`.

When the bot announces a game in chat the embed footer shows `Hosted by {name} • Started · <date>` together with the host avatar. The moment a winner is found the same embed is edited in place — the footer flips to `Hosted by {name} • Ended · <date>` so anyone scrolling the channel later can see the game has finished without the bot needing a separate end announcement.
