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

# Using prefix commands

> How to run Bloom's commands: the server prefix, mentioning Bloom, arguments, targeting members, and the limits that apply.

Prefix commands are text commands you type in a channel, like `!help`. This page covers everything about running them: finding your prefix, reading a command's syntax, targeting members, and the limits that keep things fair.

## Before you start

<Steps>
  <Step title="Bloom is in your server">
    Someone with the Manage Server permission has added Bloom.
  </Step>

  <Step title="Bloom can read and send in the channel">
    Bloom needs View Channel, Send Messages, and Embed Links in the channel where you run commands. Without Embed Links, Bloom falls back to plain text where it can.
  </Step>
</Steps>

## The server prefix

A prefix is the character or short text you put in front of a command name so Bloom knows the message is for it. Every server has its own prefix, and administrators can change it, so there is no single prefix that is correct everywhere.

Throughout these docs, `!` stands for **your server's prefix**. If your server uses a different prefix, substitute it. For example, `!help` means "the word `help` with your server's prefix in front of it."

### Find your server's prefix

<Steps>
  <Step title="Mention Bloom with nothing after it">
    Send a message that is only a mention of Bloom, for example `@Bloom`. Bloom replies with the current prefix, for example: *my prefix here is `!`, you can also mention me as a prefix.*
  </Step>

  <Step title="Or check the setprefix command">
    Run `!setprefix` with no new prefix. Bloom replies with the current prefix and how to change it.
  </Step>

  <Step title="Or read the help footer">
    Run `!help`. The footer of the help message shows `Prefix: <your prefix>`.
  </Step>
</Steps>

<Tip>
  If you do not know the prefix and cannot find it, send `b.help`. This exact text always opens Bloom's help, no matter what the server prefix is, so it is a reliable recovery command.
</Tip>

### Change the server prefix

<ParamField path="setprefix" type="prefix command">
  Sets the command prefix for this server. Alias: `prefix`.

  * **Syntax:** `!setprefix <prefix>`
  * **You need:** Administrator
  * **Bloom needs:** Send Messages
  * **Rules:** the prefix must be 5 characters or fewer. Running `!setprefix` with no argument shows the current prefix instead of changing it.
</ParamField>

```text Example theme={null}
!setprefix >
```

After this, commands use `>` instead, for example `>help`. Bloom replies `Prefix has been set to >`.

## Three ways to trigger a command

