From 08d49ad4778e3d89c02294a19af812116bf11414 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Sun, 4 Aug 2019 16:51:42 +0300 Subject: [PATCH] Some improvements to 'unknown member' error reporting --- src/plugins/ModActions.ts | 9 +++++++-- src/plugins/ZeppelinPlugin.ts | 10 +++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/ModActions.ts b/src/plugins/ModActions.ts index 21a57f44..dca53619 100644 --- a/src/plugins/ModActions.ts +++ b/src/plugins/ModActions.ts @@ -496,8 +496,13 @@ export class ModActionsPlugin extends ZeppelinPlugin { ppId: pp && pp.id, }); } catch (e) { - logger.error(`Failed to mute user ${user.id}: ${e.stack}`); - msg.channel.createMessage(errorMessage("Could not mute the user")); + if (e instanceof DiscordRESTError && e.code === 10007) { + msg.channel.createMessage(errorMessage("Could not mute the user: unknown member")); + } else { + logger.error(`Failed to mute user ${user.id}: ${e.stack}`); + msg.channel.createMessage(errorMessage("Could not mute the user")); + } + return; } diff --git a/src/plugins/ZeppelinPlugin.ts b/src/plugins/ZeppelinPlugin.ts index ed71efa4..7848855a 100644 --- a/src/plugins/ZeppelinPlugin.ts +++ b/src/plugins/ZeppelinPlugin.ts @@ -14,6 +14,7 @@ import { UnknownUser, } from "../utils"; import { Member, User } from "eris"; +import DiscordRESTError from "eris/lib/errors/DiscordRESTError"; // tslint:disable-line import { performance } from "perf_hooks"; import { decodeAndValidateStrict, StrictValidationError } from "../validatorUtils"; import { mergeConfig } from "knub/dist/configUtils"; @@ -190,7 +191,14 @@ export class ZeppelinPlugin extends Plug let member; if (forceFresh) { const userId = await resolveUserId(this.bot, memberResolvable); - member = userId && (await this.bot.getRESTGuildMember(this.guild.id, userId)); + try { + member = userId && (await this.bot.getRESTGuildMember(this.guild.id, userId)); + } catch (e) { + if (!(e instanceof DiscordRESTError)) { + throw e; + } + } + if (member) member.id = member.user.id; } else { member = await resolveMember(this.bot, this.guild, memberResolvable);