From 728b3f939c6de3798649f884181e81d180d6573d Mon Sep 17 00:00:00 2001 From: Jan <66554238+Vaporox@users.noreply.github.com> Date: Sat, 17 Oct 2020 15:40:39 +0200 Subject: [PATCH] fix(GuildEmojiManager): check for guild in methods that use it (#4886) --- src/errors/Messages.js | 2 ++ src/managers/GuildEmojiManager.js | 8 +++++--- typings/index.d.ts | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/errors/Messages.js b/src/errors/Messages.js index 9f0f6e44fd00..9c7cb1d89952 100644 --- a/src/errors/Messages.js +++ b/src/errors/Messages.js @@ -103,6 +103,8 @@ const Messages = { FETCH_GROUP_DM_CHANNEL: "Bots don't have access to Group DM Channels and cannot fetch them", MEMBER_FETCH_NONCE_LENGTH: 'Nonce length must not exceed 32 characters.', + + GUILDEMOJIMANAGER_NO_GUILD: 'Method cannot be called from a Client instance.', }; for (const [name, message] of Object.entries(Messages)) register(name, message); diff --git a/src/managers/GuildEmojiManager.js b/src/managers/GuildEmojiManager.js index c13ad1328b47..07ddb7f8dab7 100644 --- a/src/managers/GuildEmojiManager.js +++ b/src/managers/GuildEmojiManager.js @@ -1,7 +1,7 @@ 'use strict'; const BaseManager = require('./BaseManager'); -const { TypeError } = require('../errors'); +const { Error, TypeError } = require('../errors'); const GuildEmoji = require('../structures/GuildEmoji'); const ReactionEmoji = require('../structures/ReactionEmoji'); const Collection = require('../util/Collection'); @@ -16,9 +16,9 @@ class GuildEmojiManager extends BaseManager { super(guild.client, iterable, GuildEmoji); /** * The guild this manager belongs to - * @type {Guild} + * @type {?Guild} */ - this.guild = guild; + this.guild = 'name' in guild ? guild : null; } /** @@ -28,6 +28,7 @@ class GuildEmojiManager extends BaseManager { */ add(data, cache) { + if (!this.guild) throw new Error('GUILDEMOJIMANAGER_NO_GUILD'); return super.add(data, cache, { extras: [this.guild] }); } @@ -51,6 +52,7 @@ class GuildEmojiManager extends BaseManager { * .catch(console.error); */ async create(attachment, name, { roles, reason } = {}) { + if (!this.guild) throw new Error('GUILDEMOJIMANAGER_NO_GUILD'); attachment = await DataResolver.resolveImage(attachment); if (!attachment) throw new TypeError('REQ_RESOURCE_TYPE'); diff --git a/typings/index.d.ts b/typings/index.d.ts index fd21dc033172..cf6069e24f45 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1917,7 +1917,7 @@ declare module 'discord.js' { export class GuildEmojiManager extends BaseManager { constructor(guild: Guild, iterable?: Iterable); - public guild: Guild; + public guild: Guild | null; public create( attachment: BufferResolvable | Base64Resolvable, name: string,