From b4f00bfb6be6e6db25ca33122bd6e4318f081bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Rom=C3=A1n?= Date: Sat, 21 Dec 2019 21:28:09 +0100 Subject: [PATCH] feat: widen GuildResolvable to include more structures (#3512) * feat: Widen GuildResolvable to include GuildChannel and GuildMember * docs: Documented the new overloads Co-Authored-By: Gryffon Bellish Co-authored-by: Gryffon Bellish --- src/stores/GuildStore.js | 19 ++++++++++++++++++- typings/index.d.ts | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/stores/GuildStore.js b/src/stores/GuildStore.js index 90e4358dd..eb7090b63 100644 --- a/src/stores/GuildStore.js +++ b/src/stores/GuildStore.js @@ -4,6 +4,9 @@ const DataStore = require('./DataStore'); const DataResolver = require('../util/DataResolver'); const { Events } = require('../util/Constants'); const Guild = require('../structures/Guild'); +const GuildChannel = require('../structures/GuildChannel'); +const GuildMember = require('../structures/GuildMember'); +const Role = require('../structures/Role'); /** * Stores guilds. @@ -17,8 +20,10 @@ class GuildStore extends DataStore { /** * Data that resolves to give a Guild object. This can be: * * A Guild object + * * A GuildChannel object + * * A Role object * * A Snowflake - * @typedef {Guild|Snowflake} GuildResolvable + * @typedef {Guild|GuildChannel|GuildMember|Role|Snowflake} GuildResolvable */ /** @@ -29,6 +34,12 @@ class GuildStore extends DataStore { * @param {GuildResolvable} guild The guild resolvable to identify * @returns {?Guild} */ + resolve(guild) { + if (guild instanceof GuildChannel || + guild instanceof GuildMember || + guild instanceof Role) return super.resolve(guild.guild); + return super.resolve(guild); + } /** * Resolves a GuildResolvable to a Guild ID string. @@ -38,6 +49,12 @@ class GuildStore extends DataStore { * @param {GuildResolvable} guild The guild resolvable to identify * @returns {?Snowflake} */ + resolveID(guild) { + if (guild instanceof GuildChannel || + guild instanceof GuildMember || + guild instanceof Role) return super.resolveID(guild.guild.id); + return super.resolveID(guild); + } /** * Creates a guild. diff --git a/typings/index.d.ts b/typings/index.d.ts index 7ab448e7d..348a7ba96 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -2328,7 +2328,7 @@ declare module 'discord.js' { type GuildMemberResolvable = GuildMember | UserResolvable; - type GuildResolvable = Guild | Snowflake; + type GuildResolvable = Guild | GuildChannel | GuildMember | Role | Snowflake; interface GuildPruneMembersOptions { count?: boolean;