From 65a9bb2c659d4eda79c9e9e659407dcdb944f1b6 Mon Sep 17 00:00:00 2001 From: Dragory Date: Wed, 6 Feb 2019 20:07:53 +0200 Subject: [PATCH] Fix custom emojis in reaction roles --- src/plugins/ReactionRoles.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/plugins/ReactionRoles.ts b/src/plugins/ReactionRoles.ts index 03e99290..41a0ab6b 100644 --- a/src/plugins/ReactionRoles.ts +++ b/src/plugins/ReactionRoles.ts @@ -3,7 +3,7 @@ import { CustomEmoji, errorMessage, isSnowflake } from "../utils"; import { GuildReactionRoles } from "../data/GuildReactionRoles"; import { Channel, Message, TextChannel } from "eris"; -type ReactionRolePair = [string, string]; +type ReactionRolePair = [string, string, string?]; export class ReactionRolesPlugin extends Plugin { public static pluginName = "reaction_roles"; @@ -80,9 +80,9 @@ export class ReactionRolesPlugin extends Plugin { .map(v => v.split("=").map(v => v.trim())) // tslint:disable-line .map( (pair): ReactionRolePair => { - const customEmojiMatch = pair[0].match(/^<:(.*?):(\d+)>$/); + const customEmojiMatch = pair[0].match(/^$/); if (customEmojiMatch) { - return [`${customEmojiMatch[1]}:${customEmojiMatch[2]}`, pair[1]]; + return [customEmojiMatch[2], pair[1], customEmojiMatch[1]]; } else { return pair as ReactionRolePair; } @@ -112,9 +112,11 @@ export class ReactionRolesPlugin extends Plugin { for (const rolePair of toRemove) { await this.reactionRoles.removeFromMessage(targetMessage.id, rolePair[0]); - for (const reaction of Object.values(targetMessage.reactions)) { - if (reaction.emoji.id === rolePair[0] || reaction.emoji.name === rolePair[0]) { - reaction.remove(this.bot.user.id); + for (const emoji of Object.keys(targetMessage.reactions)) { + const emojiId = emoji.includes(":") ? emoji.split(":")[1] : emoji; + + if (emojiId === rolePair[0]) { + targetMessage.removeReaction(emoji, this.bot.user.id); } } } @@ -126,10 +128,9 @@ export class ReactionRolesPlugin extends Plugin { for (const rolePair of toAdd) { let emoji; - if (isSnowflake(rolePair[0])) { + if (rolePair[2]) { // Custom emoji - const guildEmoji = guildEmojis.find(e => e.id === emoji.id); - emoji = `${guildEmoji.name}:${guildEmoji.id}`; + emoji = `${rolePair[2]}:${rolePair[0]}`; } else { // Unicode emoji emoji = rolePair[0];