diff --git a/packages/discord.js/src/util/Util.js b/packages/discord.js/src/util/Util.js index 7a8d57ff36ac..1e86552f867f 100644 --- a/packages/discord.js/src/util/Util.js +++ b/packages/discord.js/src/util/Util.js @@ -365,32 +365,40 @@ function basename(path, ext) { * @returns {string} */ function cleanContent(str, channel) { - return str.replaceAll(/<(@[!&]?|#)(\d{17,19})>/g, (match, type, id) => { - switch (type) { - case '@': - case '@!': { - const member = channel.guild?.members.cache.get(id); - if (member) { - return `@${member.displayName}`; + return str.replaceAll( + /* eslint-disable max-len */ + /<(?:(?@[!&]?|#)|(?:\/(?[-_\p{L}\p{N}\p{sc=Deva}\p{sc=Thai} ]+):)|(?:a?:(?[\w]+):))(?\d{17,19})>/gu, + (match, type, commandName, emojiName, id) => { + if (commandName) return `/${commandName}`; + + if (emojiName) return `:${emojiName}:`; + + switch (type) { + case '@': + case '@!': { + const member = channel.guild?.members.cache.get(id); + if (member) { + return `@${member.displayName}`; + } + + const user = channel.client.users.cache.get(id); + return user ? `@${user.displayName}` : match; + } + case '@&': { + if (channel.type === ChannelType.DM) return match; + const role = channel.guild.roles.cache.get(id); + return role ? `@${role.name}` : match; + } + case '#': { + const mentionedChannel = channel.client.channels.cache.get(id); + return mentionedChannel ? `#${mentionedChannel.name}` : match; + } + default: { + return match; } - - const user = channel.client.users.cache.get(id); - return user ? `@${user.username}` : match; - } - case '@&': { - if (channel.type === ChannelType.DM) return match; - const role = channel.guild.roles.cache.get(id); - return role ? `@${role.name}` : match; - } - case '#': { - const mentionedChannel = channel.client.channels.cache.get(id); - return mentionedChannel ? `#${mentionedChannel.name}` : match; - } - default: { - return match; } - } - }); + }, + ); } /**