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 <owenbellish@gmail.com>

Co-authored-by: Gryffon Bellish <owenbellish@gmail.com>
This commit is contained in:
Antonio Román
2019-12-21 21:28:09 +01:00
committed by SpaceEEC
parent f578cce9ac
commit b4f00bfb6b
2 changed files with 19 additions and 2 deletions

View File

@@ -4,6 +4,9 @@ const DataStore = require('./DataStore');
const DataResolver = require('../util/DataResolver'); const DataResolver = require('../util/DataResolver');
const { Events } = require('../util/Constants'); const { Events } = require('../util/Constants');
const Guild = require('../structures/Guild'); const Guild = require('../structures/Guild');
const GuildChannel = require('../structures/GuildChannel');
const GuildMember = require('../structures/GuildMember');
const Role = require('../structures/Role');
/** /**
* Stores guilds. * Stores guilds.
@@ -17,8 +20,10 @@ class GuildStore extends DataStore {
/** /**
* Data that resolves to give a Guild object. This can be: * Data that resolves to give a Guild object. This can be:
* * A Guild object * * A Guild object
* * A GuildChannel object
* * A Role object
* * A Snowflake * * 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 * @param {GuildResolvable} guild The guild resolvable to identify
* @returns {?Guild} * @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. * Resolves a GuildResolvable to a Guild ID string.
@@ -38,6 +49,12 @@ class GuildStore extends DataStore {
* @param {GuildResolvable} guild The guild resolvable to identify * @param {GuildResolvable} guild The guild resolvable to identify
* @returns {?Snowflake} * @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. * Creates a guild.

2
typings/index.d.ts vendored
View File

@@ -2328,7 +2328,7 @@ declare module 'discord.js' {
type GuildMemberResolvable = GuildMember | UserResolvable; type GuildMemberResolvable = GuildMember | UserResolvable;
type GuildResolvable = Guild | Snowflake; type GuildResolvable = Guild | GuildChannel | GuildMember | Role | Snowflake;
interface GuildPruneMembersOptions { interface GuildPruneMembersOptions {
count?: boolean; count?: boolean;