Maintainer: @moussetc
This plugin creates a slash command to display spoiler messages in a non-spoiling way.
Type /spoiler followed by your spoiler, then post your message. The spoiler can be on more than one line, it can contain emojis, URLs, inline images, etc., they will be hidden . You can also add some context to your spoiler that will be always visible, by writing /spoiler "Visible spoiler caption" Hidden spoiler content.
Two display modes are available for spoiler messages:
-
Redacted mode:

This mode is not available on native apps like Android. Native apps do not support UI customization, so for now they will use the Spoiler button mode.
Warning
Plugin limitations:
- File attachments cannot be hidden, use inline images instead!
- spoiler content cannot be edited once it's posted
Use the following table to find the correct plugin version for each Mattermost server version:
| Mattermost server | Plugin release | Incompatibility |
|---|---|---|
| 6.5 and higher | v4.0.x and higher | breaking plugin API changes |
| 5.39.0 and higher | v3.1.x | security fixes (upgrading dependencies) |
| 5.14 to 5.25 | v3.x.x | relative integration URLs |
| 5.3 to 5.13 | v2.x.x | |
| below | not supported | plugins can't create slash commands |
- Download the release package and download the
.tar.gzpackage. Supported platforms are: Linux x64, Windows x64, Darwin x64, FreeBSD x64. - Use the Mattermost
System Console > Plugins > Managementpage to upload the.tar.gzpackage - Activate the plugin in the
System Console > Plugins > Managementpage - Choose the display mode: go to the System Console > Plugins > Spoiler Command, select the mode and save the plugin's settings.

If you are running Mattermost v5.11 or earlier in High Availability mode, please review the following:
- To install the plugin, use these documented steps
- Then, modify the config.json using the standard doc steps to the following
"PluginSettings": {
// [...]
"PluginStates": {
// [...]
"com.github.moussetc.mattermost.plugin.spoiler": {
"Enable": true,
"SpoilerMode": "button"
},
}
}To avoid having to manually install your plugin, build and deploy your plugin using one of the following options. In order for the below options to work, you must first enable plugin uploads via your config.json or API and restart Mattermost.
"PluginSettings" : {
...
"EnableUploads" : true
}If your Mattermost server is running locally, you can enable local mode to streamline deploying your plugin. Edit your server configuration as follows:
{
"ServiceSettings": {
...
"EnableLocalMode": true,
"LocalModeSocketLocation": "/var/tmp/mattermost_local.socket"
},
}and then deploy your plugin:
make deploy
You may also customize the Unix socket path:
export MM_LOCALSOCKETPATH=/var/tmp/alternate_local.socket
make deploy
If developing a plugin with a webapp, watch for changes and deploy those automatically:
export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_TOKEN=j44acwd8obn78cdcx7koid4jkr
make watch
To speed up development, you can also set the following to only build for your current architecture:
MM_DEBUG=true
MM_SERVICESETTINGS_ENABLEDEVELOPER=true
Alternatively, you can authenticate with the server's API with credentials:
export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_USERNAME=admin
export MM_ADMIN_PASSWORD=password
make deploy
or with a personal access token:
export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
export MM_ADMIN_TOKEN=j44acwd8obn78cdcx7koid4jkr
make deploy
Feel free to create a GitHub issue or to contact me at @cmousset on the community Mattermost instance to discuss.