<Tabs>
  <Tab title="Server prefix">
    Put the prefix directly in front of the command name.

    ```text theme={null}
    !ban @user 7d spamming
    ```

    Bloom reads `ban` as the command and the rest as its arguments.
  </Tab>

  <Tab title="Mention Bloom">
    Mention Bloom in place of the prefix. This works the same as using the prefix and is useful when you do not remember it.

    ```text theme={null}
    @Bloom ban @user 7d spamming
    ```

    There must be a command after the mention. A mention on its own just makes Bloom reply with the prefix.
  </Tab>

  <Tab title="Personal self-prefix (Premium)">
    Premium users can set a personal prefix that works in every server they share with Bloom, in addition to that server's own prefix.

    ```text theme={null}
    !selfprefix ff
    ```

    After this, `ffhelp` runs `help` for that user anywhere. See [Personal self-prefix](#personal-self-prefix-premium) below.
  </Tab>
</Tabs>

## Reading command syntax

Every command reference on this site uses the same notation. The prefix is never shown in the syntax line, because it depends on your server.

| Notation  | Meaning                                                                             | Example         |
| --------- | ----------------------------------------------------------------------------------- | --------------- |
| `command` | Type the word exactly.                                                              | `ban`           |
| `<value>` | Required. Replace the whole token, including the angle brackets, with a real value. | `<user>`        |
| `[value]` | Optional. Leave it out to accept the default.                                       | `[reason]`      |
| `a\|b`    | Choose one of the listed options.                                                   | `on\|off`       |
| `keyword` | A literal keyword you type as written.                                              | `add`, `remove` |

For example, a command documented as `warn <user> [reason]` is used like this:

```text Minimal theme={null}
!warn @user
```

```text With the optional reason theme={null}
!warn @user breaking rule 3
```

The first warns the member with no reason recorded. The second warns them and stores `breaking rule 3` as the reason.

### Targeting a member

Where a command takes a `<user>`, Bloom accepts any of these:

<Tabs>
  <Tab title="Mention">
    ```text theme={null}
    !userinfo @Ada
    ```
  </Tab>

  <Tab title="User ID">
    ```text theme={null}
    !userinfo 123456789012345678
    ```
  </Tab>

  <Tab title="Name">
    ```text theme={null}
    !userinfo ada
    ```

    Bloom looks for an exact username or display name first. If nothing matches exactly, it tries a close match. If several members match loosely, it may not pick the one you meant, so prefer a mention or ID when the name is common.
  </Tab>
</Tabs>

## Discovering commands

<ParamField path="help" type="prefix command">
  Lists commands and shows details for a single command.

  * `!help` lists command categories and totals.
  * `!help <command>` shows one command's description, usage, and examples, for example `!help ban`.
  * `!help <category>` lists the commands in a category.
  * `b.help` opens the same help without needing the prefix.
</ParamField>

You can also browse the complete, always current command list on the [Bloom website](https://bloombot.cloud/commands).

## Rate limits and cooldowns

Bloom applies a couple of light limits so that no single member can flood a channel. They clear on their own after a short time, and Bloom only mentions a limit occasionally rather than on every blocked message.

* **Overall pace.** If you run many commands in quick succession, Bloom asks you to slow down for a moment before it accepts more.
* **Per command cooldown.** Each command has a short cooldown so it cannot be repeated instantly. Commands that do heavier work, such as image generation, wait a little longer between uses. Premium shortens the cooldown on some of those heavier commands.

When you hit either limit, Bloom replies with a short wait message and removes it after a few seconds. Wait a moment and try again.

## Personal self-prefix (Premium)

<ParamField path="selfprefix" type="prefix command">
  Sets a personal prefix that works in every server you share with Bloom, on top of each server's own prefix. Alias: `myprefix`. This command is Premium only.

  * **Syntax:** `!selfprefix <prefix|none>`
  * **Scope:** works in any server, per user
  * **Rules:** 1 to 5 characters, no spaces. Use `none`, `remove`, `reset`, or `clear` to turn it off.
</ParamField>

```text Set a personal prefix theme={null}
!selfprefix ff
```

After this, that user can run `ffhelp`, `ffnp`, or any command with `ff` in front, in any server. Other members are unaffected, and the server's normal prefix keeps working.

```text Remove it theme={null}
!selfprefix none
```

## Permissions in short

Running a command depends on two separate things, and Bloom checks both.

* **You need** the user permissions listed on the command. Some commands are also server only, Premium only, or owner only.
* **Bloom needs** the bot permissions listed on the command, plus the ability to send in the channel.

Administrators and the server owner pass most permission checks. Bloom also supports fake permissions, which let you grant a member the ability to use permission gated Bloom commands without giving them the real Discord permission. Fake permissions satisfy Bloom's own checks only; they never grant Discord API rights, so an action that Discord itself requires a permission for will still fail.

## Commands in direct messages

Bloom's prefix commands are server commands. In direct messages, Bloom currently responds only to verification flows, such as answering a join gate captcha. Sending a normal command such as `!ping` to Bloom in a direct message does nothing.

<Info>
  To use Bloom's everyday commands, run them inside a server, using the server prefix or by mentioning Bloom.
</Info>

## Common mistakes

<AccordionGroup>
  <Accordion title="Nothing happens when I type a command">
    Check that you used the correct prefix for this server, that Bloom can see and send in the channel, and that the command name is spelled correctly. If you are unsure of the prefix, send `b.help`. Bloom stays silent on unknown command names on purpose, so a typo produces no reply.
  </Accordion>

  <Accordion title="Bloom says I am using commands too quickly">
    You have run commands faster than Bloom accepts them. These limits are per user and clear on their own, so wait the moment shown and try again.
  </Accordion>
</AccordionGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Embed syntax" icon="code" href="/reference/embeds">
    Compose the messages and buttons that many commands accept.
  </Card>

  <Card title="Leveling" icon="chart-line" href="/configuration/leveling">
    A full example of a configurable Bloom system and its commands.
  </Card>

  <Card title="Full command list" icon="list" href="https://bloombot.cloud/commands">
    Every command with its description.
  </Card>

  <Card title="Support server" icon="discord" href="https://discord.gg/HYSgTQ6SHR">
    Ask for help if a command does not behave the way you expect.
  </Card>
</CardGroup>
