From c2349d4be45a2b2cfff7eaf2f227c69917fec77f Mon Sep 17 00:00:00 2001 From: Jaw0r3k Date: Sun, 5 Nov 2023 19:36:16 +0100 Subject: [PATCH] feat(cleanContent): add slash commands and emojis (#9809) * feat(cleanContent): add missing commands and emojis Co-authored-by: Vlad Frangu * fix: check for every possible name * fix: use non capturing group --------- Co-authored-by: Vlad Frangu Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/discord.js/src/util/Util.js | 56 ++++++++++++++++------------ 1 file changed, 32 insertions(+), 24 deletions(-) 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; } - } - }); + }, + ); } /**