diff --git a/src/structures/Message.js b/src/structures/Message.js index 281bdb9fe..5dfcdc932 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -155,6 +155,43 @@ class Message { } /** + * The message contents with all mentions replaced by the equivalent text. + * @type {string} + */ + get cleanContent() { + return this.content.replace(/<@!?[0-9]+>/g, input => { + let user = this.channel.guild.members.get(input.replace(/<|!|>|@/g, '')); + + if (user) { + if (user.nickname) { + return `@${user.nickname}`; + } + return `@${user.user.username}`; + } + + return input; + }).replace(/<#[0-9]+>/g, (input) => { + let channel = this.client.channels.get(input.replace(/<|#|>/g, '')); + + if (channel) { + return `#${channel.name}`; + } + + return input; + }).replace(/<@&[0-9]+>/g, (input) => { + let role = this.guild.roles.get(input.replace(/<|@|>|&/g, '')); + + if (role) { + return `@${role.name}`; + } + + return input; + }) + .replace(/@everyone/g, '@\u200Beveryone') + .replace(/@here/g, '@\u200Bhere'); + } + + /** * An array of cached versions of the message, including the current version. * Sorted from latest (first) to oldest (last). * @type {Message[]}