/** * Represents a limited emoji set used for both custom and unicode emojis. Custom emojis * will use this class opposed to the Emoji class when the client doesn't know enough * information about them. */ class ReactionEmoji { constructor(reaction, name, id) { /** * The message reaction this emoji refers to * @type {MessageReaction} */ this.reaction = reaction; /** * The name of this reaction emoji * @type {string} */ this.name = name; /** * The ID of this reaction emoji * @type {?Snowflake} */ this.id = id; } /** * The identifier of this emoji, used for message reactions * @type {string} * @readonly */ get identifier() { if (this.id) return `${this.name}:${this.id}`; return encodeURIComponent(this.name); } /** * When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord * instead of the ReactionEmoji object. * @returns {string} * @example * // Send the emoji used in a reaction to the channel the reaction is part of * reaction.message.channel.send(`The emoji used was: ${reaction.emoji}`); */ toString() { return this.id ? `<:${this.name}:${this.id}>` : this.name; } } module.exports = ReactionEmoji;