Settings reference
All Auto Role fields, defaults, and validation rules.
| Setting | Type | Default | Meaning |
|---|---|---|---|
JoinAutoRole.roleId | snowflake | required | Role to grant to new non-bot members. Unique per guild and role. |
ReactionRolePanel.channelId | snowflake or null | null in schema; required when publishing | Text channel containing the panel message. Creation requires a valid channel belonging to the guild. |
ReactionRolePanel.messageId | snowflake or null | null in schema; set after publish | Discord message ID for the live panel. Used for PATCH edits and best-effort DELETE cleanup. |
ReactionRolePanel.content | string | Pick your roles below! | Message text shown above buttons. API requires 1–2000 characters for create and edit. |
ReactionRoleButton.label | string | required | Button label, 1–80 characters. |
ReactionRoleButton.emoji | string or null | null | Optional Unicode emoji or custom emoji mention such as <:name:id>, maximum 64 characters. |
ReactionRoleButton.style | primary | secondary | success | danger | secondary | Discord button style. Dashboard labels them Blurple, Grey, Green, and Red. Invalid input falls back to secondary. |
ReactionRoleButton.roleId | snowflake | required | Role toggled by the button. Each role can appear only once per panel. |
ReactionRoleButton.position | integer | 0 | Button ordering inside the panel. The API assigns positions from the submitted array index. |
Discord row limits
Discord allows at most 5 action rows with 5 buttons each. PaulCLI chunks the submitted buttons into rows of 5, so the API limit is 25 buttons per panel.
