How to Create Dropdown Reaction Roles on Discord

Discord Aug 24, 2022

We're used to Reaction Roles and Button Roles by now, but what if I told you that you can now create self-selectable roles using the recently added Dropdown Menus feature. Don't worry if you get confused, I've included screenshots and screen recording GIFs to help you keep track of the steps. Let's jump into it!

Bots Supporting Dropdown Role Menus

So far, we know of two public bots that are able to support self-assignable roles through Dropdown Menus: Reaction by Auttaja and Sapphire.

It's worth noting that Dropdown Menus can be coded into Custom Bots utilising Discord.js v14 or later. Discord.js requires Node v16.9.0 or higher

I'm not a developer, so I can't show you how to code Dropdown Menus into custom bots. If you want to create a custom bot, I'd recommend reading the discord.js documentation.

Throughout the duration of this tutorial, I will be showing you how to set this up using Sapphire, as I'm personally more experienced in using Sapphire for this purpose. If you're using Reaction by Auttaja, check out their documentation here.

Step 1: Setup

All the requirements for a reaction or button based system still stand with Dropdown Menus; there's no fancy permission bypassing going on.

・Make sure the bot's role is above the roles you wish to assign with the system

・Ensure the bot has the MANAGE ROLES permission, or ADMINISTRATOR so it can physically give the roles.

Step 2: Setting Up a Dropdown Menu

First things first, we need to create the actual dropdown menu that will house our roles. To do this, navigate to Components on the dashboard sidebar

It will look pretty barren at the moment, but that's all about to change.

Naming your Dropdown Menu

Next, select the text box under Custom select menus, enter the name for your selection menu and hit Create.

This name will not be public anywhere. It's only visible to you and other administrators with access to the dashboard. Feel free to call it anything, but ensure it is memorable; we'll need it later

Adding Roles to your Dropdown Menu

The next phase of creating a Dropdown Menu Reaction Role is to actually add the roles that you want in your menu. To do this, simply click the name of the menu you just created, and use the Add Option button to add in your roles.

Then, rename the default Option 1 to something more memorable. We're then going to click the + icon and select the "Toggle Roles" option. Finally, select the + on the menu that will pop up and select the roles that you want the person to receive or remove when they select that option.

Selecting the "Toggle Roles" option is extremely important as it allows users to interact with the menu option to remove their role again, should they decided

Remember this Components page, we'll be back later!

Step 3: Creating Our Message

Head over to the Messages tab on the sidebar, it's time to create our messages.

Message 1: Role Selection Message

Similar to how we created our Menu Options, you simply type in a memorable name in the text box under Templates and hit Create. However, unlike our Component Options, this box does not support capitalisation.

Next, we're going to click on our new template and we can edit the message. Sapphire supports the creation of embeds and plain messages and can post through the bot itself or webhooks.

For the sake of speed whilst writing this article, I'm going to use a basic plain message but you can take as much time as you like to create a pretty embed, or the perfect plain message.

Head over to the Edit tab and select the default text by using CTRL + A. You can simply start typing text for a plain message or select the + Embed button to add an embed with an interactive editor. You can even use the green Load button to paste in a message link and easily migrate your old message into Sapphire.

Step 4: Creating a Select Menu

We can now use the + Action Row button to add our menu we made earlier to our new message. After clicking + Action Row, click + Select Menu and move onto the next step

This is where it starts to get slightly complicated, so follow along carefully and pay close attention to my screen recordings.

Configuring the Select Menu

Firstly, click the settings cog found next to the "Placeholder" text. Use the "Select an action" dropdown menu to select the Component we created earlier.

Also, while we're here, ensure to set the "Max. Selections" setting to the number of roles you have in your menu, 3 in my case.

Next up, we can adjust the text and emojis to make it look nice and describe each role. Again, spend as much time as you like to make this look up to your standards.

Once you've finished making the menu look aesthetically pleasing, we need to bind each role to an option. To do this, select the settings cog next to each row and select the role that matches your description.

Onto Step 5, we're now ready to send our message!

Step 5: Sending our Role Message

To send your message, head over to the "Use" tab of the message editor. Click the handily labelled "Click here to select a channel" button to select your channel and then simply click Send

Step 6: Creating a Confirmation Message

We need a way to let users know their roles got applied, right?

Create a new message template called "Confirmation" or something similar. Then, we're going to add an embed with the following text:

Title: ${successemoji} Roles Applied Successfully!

Body: ・${rolesadded} added

・${rolesremoved} removed

Step 7: Enabling Confirmation

For our last and final step, we need to head back to the Components tab and click our Select Menu once again. For each role, we want to add the Send Message option and choose our Confirmation Message (make sure the Ephemeral toggle is set to on)

Hit save and you're done! We can now test our our new dropdown menu

Step 8: Testing

Now you're free to click each option to your heart's content to ensure your new system works!

It's worth saying before I roll the outro, if you encounter any issues, feel free to ask in Sapphire's support server, or the Netcord server. You're more than welcome to DM me too @EpicOverlord#9999 on Discord and I can provide more support if you want. Peace out ✌️

That's all for today, hope you enjoyed today's article. Make sure to join our official Discord server to discuss further on this topic or suggest new articles!

We publish new Discord articles everyday

Join the Netcord Discord server

Continue the conversation and have a chat with alike-minds. Suggest new articles 




Scottish | 16 | He/Him. Netcord Writer & Editor // High School student, Discord Manager, Traveller