Fjord

Fjord Documentation

Modules

Reaction roles

Members choose their own roles with buttons and select menus. Configure role groups, V1/V2 messages and managed publications.

Included features

  • Both formats support previews, accent colours, images, multiple embeds and expanding, copying, removing and reordering embeds. V1 uses fixed Discord fields, while V2 uses freely arranged blocks. The following sections explain the available inputs and their differences.
  • Role buttons with labels, emojis, four button styles and one or more roles per option
  • Select menus with placeholders, descriptions, emojis and single or multiple selection
  • V1 supports multiple independent role selectors below the entire message. They share up to five action rows. Each menu uses one row, and up to five buttons share a row. Five menus are therefore possible only without additional button rows. Each selector contains up to 25 options. V2 assigns one role selector with buttons or a menu to each container, using the shared component budget. Moving a V1 embed does not move an independent role selector. This module offers blue, grey, green or red role buttons, but no website link-button editor or one-time sending.
  • Live preview with simulated role selection that does not change real member roles
  • Name and duplicate compositions, save drafts, publish and update messages, and remove publications
  • Guidance on role permissions, role hierarchy, image sizes, text limits and the shared component limit

What can you create with reaction roles?

Create Discord messages that let members choose their own roles. Combine designed embeds with role buttons or select menus, for example for games, interests or notifications. Save drafts or publish a message to a channel and update it later in the dashboard.

Combine messages and role selection

Both formats support previews, accent colours, images, multiple embeds and expanding, copying, removing and reordering embeds. V1 uses fixed Discord fields, while V2 uses freely arranged blocks. The following sections explain the available inputs and their differences.

Set up a role composition

Only roles below the bot’s highest role and your own highest role are eligible. Server owners are exempt from their own hierarchy limit. @everyone, managed roles and roles with server management or moderation permissions, including audit-log access, are excluded from public self-assignment. Selecting roles for an option without a label fills in the first role’s name as an editable suggestion. Member and server placeholders are not dynamically replaced in this module, except for the V2 time token.

Required Discord rights

View channel Send messages Embed links Manage roles

Fjord needs View Channel, Send Messages and Embed Links in the target channel, plus Manage Roles. The Fjord role must be above every role it assigns. Managed roles, @everyone and roles with administrative permissions are unavailable.

The internal name is required even for a draft and may contain up to 100 characters. Without a target channel, only the draft is saved. Publishing requires an accessible channel and visible text, an embed or at least one complete role option. Each added role option requires a label of 1–80 characters and 1–25 assignable roles. An emoji is optional, and a description of up to 100 characters is displayed only in select menus. The caption before selecting is optional, up to 150 characters, with a default if left empty. For multiple selection, set the maximum number of simultaneously selected options, up to 25. Complete or remove unfinished options, including in drafts.

Message content and mentions

Normal message content allows at most 2,000 characters. Use the insertion tools to insert roles, channels and server emojis at the cursor. This module publishes mentions without pings. They do not replace a role option.

Design embeds

Discord only shows the author icon when an author name is also set. Enter a name above so the icon appears in the preview. Discord only shows the footer icon when footer text is also set. Enter text above so the icon appears in the preview.

V2

An image block can contain a gallery of up to ten images. Use “+ Another image” to add images, which can be removed individually. Each image and thumbnail has an optional description of up to 80 characters and an optional spoiler setting. A section supports up to three texts of up to 4000 characters each. Use “+ Another text” to add up to two additional texts. Accessory lets you choose between a thumbnail and a link button. The link button requires a label of up to 80 characters and a complete HTTP(S) URL of up to 512 characters. Emoji and disabling are optional. Additional section texts and the accessory button count towards the component limit. Individual images in a gallery do not count as additional components.

In V2, containers and images, including thumbnails, can be marked as spoilers. Their content is initially hidden and revealed by clicking.

V2 offers up to ten containers with separate accent colours. Use text blocks or sections with an optional thumbnail on the right, each supporting up to 4000 characters and Markdown. Separators can show a line or just spacing, with small or large spacing. Add, copy, remove and reorder blocks with the arrows. Empty text and image blocks produce no visible content. V2 text sections offer role, channel and server-emoji pickers.

