From 56b1ae87856eb0d6ddd2b030d0a0f007e368ccd8 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Fri, 10 Apr 2020 11:30:37 +0300 Subject: [PATCH] ReactionRoles: show an error for invalid emojis --- backend/src/plugins/ReactionRoles.ts | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/backend/src/plugins/ReactionRoles.ts b/backend/src/plugins/ReactionRoles.ts index 760415cd..234b462e 100644 --- a/backend/src/plugins/ReactionRoles.ts +++ b/backend/src/plugins/ReactionRoles.ts @@ -1,14 +1,15 @@ import { decorators as d, IPluginOptions, logger } from "knub"; -import { CustomEmoji, errorMessage, isSnowflake, noop, sleep, successMessage } from "../utils"; +import { CustomEmoji, errorMessage, isSnowflake, noop, sleep } from "../utils"; import { GuildReactionRoles } from "../data/GuildReactionRoles"; import { Message, TextChannel } from "eris"; import { ZeppelinPlugin } from "./ZeppelinPlugin"; import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { Queue } from "../Queue"; import { ReactionRole } from "../data/entities/ReactionRole"; -import Timeout = NodeJS.Timeout; import DiscordRESTError from "eris/lib/errors/DiscordRESTError"; // tslint:disable-line import * as t from "io-ts"; +import { ERRORS, RecoverablePluginError } from "../RecoverablePluginError"; +import Timeout = NodeJS.Timeout; /** * Either of: @@ -335,9 +336,20 @@ export class ReactionRolesPlugin extends ZeppelinPlugin { return; } - if (!this.canUseEmoji(pair[0])) { - msg.channel.createMessage(errorMessage("I can only use regular emojis and custom emojis from servers I'm on")); - return; + try { + if (!this.canUseEmoji(pair[0])) { + msg.channel.createMessage( + errorMessage("I can only use regular emojis and custom emojis from servers I'm on"), + ); + return; + } + } catch (e) { + if (e instanceof RecoverablePluginError && e.code === ERRORS.INVALID_EMOJI) { + msg.channel.createMessage(errorMessage(`Invalid emoji: ${pair[0]}`)); + return; + } + + throw e; } if (!this.guild.roles.has(pair[1])) {