Role Prototype

Getting Started with Role Prototype.

Introduction

Role Prototype is developed by Teddy#0001 and implements easy-to-configure auto-assignable roles via Discord's select menus. You can learn more about Discord's select menus here. On April 9th, 2022, a complete rewrite of the bot was released, which added slash commands, context menus, and more!

Want to use Role Prototype in your community?
Currently, this bot is not available to the public and you may request access to use Role Prototype here! (Note: You do not need to do this if I referred you here!)

Role Prototype is subject to my privacy policy and terms of service for bots.

Release Notes


Before we begin...
The artwork used currently is from DDLC+.
The preview images used in this guide are from the SWTOR Discord Community and an internal testing server.
This document was built with bulma and bulmaswatch upon popular request for dark mode.
I would like to offer a special thanks to the following contributors and testers: Soaring__Sky#1313 and Jedi#0001


Using this Guide

In this guide all command parameters in [] are required, while those in () are optional. They are only indicators for you, you should not include [] or () when using the command. As an example, [messageid] should be typed as just 1234567890. [#channel], requires that you mention the channel. Commands will appear in red text and parameters in blue.

In this guide when quotes are shown within the brackets, they are required for use of the bot. As an example, ["Role Name"] should be typed as "MyCuteRole" when using the command.

The default prefix for Role Prototype is r:. You can change this with r:set prefix [newprefix] (Note: You must have the "Manage Server" permission to use set command.) To avoid confusion, the prefix is not included in this guide's display of commands.

If you need any help with the setup and configuration of Role Prototype you may reach out to me on Discord via DMs or my support server. Please keep in mind that features listed as a Beta Feature may not be available for your community yet.


Permissions

The following permissions are required for the bot to operate in a server:

  • Send Messages
  • Manage Channels
  • Manage Roles
  • Manage Messages

The following permissions are optional depending on which features you use:

The following permissions are required for staff to manage role features on bot:

  • Manage Roles

Heads up! You may need to grant the bot per-channel permissions! The bot will need the "View Channel" permission for channels in which the commands are used. It is strongly recommended that you use a staff-only channel.

It is generally advised not to grant bots the "Administrator" or "Manage Server" permission except when required. As Role Prototype is correctly configured, these permissions are not required. You should not set them for the bot.

Step 1: Create Embeds.

In order to begin, you'll need to create embeds that will contain the select menus.

The embed command will create an embed that the bot can access and attach a menu to.

embed [#channel] [#color] ["Title"] ["Body"]

You will need the correct ["Body"] format when using the non-slash command version, which includes having all line breaks replaced with \n. You can use this tool to do this for you. Please do not include double quotes in the Title or Body field as this will result in cut-off.

The following demonstrate the correct and incorrect ["Body"] format respectively.

"This example is correct.\nThis new line will not break."
"This exmaple is not correct.
This new line will break the command."

Slash Command
This command now works with slash commands and modals! You do not need the above body formatting when using slash commands and can type as you wish for it to appear in the provided modal!

/embed [#channel]

The bot will provide a confirmation with an ID for that newly created embed. This will be required and used in all other commands as the messageid.

Here is an example of the full command's usage:

embedmessage #roles #cccccc "Pick a Role!" "This is a description of the roles available.\n\n**Note**: The bot will automatically remove roles for unchecked options."
You may also just use embed as an alias for the command.


Step 2: Add Roles!

Now that you have an embed, you can start attaching roles to that embed. Please note the bot can only attach roles to a message it has created itself.

The bot can only assign a role that is below the bot's role on the hierarchy. I strongly recommend the bot's role be placed just below your staff roles and above all other user roles.
addrole [#channel] [messageid] ["Role Name"] ["Role Description"]

You don't need a command for this anymore! On Desktop you can use the right-click context menu ("Apps") to "Add Role" to the menu using a modal!

  • Each menu is limited to 22 roles.
  • A role can, as of now, only be linked to one menu at a time.
  • Per Discord's limitations, for use in a select menu, a role name cannot exceed 25 characters, and the description cannot exceed 50 characters.

After this, no additional configuration is required! Your new roles should be available for assignment!

So, you want to use buttons instead?

You can use the command addbutton in the same manner:

addbutton [#channel] [messageid] ["Role Name"] ["Button Label"]
Please note that the version 5.0 rewrite did not include Buttons and they are currently not available. They will be reintroduced at a later date.

Step 3: Recommended Notices

There are a few notices we recommend you share to your users about the functionality of select menus and embeds. It is recommended to use the Selection Warning in the introduction and the Embed Warning at the end of your channel using the send command.

Selection Warning

Please be aware that the bot will automatically assign roles for options that are checked. It will remove options that remain unchecked. Even if you're adding one new role, make sure you check all roles you wish to have.

Embed Warning

**Can't see anything above? Try the following:**\n
Open your Discord User Settings select 'Text & Images' and then Enable 'Show website preview info from links pasted into chat' under the 'Link Preview' category.

Optional Steps

For most users, after finishing adding the roles, you'll be all set and the bot will handle the rest entirely in the background. The following additional functions exist for maintaining or enhancing the core bot experience.


Manage Roles

Role Prototype allows you to make adjustments to role menus including adding cosmetic features such as emojis.


Remove Roles

You can remove a single role with removerole:

removerole [#channel] [messageid] ["role name"]

You can remove all roles from a message with clearroles:

clearroles [messageid]
This cannot be undone! Neither the message or the menu will be deleted by the bot. However, the menu will no longer function and should be manually deleted.

Limit Roles

A locked message will allow users to obtain only one role from a menu. When they select a new role, all others will be removed automatically. This is useful for cosmetic color roles where a user needs only one.

You'll need to use the lock command after adding all roles. This command will toggle the lock status on and off.

lock [#channel] [messageid]

Add Emojis

You can add an emoji to a role selection option after it has been created. Please note you may only use default emoji or custom emoji from the same server.

setemoji [#channel] [messageid] [emoji] ["role name"]

An example from a Star Wars community.


Edit Role Descriptions

You can change the description of a role in a menu by using the settext command. Per Discord's limitations, this can only be 50 characters.

settext [#channel] [messageid] ["role name"] ["new value"]

Edit Role Labels

Beta Feature

In select menus, the label is the bold text within an option. Select Menus by default will use the role's name as a label, however, the setlabel command can customize this. When used on buttons, this command will change the button's text. With both, the limit imposed by Discord is 25 characters.

setlabel [#channel] [messageid] ["role name"] ["new value"]

Set Button Style

Added in 4.6.0 Beta Feature

You can change a button's style by using the setstyle command.

setstyle [#channel] [messageid] style ["role name"]

The following styles are allowed by Discord:

  • blurple (blue-purple)
  • red
  • green
  • grey

Role Information

You can view roles attached to a message with roles:

roles [#channel] [messageid]

You can view which channel and message a role is attached to, as well as other roles, and the lock status with getrole:

getrole ["role name"]

Override "Select None"

You can change or disable the auto-remove all field ("Select None") option by using setnone:

setnone [#channel] [messageid] "title" "description"

You may also use disable to disable the Select None option entirely for that menu. Want to re-enable? Simply use the above option and it will automatically re-enable. The defaults are "Select None" and "Select only this to remove all roles listed here."

setnone [#channel] [messageid] disable

Verification System

The verification system is designed to automatically remove members with or without a specific role after a fixed amount of time.

verify [with/without] [time] ["hour"/"hours"/"minute"/"minutes"] ["role name"]

"With"
In this setup, you would provide a user with a role upon join and your verification process will remove the role. You may use the Automated Role Assignment feature to do this. After the time expires, if the user still has the assigned role, they'll be removed.

"Without"
In this setup, you would have your verification process assign a user a role after they've completed it. After the time expires, if a user does not have the required role, they'll be removed. This setup is often used in membership-gated communities.

For example, using verify without 1 hour "Member" will kick any user who joins and does not obtain the "Member" role after one hour.

You can disable the system by using verify none


Automated Role Assignment

Added in 4.4.0

The automated role assignment system will automatically grant a role to a new user when they first join your server. This can be optionally used in coordination with the Verification System feature.

autorole ["role name"]

You can also use "none" or "disable" in place of the role name in order to disable the automatic assignment.


Manage Messages

Role Prototype allows for the management of embeds. You can use this system to create fancy rules that can be editable easily by your staff instead of relying on a single administrator to do so.


Send Plain Messages

In some cases, you'll want to use non-embedded messages. To do this, use the send command:

send [#channel] ["message to send"]

Edit Messages

You can re-customize an embed including title, body and color using editmessage:

editmessage [#channel] [messageid] [title|body|color] ["new value"]

As an example, you can change the title with the following:

editmessage #roles 12344321 title "★ Select Deez ★"

If you'd like to edit a non-embedded message created with send then use body as the field to edit. Similar to the "Add Role" right-click context menu ("Apps"), you can use "Edit Embed" to edit a Role Prototype created embed.


View a Message

In some cases you'll want to grab the contents of a message with the markdown and additional formatting for easy edits. The view command will enable you to do so:

view [#channel] [messageid]

Attach an image

You may attach an image to an embed by using the setimage command:

setimage [#channel] [messageid] [url]

As an example setimage #channel 1234567890 https://i.myimageserver.com/cutie.png

You can only provide a valid URL as an image. Uploading images directly is not supported, nor is it planned to be.

You can remove an image from an embed by using image as the field in editmessage command by itself, like so:

editmessage #channel 1234567890 image


Clone Message

The clone message feature can copy either embeded or non-embedded message into a new message. This is useful for migrating an embed from an older bot to the current.

clone #channel 1234567890
cp is an alias for clone.

Troubleshooting

The bot is designed to correct any issues it may encounter or will notify you when something isn't quite right. In most cases the error will suggest how to remedy the issue. If an unknown error occurs, please contact Teddy.

Error Messages

The role provided contains dangerous permissions and cannot be auto-assigned.
This error means you have attempted to make a role auto-assignable which contains the Administrator or Manage Server permission.

Rebuild Menu

In some very rare instances the bot may need to be forced to rebuild a menu. The rebuild command will tell the bot to rebuild a menu:

rebuild [#channel] [messageid]