Due to updates to discord.js, this package is no longer necessary and should no longer be used.
Sanitize Role Mentions is a Node library to improve the way discord.js handles sending messages with role mentions.
Discord's Mention Everyone
permission was updated to also include the ability to mention any role on the server, but discord.js's client option disableMentions
doesn't account for this when set to "everyone"
. This package can be used to fix discord.js's behavior by replacing a message's mention tag with plain text that looks like @role-name
. The package replaces the send()
method for Guild Text Channels, so you don't need to modify any of your code to use it - simply require()
the package at the top of your code.
Role mentions are only replaced with plain text if the following conditions are met:
client.options.disableMentions
is set to"everyone"
- The client has the permission flag
131072
, otherwise known asMention @everyone, @here, and All Roles
, in the target guild (this condition will also pass if the client has the permission flag8
, otherwise known asAdministrator
) - The role being mentioned is not marked as
mentionable
These conditions prevent the bot from replacing role mentions that you actually want it to mention.
Use the package manager npm to install Sanitize Role Mentions
npm i @haileybot/sanitize-role-mentions
// Require the package and use "()" to run the function it contains
require("@haileybot/sanitize-role-mentions")();
// Set the client option "disableMentions" to "everyone"
const { Client } = require("discord.js");
const client = new Client({
disableMentions: "everyone"
});
// Put the rest of your bot code as-is, no changes necessary
This project is licensed under AGPL-3.0