Groups and panels

A rule has one trigger. A panel has several buttons. A group is what bridges the two: several rules plus the one message that hosts their buttons, edited in a single place.

Group "Support panel"
├── message: the card members see
├── rule: Open a ticket      ← button 1
├── rule: Pick your colour   ← the dropdown
└── rule: Claim reward       ← button 2

How a click finds its rule

Every component carries an id that points straight at a rule. The bot reads that id and runs that rule; it never consults the group. Two consequences worth knowing:

  • The group is an editing construct. Deleting it detaches its rules; your automations keep working, only the shared card goes away.
  • A rule can live outside any group and still be wired to a button you place yourself.

Building one

Create a group, add rules to it, then compose the message in the builder. Each rule shows its id next to it: paste it into the button you want to wire.

Publishing posts the message in the channel you pick. Publish again after an edit and the same message is updated in place; if it was deleted, a fresh one is posted.

Panels that talk back

A button rule can edit the message it was clicked on. That is how a counter refreshes itself: read the stored value, rewrite the card with the new number.

A rule can also send a message whose buttons point at the group's other rules, the "second chance" honeypot works exactly that way.

Forms

A button can open a form before the rule runs. Up to 5 fields, short or paragraph, required or not. Each answer becomes {modal.<field>}.

A form has to belong to the trigger rather than to an action, and that is not an arbitrary restriction: Discord demands an answer to a click within three seconds, long before a workflow could decide to open one.

The panel as a live scoreboard

A rule inside a group can address the panel its group published, through {group.panel_message_id} and {group.panel_channel_id}. That is what turns a panel into something that updates itself: the rule that increments a counter can, in the same run, rewrite the panel and put the new number in a button label.

The curated Honeypot preset does exactly that. Each ban increments a stored counter and rewrites the panel, so the button reads "Caught so far: 12" without anyone clicking anything.

These variables only appear for a rule that belongs to a group, and they are only looked up for a rule that actually mentions one, so an ordinary role button in a group costs nothing extra.

flavWritten on 8 August 2026