V2 has no classic author fields, title-link inputs, inline fields, footer icons or timestamp switch. Add headings and links using Markdown in text blocks. Use the Markdown example below for a small footer and the time token for a timestamp. V1 does not offer freely arranged V2 blocks. Both formats cannot be mixed in one message.

-# ... · {time.full}

Container

Quick colors · 10

Text block

Markdown · 4000

Section with thumbnail

Markdown · 4000 · Thumbnail ≤ 5 MB

Image

PNG · JPG/JPEG · WebP · GIF ≤ 8 MB

Separator

Show divider · Small / Large

V2 has a shared limit of 40 components for the entire message. Containers, text displays, sections, thumbnails, image galleries, separators, action rows, buttons and select menus each count. Menu options do not count individually. Automatically added separators and controls also use the budget. For example, a container with text, an image, a separator and a button with its action row uses six components. Ten containers therefore cannot all be filled without limit.

Upload and check images

Image limits apply per file. In V1, author icons, thumbnails and footer icons may each be up to 5 MB. The large-image limit matches the V2 image-block limit shown below. PNG, JPG/JPEG, WebP and GIF are supported. Choose a file to replace an image, or Remove to clear its slot. Author and footer icons are invisible without their corresponding text.

Choose PNG, JPG/JPEG, WebP or GIF. Images upload when saving. Thumbnails allow up to 5 MB, image blocks up to 8 MB.

Thumbnail5 MB
Image8 MB

Role groups, buttons and select menus

The internal name is required even for a draft and may contain up to 100 characters. Without a target channel, only the draft is saved. Publishing requires an accessible channel and visible text, an embed or at least one complete role option. Each added role option requires a label of 1–80 characters and 1–25 assignable roles. An emoji is optional, and a description of up to 100 characters is displayed only in select menus. The caption before selecting is optional, up to 150 characters, with a default if left empty. For multiple selection, set the maximum number of simultaneously selected options, up to 25. Complete or remove unfinished options, including in drafts.

Buttons toggle their role group. If the member already has every role in the group, those roles are removed. Otherwise, only missing roles are added. Other roles remain unchanged. The preview changes no real roles.

Configure buttons

Choose Buttons, add an option and enter its label and target roles. Optionally select an emoji and one of four button styles. Repeat for more groups and reorder the options using the move controls. Each option is one button, even if it contains several roles.

Configure a select menu

Multiple selection uses a configured maximum of 2–25 options. If fewer options exist, the sent message automatically limits selection to the available count.

Choose Select menu. Each option has roles, a label and an optional description and emoji. The menu label appears before a selection. Enable multiple selection with Allow members to select multiple roles. Maximum selection limits simultaneous options, not the roles within each package. Without multiple selection, a member can choose one option.

The select menu reconciles the entire submitted selection with the member’s roles: selected roles are added if missing and retained if already held. Unselected roles belonging to this menu are removed. An empty selection removes all roles belonging to this menu. Roles outside this menu remain unchanged. Overlapping groups retain shared roles while any selected option needs them.

The checkmarks show the selection in the Discord client, not a reliable view of current roles. They may disappear after restarting the client or in another client. Selecting only one option there retains or grants its roles and removes all other roles belonging to this menu. Selecting an already held role again retains it. The bot does not reset the menu after use.

Components V1 / V2

V2 also groups up to five buttons into one action row. A select menu needs its own row. V2 uses the overall component budget instead of the V1 limit of five rows.

New compositions start with V2.

Choose V1 or V2 before the first save. After saving, the version is permanent, including drafts and after removing a publication. Create a new composition to use another format. Duplicating preserves the version. Saved V1 messages are not automatically converted or deleted.

V1 supports multiple independent role selectors below the entire message. They share up to five action rows. Each menu uses one row, and up to five buttons share a row. Five menus are therefore possible only without additional button rows. Each selector contains up to 25 options. V2 assigns one role selector with buttons or a menu to each container, using the shared component budget. Moving a V1 embed does not move an independent role selector. This module offers blue, grey, green or red role buttons. There is no separate editor for additional website link-button rows and no one-time sending. However, a V2 section can use a link button as its accessory instead of a thumbnail. It opens a website without changing roles.

