Changelog

What’s new in ModMailBot

Every server runs the latest version, so there is nothing to install. If an update ever needs something from you, its notes say so first, under Action needed. Run /version to see which version is live.

Versions

Version 1.4.3

/help shows anyone how ModMailBot works. The bot’s status now says /help | ModMailBot.

New

  • /help shows how the bot works: how members open a ticket, what staff do, and where admins start. It links the setup guide, the command reference and the support server, and only the person who runs it sees the reply. If you hid the bot’s commands from members under Server Settings → Integrations, /help is hidden too: the setup guide shows how to let members use it.

Changed

  • The bot’s status under its name now says /help | ModMailBot, so members know where to start, and can tell which bot it is if your server gave it another name.

All versions · Top

Version 1.4.2

Backups are now kept for 90 days instead of a year, and /data delete is shorter and says when the backup copies are gone.

Changed

  • /data delete is shorter, and says where your data goes. It deletes your server’s data from our database at once, as before. Its confirmation and its reply are shorter, and say that encrypted backup copies are gone within 90 days.

Privacy

  • Backups kept 90 days, not a year. Backups follow the 3-2-1 rule: three copies of the data, on two kinds of storage, one of them off-site. Every four weeks we export our databases, encrypt the export with a key only we hold, and keep it in Proton Drive, outside our Cloudflare account. We keep the three newest exports, so deleted data is gone from every backup within 90 days. The privacy policy and the subprocessor list say so.

All versions · Top

Version 1.4.1

ModMailBot now shows as online in your member list, with “Run /setup to get started” under its name.

Changed

  • The bot shows as online. It showed as offline before, though it answered every command. Its status now says Run /setup to get started. Commands work as they did.

Privacy

  • Nothing new is collected. The bot keeps one connection to Discord open, only for its online status, which some servers prefer to see. A bot can use that connection to get a live feed of each server, messages included. We decided against that, for your server’s privacy, so ModMailBot asks for none of it.

All versions · Top

Version 1.4.0

Each panel can now show its own ticket types. /panel add puts a panel in another channel with the types you pick, and /panel buttons changes which types a panel shows.

New

  • Panels with their own buttons. Each panel shows the ticket types you choose for it, so #help can offer Report a member and Ask a mod while #appeals offers Ban appeal alone. Your panels keep every button they have now.
  • /panel add puts a panel in another channel without going back through /setup: pick its ticket types, keep the default text or write your own, then publish. It refuses a channel that already has a panel.
  • /panel buttons changes which ticket types a panel shows. A panel keeps at least one button. Without channel:, it lists your panels to pick from when you have more than one.

Changed

  • New ticket types and your panels. With one panel, a new ticket type goes on it, as before. With panels in two or more channels, /config ticket add and the setup wizard ask which panels show it. Until you pick, members can’t open it, and staff still can with /create. A restored type goes back on the panels it was on; if none of your panels shows it now, it stays on none, and the reply offers to place it.
  • /config view lists your panels and the ticket types each one shows, and lists the types no panel shows in a section of their own. /diagnose names those types too.
  • Picking a panel’s channel in /panel delete, /panel settext and /panel buttons lists only the channels that have a panel, as you type.
  • A button you take off a panel stops opening tickets at once, before the panel updates: a member who presses it is told to use another button. A type no panel shows can’t be opened by members at all.

All versions · Top

Version 1.3.0

Panels now update themselves when you change your ticket types, and setup ends by offering to announce the panel to your members. /archive now queues tickets so large ones finish, and /config ticket restore brings back a removed ticket type.

New

  • Announce your panel. Once the panel is published, /setup offers to post a short announcement that points members at it, and shows you the text before anything goes out.
  • Panels keep up with your ticket types. Adding, removing, restoring or editing a ticket type (its name, button color or place), or changing its emoji, updates every panel in your server within seconds. The daily check now compares each panel with your settings, not only whether it still exists, and repairs any that differ. A panel holds 25 buttons, and the reply names the types left without one.
  • /config ticket restore brings back a removed ticket type with its settings, in the place it had. It’s refused while a type on your panels has the same name, upper and lower case alike.
  • A welcome page. Adding the bot from the website now ends on a page with the three things to do first, and the install message links to it. Cancel instead, and a page explains what the permissions are for.
  • The /close message says when it’s over. When a ticket closes on its countdown or with /forceclose, the message loses its buttons and says the ticket closed. Messages posted before this update keep their buttons.
  • /diagnose checks more: the permissions the bot needs server-wide to open tickets, and button emoji Discord may refuse.

