=== Assignable roles

This feature enables creating and maintaining so-called 'assignable role places'. These places are messages at which buttons are added, and when a member clicks such a button, a configured role, is assigned to the user.
A place can be disabled, which causes the buttons to become disabled. Such places can be made 'unique', which means that users can only have one role available in the place.

Deleting the actual role behind an assignable role causes the assignable role place to become non-functional: the button will remain and can still be clicked, but users will receive and error message.

Feature key: `assignableRole`


==== Commands
Create a new assignable role place::
* Usage: `createAssignableRolePlace <name> <channel> <text>`
* Description: Creates a new assignable role place with the key `name`. The `text` will be shown in the description of the first message.
When the place is setup, it will be posted in the `channel`. The created place is active and inline by default.

Add a role to an assignable role place::
* Usage: `addRoleToAssignableRolePlace <name> <role> <text> [emote]`
* Description: Adds to the assignable role place identified by `name` an additional assignable role. The `role` will be assigned when a member adds the reaction. The `text` will be the text of the button, and the optional `emote` will be used in the button.
It is required that `emote` is usable by Abstracto.

Create the assignable role place in discord::
* Usage: `setupAssignableRolePlace <name>`
* Description: Posts the message of the assignable role place identified by `name` to the configured channel in discord. This will delete the old message connected to this assignable role place, if there is any.

Remove a role from an assignable role place::
* Usage: `removeRoleFromAssignableRolePlace <name> <role>`
* Description: Removes from the assignable role place identified by `name`, the button associated with the role `role`. If the role was deleted in the meantime, providing the role ID works as well.

Show the current configuration for an assignable role place::
* Usage: `showAssignableRolePlaceConfig <name>`
* Description: This command displays the current configuration of assignable role place identified by `name`.

Move an assignable role place to another channel::
* Usage: `moveAssignableRolePlace <name> <newChannel>`
* Description: Moves the assignable role place identified by `name` to be in `newChannel`. If the place is currently shown, this will immediately delete the message and create the place in the given `newChannel`.

Deactivate the assignable role place::
* Usage: `deactivateAssignableRolePlace <name>`
* Description: Deactivates the buttons of the assignable role place identified by `name`.

Activate the assignable role place::
* Usage: `activateAssignableRolePlace <name>`
* Description: Activates the buttons of the assignable role place identified by `name` and enables the assignment of roles.

Change configuration of assignable role place::
* Usage: `changeAssignableRolePlaceConfig <name> <key> <newValue>`
* Description: Changes the config attribute indicated by `key` of the place identified by `name` to `newValue`. The possible key is `unique` and it can take `true`/`false` as `newValue`.

Delete an assignable role place::
* Usage: `deleteAssignableRolePlace <name>`
* Description: Completely deletes the assignable role place identified by `name`. This includes any trace in the database and the current message, if any.

Change description text of assignable role place::
* Usage `editAssignableRolePlaceText <name> <newText>`
* Description: Changes the text which is shown in the message of the assignable role place identified by `name` to `newText`. This changes the message immediately.

Create an assignable role condition::
* Usage: `addAssignableRoleCondition <name> <role> <conditionKey> <conditionValue>`
* Description: Creates a condition for the given assignable role identified by `role` for the assignable role place identified by `name`. There only exist one `conditionKey` right now, which is `min_level`. The given `conditionValue` for this condition must be a number between 1 and 150.

Delete an assignable role condition::
* Usage: `removeAssignableRoleCondition <name> <role> <conditionKey>`
* Description: Removes the assignable role condition `conditionKey` for `role` in the assignable role place identified by `name`. There only exist one `conditionKey` right now, which is `min_level`.