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.

|
|
Published: July 28, 2026BotShade 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
- Choice options now match in conditional branches
- Modals can now open after a conditional branch
- Compatibility
- Support and community
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:
- Support page — contact form
- status.botshade.com — live service status
Thank you for your continued support of BotShade.