Changed

  • /archive queues the ticket, so large tickets have time to finish: they used to be cut off partway. It checks the ticket and says the transcript will follow within a few minutes, and the log channel gets a note when it’s done. If archiving fails, staff are told, and the ticket waits for /archive or /reopen.
  • Automatic archiving stops after three tries. A ticket that fails to archive is tried three times, an hour apart, then you get one notice to archive it by hand. It used to retry every hour, with a notice each time. If the archive channel refuses the bot, automatic archiving turns off for that ticket type, with a notice that says how to turn it back on.
  • Reopening needs the rank closing needs. /reopen and /forceclose now also need the ticket type’s close rank, where that is higher. On servers that add the bot from this version on, whoever can close a ticket can reopen it. Servers that already have the bot keep /reopen at rank 4 unless they had set their own, and /config staff gate changes it.
  • Log and archive channels must be private. Pick one in /setup, /config log-channel or /config ticket add or edit, and a channel members can see is refused, with the reason. The bot adds itself to the channel you pick and refuses one it still can’t use, naming what’s missing. Before, such a channel was saved anyway.
  • Removing a ticket type says what happened. If the type was never used for a ticket, it’s deleted. If it was, it comes off your panels and is kept for those tickets: /config view lists it under Removed ticket types, and other /config ticket commands refuse it until it’s restored. Your last ticket type can’t be removed: add its replacement first.
  • sort: counts the types on your panels. Removed types no longer count, and keep their places.
  • /data delete also deletes the bot’s panel messages, and names any it couldn’t reach, for you to delete.
  • Notices name the ticket’s channel, as in “ticket #12 (#sam-report-a-member)”, not only its number. Every post an archive makes leads with the ticket and its type, so two archives posting at once are easy to tell apart.
  • Button emoji. An emoji Discord won’t accept is refused when you set it, and if Discord turns down the new emoji when the bot updates your panels, the previous one is put back. A saved emoji that isn’t a single emoji is left off its button, so your panels can still be updated, and /diagnose names it. To set one, type : and pick it from Discord’s list.
  • /config cleartickets only closes ticket records whose channel is gone. A ticket whose channel still exists is listed for /forceclose instead.
  • Setup screens. Back goes to the screen before. The staff screens start from your current staff roles, and an optional rank can be cleared. Quick setup names rank 2 “Staff”, as custom setup does (it said “Moderator”). The channel screens say not to sync permissions if you move one of the bot’s channels into another category.

Fixed

  • A ticket closes at the time the member was shown, and a long countdown no longer holds up other tickets that are due.
  • Pressing I need more assistance once a ticket has started closing tells the member it’s closing, without pinging staff. Pressed before that, it still keeps the ticket open.
  • After a failed automatic archive, /archive and /reopen work straight away. For up to an hour after, they used to say the ticket was already being archived.
  • A new ticket type no longer jumps to the front of the panel after you’ve reordered types with sort:.
  • Setup, /config ticket add and setup’s Add a ticket type no longer take their settings from a ticket type you had removed, and setup no longer gives that type your staff role and channels. They use your default type, the first one on the panel.
  • Closing a ticket no longer tells staff to remove a member whose access was already gone.
  • In setup, a failed publish says what went wrong, and clicks while it’s working get a short note instead of being dropped.
  • Create them for me names the permission the bot is missing, or Discord’s limit of 500 channels, and removes the channels it made if a later step fails.
  • /panel delete no longer forgets a panel whose message it couldn’t delete.
  • A deleted archive channel no longer stops the bot updating your other archive channels and the log channel when you change staff ranks or a ticket type. /diagnose names the deleted channel.
  • /config view no longer goes unanswered on a server with many ticket types. A view too long for one message continues over up to five, numbered.

Privacy

  • We count visits to our install links, and the installs and cancelled installs that come through them, in daily totals per link that hold no IP address, cookie, user ID or server ID. When you add the bot through one of those links, the website keeps your server’s ID and the link until the bot has counted the install, for about an hour at most. Nothing keeps which link your server came through.
  • The bot keeps daily counts of why a ticket couldn’t be opened, such as the member being blocked or already having one open. They hold no user IDs, and help us troubleshoot pain points for future bug fixes.
  • Audit log entries are now deleted after 180 days.
  • The privacy policy has the details.

