Knowledge Base

/

Release Notes

Fix

v2.5.1 Release Notes

We fixed a bug where choice options in custom commands never matched in conditional branches, so every run fell through to the else branch. We also fixed modals placed after a permission check or a value comparison never opening, and modals can now be placed directly after a conditional branch.

BotShade Team
BotShade Team

|

4 min read

|

Published: July 28, 2026

BotShade has been updated to v2.5.1. This release is a fix release centered on two reported bugs in the custom command builder. Both affect patterns that come up constantly when building commands: branching on a selected choice, and collecting details through a form.

If you notice anything, please don’t hesitate to report it via the Support page.

Table of contents:

Highlights

  • We fixed a bug where a choice option compared in a conditional branch never matched, so no matter which choice the user picked, the command always fell through to the else branch.
  • We fixed a bug where modals placed after a permission check or a value comparison never opened, which also meant every action wired after that modal (ban, kick, timeout, and so on) never ran.
  • As part of that fix, modals can now be placed directly after a conditional branch — so patterns like “show the form only to administrators” or “show a different form per selected operation” work as designed.

Choice options now match in conditional branches

Adding a choice option (a list of predefined values the user picks from) and branching on the selected value is one of the most common shapes a custom command takes.

Until now, referencing the choice option variable directly in a comparison (for example {option_command}) never matched any choice. However many branches you lined up, only the else branch ever ran, and none of the per-choice logic executed.

In v2.5.1, referencing a choice option variable on its own now resolves to the selected value. This matches how menu and button variables already behave, so placing the variable in a comparison branches exactly as you would expect.

The full breakdown:

  • {option_command} — the selected value (use this for comparisons)
  • {option_command.name} — the choice’s display label
  • {option_command.value} — the selected value (identical to {option_command})

Commands that already worked around this by writing .value continue to behave the same way — no rewriting needed.

Modals can now open after a conditional branch

Discord only allows a modal (a pop-up input form) to open while the command has not responded yet. Because of that constraint, BotShade could previously show a modal only as the first action of a command or as the target of a button.

As a result, if you placed a permission check or a choice comparison in front of the modal, it never opened even when the condition was met — you only saw the notice that a modal can be shown only as the first action of a command or from a button, and every action wired after that modal was skipped as well.

In v2.5.1, a modal that is reachable through conditional branches alone can now be shown. The command holds off on responding until the branching is resolved, and switches to a response automatically the moment it moves on to anything other than a modal — so even a slow check never runs past Discord’s response deadline.

Where a modal can go

  • As the first action of a command
  • Directly after a permission check or a value comparison — newly supported in v2.5.1
  • As the target of a button

Where a modal cannot go

  • After any other action, such as sending a message — Discord does not allow a command that has already responded to open a modal. In that case, send a message with a button first and place the modal behind that button.

Compatibility

Bots and command definitions you have been using continue to work as-is on v2.5.1. No migration is required on your side.

One display-level change to be aware of: if you embedded a choice option variable directly in message text, the spot that previously rendered an internal representation now renders the selected value. To show the display label instead, use {option_xxx.name}.

Support and community

If you have questions, want to report a bug, or have a feature request, please reach out through any of the following:

Thank you for your continued support of BotShade.

← Back to Knowledge Base