Go to file
Miikka Virtanen 9b3cce1694 README: add more info on snippet commands 2017-07-24 03:56:08 +03:00
attachments Add attachment rehosting; forward attachments in replies 2016-12-16 09:26:05 +02:00
db Start huge refactor 2017-02-10 04:56:36 +02:00
logs Add log saving and serving 2016-12-06 02:29:55 +02:00
src Add !edit_snippet for editing snippets. Add !snippets to list all available snippets. 2017-07-24 03:54:03 +03:00
.editorconfig Initial commit 2016-12-06 00:25:20 +02:00
.eslintrc Update .eslintrc 2017-07-24 03:27:34 +03:00
.gitignore Add new user greetings 2017-02-10 07:04:23 +02:00
.nvmrc Update .nvmrc 2017-07-24 02:48:54 +03:00
LICENSE.md Add MIT license 2017-03-01 09:58:53 +02:00
README.md README: add more info on snippet commands 2017-07-24 03:56:08 +03:00
config.example.json Made alwaysReply configurable 2017-05-01 09:14:28 +00:00
package-lock.json Transliterate non-ascii names for channel names properly 2017-07-24 02:41:31 +03:00
package.json Update requirements and add a start command to package.json 2017-07-24 02:46:55 +03:00
update.sh Major refactor about done 2017-02-10 06:36:47 +02:00

README.md

Modmail for Discord

A bot for Discord that allows users to DM the bot to contact the server's entire mod team. These DMs get relayed to a modmail server where each user gets their own channel, or "thread". Moderators and admins can then reply to these threads, and these responses are relayed back to the original user as a DM.

Inspired by Reddit's modmail system.

Setup

  1. Install Node.js 8 or higher
  2. Clone or download this repository
  3. Create a Discord server to be used as the modmail inbox
  4. Make a copy of the file config.example.json in the same folder and name the copy config.json. Open the file and fill in the values.
  5. Install dependencies: npm install
  6. Add bot to servers, and make sure to give it proper permissions on the mail server.
  7. Run the bot: npm start

Commands

Anywhere on the modmail inbox server

!logs <user> Lists previous modmail logs with the specified user
!block <user> Blocks the specified user from using modmail
!unblock <user> Unblocks the specified user from using modmail
!s <shortcut> <text> Adds a snippet (a canned response). See below for how to use it.
!edit_snippet <shortcut> <text> Edits an existing snippet (alias !es)
!delete_snippet <shortcut> Deletes the specified snippet (alias !ds)
!snippets Lists all available snippets

Inside a modmail thread

!reply <text> Sends a reply to the user in the format "(Role) User: text" (alias !r)
!anonreply <text> Sends an anonymous reply to the user in the format "Role: text" (alias !ar)
!close Closes the modmail thread and saves a log of it
!logs Lists previous modmail logs with this user
!block Blocks the user from using modmail
!unblock Unblocks the user from using modmail
!!shortcut Reply with a snippet. Replace shortcut with the snippet's actual shortcut.

To automatically reply without using !reply or !r, enable alwaysReply in the config. alwaysReplyAnon sets whether to reply anonymously. If you do not wish to reply, it will ignore any message starting in the prefix (which defaults to !), such as !note

Configuration options

These go in config.json. See also config.example.json.

Option Default Description
token None Required! The bot user's token
mailGuildId None Required! The inbox server's ID
mainGuildId None ID of the main server where people contact the bot from, used for e.g. displaying users' nicknames
prefix "!" Prefix for bot commands
status "Message me for help" The bot's "Playing" text
responseMessage "Thank you for your message! Our mod team will reply to you here as soon as possible." The bot's response to DMs that start a new thread
alwaysReply false If set to true, all messages in modmail threads will be relayed back to the user, even ones without !r
alwaysReplyAnon false If alwaysReply is set to true, this option controls whether the auto-reply is anonymous
useNicknames false If set to true, mod replies will use their nickname (on the inbox server) instead of their username
ignoreAccidentalThreads false If set to true, the bot attempts to ignore common "accidental" messages that would start a new thread, such as "ok", "thanks", etc.
enableGreeting false Set to true to send a welcome message to new main guild members. Requires mainGuildId to be set.
greetingMessage None Text content of the welcome message
greetingAttachment None Path to an image or other attachment to send along with the greeting
port 8890 Port from which to serve attachments and logs
url None URL to use for attachment and log links. Defaults to IP:PORT
snippetPrefix "!!" Prefix to use snippets. Defaults to prefix x2.