All versions · Top

Version 1.2.0

The guide became a step-by-step setup guide, with new reference and help pages beside it. Archive failure notices also appear in the ticket’s channel, not only in the log channel.

New

  • Archive failures are reported in the ticket’s channel too. The notice goes there as well as to your log channel, and says so if no log channel is set or the bot can’t reach it.
  • /diagnose warns when a ping role can’t actually be pinged, because Discord won’t let the bot mention it, and its warnings now come first in the report.
  • Website: the guide is now a step-by-step setup guide, beside two new pages: a reference for every command and permission, and help & troubleshooting, which replaces the FAQ. Old FAQ links still work.

Changed

  • “Staff rank” replaces “tier” in replies, setup and most command descriptions.
  • Staff can only open a ticket type they can see. /create and Open Modmail refuse a type whose channels the staff member couldn’t see.
  • Setup names the channels it creates #ticket-archive and #ticket-log (they were #archive and #modmailbot-logs). Channels it made before keep their names.
  • Archive notices in the log channel lead with the ticket type, as in “Report a member ticket #12 archived”.
  • The install message says Discord shows /setup only to Administrators, so someone who added the bot with Manage Server knows to ask one, and it links to the setup guide. /support and /diagnose link to the website’s help and reference.

Fixed

  • /diagnose checks Read Message History on the ticket category. Archiving needs it, and without it a transcript came out empty.

All versions · Top

Version 1.1.2

You can choose where each ticket type sits on the panel, and add hint text to intake questions. Custom setup now names rank 2 Staff.

New

  • sort: on /config ticket edit sets a ticket type’s place on the panel and in pickers. The first type is the default for /create and Open Modmail, and /config view marks it.
  • /config ticket placeholder sets the grey hint text inside an intake question’s answer box.

Changed

  • Custom setup names rank 2 “Staff”, not “Support”. Servers already set up keep their names.

All versions · Top

Version 1.1.1

Each ticket type’s channels are now visible only to the staff ranks that handle it.

Fixed

  • Ticket channels follow each type’s audience. Staff see a type’s channels from the lowest rank among that type’s roles upward, and never below its close rank. Before, a close rank of 1 let every rank see every ticket. Ticket channels already open kept their permissions.
  • Escalation roles get the ticket channel directly, so they can see the ticket they are pinged into.
  • Archive channels follow the same rule, unless the ticket type has its own archive rank.

All versions · Top

Version 1.1.0

/create suggests ticket types by name, and new servers start with a Contact Us panel. /diagnose now warns about two common setup problems.

New

  • /diagnose warns when a role gives the bot Administrator, naming the role (the bot never needs it), and when a channel restriction under Server Settings → Integrations would stop staff commands working inside tickets.
  • A FAQ on the website that covers both.

Changed

  • /create suggests ticket types by name as you type, instead of taking a number. In /config ticket commands the option is now called type (it was id).
  • A ticket type has one name, used on its button, in pickers, in archives and in transcript file names. Types whose name and button label had drifted apart now use the button label.
  • New servers start with “Contact Us” as the panel heading and the first ticket type. Servers already set up keep theirs.

All versions · Top

Version 1.0.2

Transcript files are now named after the member and the ticket type.

Changed

  • Transcript file names read like sam-report-a-member-transcript.html instead of ticket-12-transcript.html. Long transcripts keep their part numbers.

All versions · Top

Version 1.0.1

Opening a ticket can no longer stall without a word.

Fixed

  • A ticket that stalls while opening now fails cleanly. The member is told, their form answers are shown back to them to copy, and the half-made channel is removed.

All versions · Top

Version 1.0.0

The first public release.

New

  • A panel button members press to open a private ticket channel with your staff, after a short form.
  • Staff ranks decide who sees, closes and archives each ticket type.
  • /close asks the member to confirm, with a countdown. /forceclose, /reopen and /create cover the rest.
  • Transcripts are posted to your own archive channel, files included.
  • /setup walks you through it, and /diagnose checks the bot’s permissions.
  • The bot never asks for Administrator and never stores message content.