=== Mod mail

This feature enables users to contact the moderation of the server in a private manner. This can be initiated by messaging the Abstracto bot.
The messages, in the channel which is created to contain the mod mail thread, are not automatically sent to the user, but only when using the commands
`reply` or `anonReply`. Any other message is ignored with the intention of enabling discussions within the channel. In case the message of a message sent to the user
needs to be updated or deleted, you can do simply by editing/deleting the message containing the command.

Feature key: `modmail`

==== Necessary bot permissions
`MANAGE_CHANNEL` to create the channels representing the mod mail threads

==== Workflow
* User messages the Abstracto bot
* If Abstracto is active in multiple servers with mod mail enabled, the user is prompted to which server he wants to open a mod mail thread for.
* A channel in the mod mail category is created for the user and notification is sent that a new mod mail thread has been opened
* User can send messages in the private channel and they get relayed to this created text channel.
* Moderators can answer in the thread with the respective commands
* Moderators close the thread
* The interactions between the user and the moderators gets logged in the mod mail logging channel

==== Relevant system configuration
`modmailCategory`:: The category on the server which is used to hold the text channels representing the threads

`modMailClosingText`:: The text being used when notifying the user when a thread is closed.

==== Post targets
`modmailPing`:: Will be used to send the notification when a new thread is opened.
`modmailLog`:: Will be used to log the interactions when a thread is closed.

==== Feature modes
`log`:: If this is enabled, the messages should be logged into the `modmailLog` post target when the thread is closed (by the respective commands). This is required for the command `closeNoLog` to be available. Enabled by default.
`threadMessage`:: If this is enabled, every message which is send via the commands `reply` and `anonReply` will also be sent to the thread in order to have a visualizer how the message looks
and to have a clear indication which messages were sent. Enabled by default.


==== Emotes
* `readReaction` to indicate to the user that the message sent was processed

==== Commands
Opening a mod mail thread for a user::
* Usage: `contact <member>`
* Description: Creates a new mod mail thread with the `member`. Does not send a notification about the new thread.
Adding a role to the roles responsible for managing mod mail threads::
* Usage: `setModMailRole <role>`
* Description: Adds this role to the roles responsible for mod mail threads, which means: this role will be pinged when a new thread is created and this role is automatically added to the roles allowed to execute all commands related to mod mail.
Removing a role from the roles responsible for managing mod mail threads::
* Usage: `removeModMailRole <role>`
* Description: Removes this role from the roles responsible for mod mail threads, which means: this role will no longer be pinged when a new thread is created and this role will also be removed from the roles allowed to execute all commands related to mod mail.
Changing the category in which the text channels are created::
* Usage: `setModMailCategory <categoryId>`
* Description: Sets the category which Abstracto uses to create the text channels containing the mod mail threads. The existing threads will not be migrated automatically.

NOTE: The following commands are only available within a mod mail thread.

Replying to a mod mail thread::
* Usage `reply [text]`
* Description: Sends `text` to the user if provided. `text` is optional, because its also possible to only send a picture.
Replying anonymously to a mod mail thread::
* Usage: `anonReply [text]`
* Description: Sends `text` to the user without showing how is the author. Instead the avatar and name of Abstracto will be used.
Enabling notifications of messages sent by the user::
* Usage: `subscribe`
* Description: Subscribes you to the current thread, and will ping you when a new message from the member arrives.
Disabling notifications of messages sent by the user::
* Usage: `unSubscribe`
* Description: Removes your subscription from the current thread, and you will no longer be notified when a message from the member arrives.
Closing the mod mail thread::
* Usage: `close [note]`
* Description: Closes the thread, deletes the text channel containing the thread and logs the interactions between the member and the moderators in the `modmailLog` post target. (only if `modmail_logging` is enabled)
When closing a thread, a closing header with general information will be send and the note will be displayed there.
When a thread is closed this way the user is notified of this.
Closing the mod mail thread without notifying the user::
* Usage: `closeSilently [note]`
* Description: Closes the thread, deletes the text channel containing the thread and logs the interactions between the member and the moderators in the `modmailLog` post target. (only if `modmail_logging` is enabled)
When closing a thread, a closing header with general information will be send and the note will be displayed there.
Close a thread without logging::
* Usage: `closeNoLog`
* Description: Closes the thread without notifying the user and without logging the messages.
* Mode Restriction: This command is only available when the feature mode `log` is enabled.

