Modmail Versions Save

A Discord bot that functions as a shared inbox between staff and members, similar to Reddit's Modmail.

v4.1.0

5 months ago

Drops support for Python 3.9. Python 3.10 and Python 3.11 are now the only supported versions.

Fixed

  • GIF stickers no longer cause the bot to crash.
  • ?alias make/create as aliases to ?alias add. This improves continuity between the bot and its command structure. (PR #3195)
  • Loading the blocked list with the ?blocked command takes a long time when the list is large. (PR #3242)
  • Reply not being forwarded from DM. (PR #3239)
  • Cleanup imports after removing/unloading a plugin. (PR #3226)
  • Fixed a syntactic error in the close message when a thread is closed after a certain duration. (PR #3233)
  • Removed an extra space in the help command title when the command has no parameters. (PR #3271)
  • Corrected some incorrect config help descriptions. (PR #3277)
  • Rate limit issue when fetch the messages due to reaction linking. (PR #3306)
  • Update command fails when the plugin is invalid. (PR #3295)

Added

  • ?log key <key> to retrieve the log link and view a preview using a log key. (PR #3196)
  • REGISTRY_PLUGINS_ONLY, environment variable, when set, restricts to only allow adding registry plugins. (PR #3247)
  • DISCORD_LOG_LEVEL environment variable to set the log level of discord.py. (PR #3216)
  • STREAM_LOG_FORMAT and FILE_LOG_FORMAT environment variable to set the log format of the stream and file handlers respectively. Possible options are json and plain (default). (PR #3305)
  • LOG_EXPIRATION environment variable to set the expiration time of logs. (PR #3257)
  • New registry plugins: autoreact and rename.
  • Improved join/leave message for multiple servers.

Changed

  • Repo moved to https://github.com/modmail-dev/modmail.
  • Channel name no longer shows -0 if the user has migrated to the new username system.
  • ?note and ?reply now allows you to send a sticker without any message.
  • Guild icons in embed footers and author urls now have a fixed size of 128. (PR #3261)
  • Discord.py internal logging is now enabled by default. (PR #3216)
  • The confirm-thread-creation dialog now uses buttons instead of reactions. (PR #3273)
  • ?disable all no longer overrides ?disable new. (PR #3278)
  • Dropped root privileges for Modmail running under Docker. (PR #3284)

Internal

  • Renamed Bot.log_file_name to Bot.log_file_path. Log files are now created at temp/logs/modmail.log. (PR #3216)
  • ConfigManager.get no longer accepts two positional arguments: the convert argument is now keyword-only.
  • Various dependencies have been updated to their latest versions.

v4.0.0

1 year ago

Modmail v4 is out with support for discord.py v2 and a variety of miscellaneous changes.

Breaking

Added

  • use_hoisted_top_role config to use change how default mod tags work, see v3.10.0#Added for details. (PR #3093)
  • require_close_reason config to require a reason to close a thread. (GH #3107)
  • plain_snippets config to force all snippets to be plain. (GH #3083)
  • ?fpareply and ?fpreply to reply to messages with variables plainly.
  • use_nickname_channel_name config to use nicknames instead of usernames for channel names. (GH #3112)
  • use_random_channel_name config to use random nicknames vaguely tied to user ID. It is unable to be computed in reverse. (GH #3143)
  • show_log_url_button config to show Log URL button. (GH #3122)
  • Select menus for certain paginators.
  • Title field in ?logs. (GH #3142)
  • Snippets can be used in aliases. (GH #3108, PR #3124)
  • ?snippet make/create as aliases to ?snippet add. (GH #3172, PR #3174)

Improved

  • Modmail now uses per-server avatars if applicable. (GH #3048)
  • Use discord relative timedeltas. (GH #3046)
  • Use discord native buttons for all paginator sessions.
  • ?help and ?blocked paginator sessions now have better multi-page UI.
  • Autoupdate now automatically updates pipenv dependencies if possible.

Fixed

  • Several minor typos. (PR #3095, PR #3116)
  • Certain cases where fallback categories were not working as intended. (PR #3109)
  • ?contact would create in a random category in silent mode. (GH #3091, PR #3092)
  • Certain cases where ?close would fail if closer isn't in cache. (GH #3104, PR #3105)
  • Stickers now work in Modmail.
  • Large server sizes results in Guild.name == None. (GH #3088)
  • Attachments now work on plain replies. (GH #3102)
  • Support LOTTIE stickers. (GH #3119)
  • Editing notes now work. (GH #3094)
  • Commands now work in threads.
  • Audit log searching now properly works.
  • Old data causing ?blocked to fail. (GH #3131)
  • Delete channel auto close functionality now works.
  • Improved error handling for autoupdate. (PR #3161)
  • Skip loading of already-loaded cog. (PR #3172)
  • Respect plugin's cog_command_error. (GH #3170, PR #3178)
  • Use silent as a typing literal for contacting. (GH #3179)

Internal

  • Improve regex parsing of channel topics. (GH #3114, PR #3111)
  • Add warning if deploying on a developmental version.
  • Extensions are now loaded on_connect.
  • MongoDB v5.0 clients are now supported. (GH #3126)
  • Bump python-dotenv to v0.20.0, support for python 3.10
  • Bump emoji to v1.7.0
  • Bump aiohttp to v3.8.1
  • Bump lottie to v0.6.11
  • Remove deprecated core/decorators.py from v3.3.0

Full Changelog: https://github.com/kyb3r/modmail/compare/v3.10.2...v4.0.0

v3.10.0

2 years ago

v3.10 adds group conversations while resolving other bugs and QOL changes. It is potentially breaking to some plugins that adds functionality to threads.

Breaking

  • Thread.recipient (str) is now Thread.recipients (List[str]).
  • Thread.reply now returns mod_message, user_message1, user_message2... It is no longer limited at a size 2 tuple.

Added

  • Ability to have group conversations with up to 5 users. (GH #143)
  • Snippets are invoked case insensitively. (GH #3077, PR #3080)
  • Default tags now use top hoisted role. (GH #3014)
  • New thread-related config - thread_show_roles, thread_show_account_age, thread_show_join_age, thread_cancelled, thread_creation_contact_title, thread_creation_self_contact_response, thread_creation_contact_response. (GH #3072)
  • use_timestamp_channel_name config to create thread channels by timestamp.

Improved

  • ?contact now accepts a role or multiple users (creates a group conversation). (GH #3082)
  • Aliases are now supported in autotrigger. (GH #3081)

Fixed

  • Certain situations where the internal thread cache breaks and spams new channels. (GH #3022, PR #3028)
  • Blocked users are now no longer allowed to use ?contact and react to contact. (COMMENT #819004157, PR #3027)
  • UnicodeEncodeError will no longer be raised on Windows. (PR #3043)
  • Notifications are no longer duplicated when using both ?notify and subscribe. (PR #3015)
  • ?contact now works properly with both category and silent. (GH #3076)
  • close_on_leave_reason now works properly when close_on_leave is enabled. (GH #3075)
  • Invalid arguments are now properly catched and a proper error message is sent.
  • Update database after resetting/purging all plugins. (GH #3011)
  • thread_auto_close timer now only resets on non-note and replies from mods. (GH #3030)
  • Deleted messages are now deleted on both ends. (GH #3041, @JerrieAries)
  • Persistent notes are now properly deleted from the database. (GH #3013)
  • Modmail Bot is now recognized to have OWNER permission level. This affects what can be run in autotriggers.

Internal

  • Fix return types, type hints and unresolved references (PR #3009)
  • Reload thread cache only when it's the first on_ready trigger. (GH #3037)
  • format_channel_name is now extendable to plugins. Modify Bot.format_channel_name(bot, author, exclude_channel=None, force_null=False):. (GH #2982)

v3.9.5

2 years ago

Internal

  • Bumped discord.py to v1.7.3, updated all other packages to latest.
  • More debug log files are now kept.
  • Resolve SSL errors by retrying without SSL

v3.9.4

3 years ago

Fixed

  • Certain cases where fallback categories were not working as intended. (GH #3002, PR #3003)
  • There is now a proper message when trying to contact a bot.

Improved

  • ?mention can now be disabled with ?mention disable. (PR #2993)
  • ?mention now allows vague entries such as everyone or all. (PR #2993)

Internal

  • Change heroku python version to 3.9.4 (PR #3001)

v3.9.0

3 years ago

Breaking

  • on_thread_initiate and on_thread_ready events now have thread, creator, category, initial_message as additional arguments.

Fixed

  • confirm_thread_creation now properly works when a user opens a thread using react to contact. (GH #2930, PR #2971)
  • ?disable all/new now disables react to contact threads. (GH #2969, PR #2971)
  • Ghost errors are no longer raised when threads are created using non-organic methods.

Internal

  • thread.reply now returns (msg_to_user, msg_to_thread). Can be useful in plugins.

v3.8.5

3 years ago

Added

  • ?msglink <message id>, allows you to obtain channel + message ID for T&S reports. (GH #2963, PR #2964)
  • ?mention disable/reset, disables or resets mention on thread creation. (PR #2951)

Fixed

  • Non-master/development branch deployments no longer cause errors to be raised.
  • Autotriggers now can search for roles/channels in guild context. (GH #2961)

v3.8.4

3 years ago

This update is a quick hotfix for a weird behaviour experienced on 1 Feb 2021 where users were not properly cached.

Fixed

  • Corrupted data is no longer saved to thread cache.

v3.8.3

3 years ago

This update is a quick hotfix for a weird behaviour experienced on 1 Feb 2021 where users were not properly cached.

Fixed

  • Corrupted data is no longer saved to thread cache.

v3.8.2

3 years ago

Fixed

  • Retry with null-discrim if channel could not be created. (GH #2934)
  • Fix update notifications.
  • Retrieve user from Discord API if user has left the server, resolving issues in ?block. (GH #2935, PR #2936)
  • IDs in <member> commands work now.