V1

V1 uses classic Discord embeds with an accent colour and fixed sections. Up to ten embeds are supported. The table gives maximum character counts. Author, title, description, footer and every field name and value together may contain at most 6000 characters across all embeds. Normal message text has a separate limit. Each V1 embed supports up to 25 fields.

InputCharacter limitStatus
Author256Optional
Author URL512Optional
Title256Optional
Title link (optional)512Optional
Description4096Optional
Footer text2048Optional
Field name256Required once added
Field value1024Required once added

All design sections are optional. Once you add a field, both its name and value are required. Remove unused fields. Side-by-side enables inline fields, whose final layout depends on Discord and screen width. An author link or icon requires an author name, a title link requires a title and a footer icon requires footer text. Optional links must be complete HTTP(S) addresses. The timestamp shows the sending time.

Role and channel pickers are available in normal message text, the V1 description and field values. These mention pickers are unavailable in author, title, footer and field names. Server emojis can be used in those text sections. Author URL and title link are URL-only inputs without roles, channels or emojis. Mentions in classic embeds do not notify anyone.

Limits and images

Each server allows up to 50 compositions and each composition up to ten embeds. Each role selector allows at most 25 options. V2 allows 40 components in total, including containers, text, images, action rows and controls. Menu options do not count individually. Image files may be at most 8 MB. Check the component budget before saving.

Use the Discord preview

The preview shows text, order, images and role controls in the selected format. Open the menu or press a button to simulate selection. This assigns no roles to real members. Load server resources first so role and emoji choices are available. Test actual assignment in Discord after publication.

Manage embeds

Expand embeds to edit them. You can reorder, duplicate and remove them. Duplicating a V2 container also copies its role controls. Removing the container removes those controls. A copy is blocked if it would exceed embed or component limits.

Compositions have an internal name of at most 100 characters, shown only in the dashboard. A duplicated composition is independent of the original. Check its channel and role options before publishing. Save applies changes. Cancel discards pending changes.

Save or discard pending changes before editing another composition, creating a new one, duplicating or deleting.

Manage drafts and publications

Save without a target channel to keep a draft. With a channel, saving publishes the message, later changes update the same message. When changing channels, the new publication is created first, then the old one is removed. Saving again recreates a missing Discord message. Changes take effect only after saving.

Remove publication deletes only the Discord message and keeps the draft. Delete composition also removes its associated publication. Duplicate creates a separate copy whose publication you configure independently.

Troubleshooting

If roles are missing, check Manage Roles, the role hierarchy and administrative permissions on target roles. If publication fails, check the channel and its permissions. Remove elements if the component budget is exceeded. Test role assignment with a regular member in Discord. The dashboard preview does not change member roles.

Requirements and limitations

A valid design does not require every optional section. Colour alone or empty blocks do not supply visible content for publishing. The preview does not send a message or replace testing in the target channel. Neither editor offers polls, stickers, forms or freely programmable actions. Available data and editing also depend on your granted dashboard permissions.

Preview, spoilers and image files

In the V2 preview, a single gallery image keeps its aspect ratio. Multiple images form a grid with equally sized 16:9 crops. Two or four images use two columns, while three and five to ten images use three columns. A thumbnail appears to the right of the section text. The image description provides alternative text rather than an extra visible caption.

Image and container spoiler switches belong to the V2 editor. Individual gallery images and thumbnails can be hidden independently. A container spoiler hides its contents while keeping the outer frame visible. Clicking reveals the preview without changing the saved spoiler setting. Members can also reveal spoilers by clicking them in Discord.

Message images accept PNG, JPG/JPEG, WebP and GIF. The file type must match its image contents. Renaming an HTML or SVG file does not make it a supported image. The limits in the image tables still apply to each file. If a local image is rejected or can no longer be read, select the original file again and save once more.

Markdown text areas support web and email links. The preview opens HTTP(S) and mailto links, but does not open local file or Blob links. Author links, title links and link buttons require complete HTTP(S) URLs. The preview does not publish a message. Check the saved result in Discord, where the appearance can vary by client and screen width.