Skip to content

Commit

Permalink
feat: GuildEmbed support (#2766)
Browse files Browse the repository at this point in the history
* feat: Guild embed support

* docs: Fixed setEmbed's reason argument not being optional

* fix: Guild#setEmbed should return the guild itself for consistency

* docs: Updated typings

* fix: Requested change
  • Loading branch information
kyranet authored and SpaceEEC committed Aug 21, 2018
1 parent 0401b8a commit 5787dee
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/structures/Guild.js
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,29 @@ class Guild extends Base {
});
}

/**
* The Guild Embed object
* @typedef {Object} GuildEmbedData
* @property {boolean} enabled Whether the embed is enabled
* @property {?GuildChannel} channel The embed channel
*/

/**
* Fetches the guild embed.
* @returns {Promise<GuildEmbedData>}
* @example
* // Fetches the guild embed
* guild.fetchEmbed()
* .then(embed => console.log(`The embed is ${embed.enabled ? 'enabled' : 'disabled'}`))
* .catch(console.error);
*/
fetchEmbed() {
return this.client.api.guilds(this.id).embed.get().then(data => ({
enabled: data.enabled,
channel: data.channel_id ? this.channels.get(data.channel_id) : null,
}));
}

/**
* Fetches audit logs for this guild.
* @param {Object} [options={}] Options for fetching audit logs
Expand Down Expand Up @@ -790,6 +813,22 @@ class Guild extends Base {
);
}

/**
* Edits the guild's embed.
* @param {GuildEmbedData} embed The embed for the guild
* @param {string} [reason] Reason for changing the guild's embed
* @returns {Promise<Guild>}
*/
setEmbed(embed, reason) {
return this.client.api.guilds(this.id).embed.patch({
data: {
enabled: embed.enabled,
channel_id: this.channels.resolveID(embed.channel),
},
reason,
}).then(() => this);
}

/**
* Leaves the guild.
* @returns {Promise<Guild>}
Expand Down
7 changes: 7 additions & 0 deletions typings/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ declare module 'discord.js' {
public fetchVanityCode(): Promise<string>;
public fetchVoiceRegions(): Promise<Collection<string, VoiceRegion>>;
public fetchWebhooks(): Promise<Collection<Snowflake, Webhook>>;
public fetchEmbed(): Promise<GuildEmbedData>;
public iconURL(options?: AvatarOptions): string;
public leave(): Promise<Guild>;
public member(user: UserResolvable): GuildMember;
Expand All @@ -410,6 +411,7 @@ declare module 'discord.js' {
public setSplash(splash: Base64Resolvable, reason?: string): Promise<Guild>;
public setSystemChannel(systemChannel: ChannelResolvable, reason?: string): Promise<Guild>;
public setVerificationLevel(verificationLevel: number, reason?: string): Promise<Guild>;
public setEmbed(embed: GuildEmbedData, reason?: string): Promise<Guild>;
public splashURL(options?: AvatarOptions): string;
public toJSON(): object;
public toString(): string;
Expand Down Expand Up @@ -1698,6 +1700,11 @@ declare module 'discord.js' {
splash?: Base64Resolvable;
};

type GuildEmbedData = {
enabled: boolean;
channel?: GuildChannelResolvable;
};

type GuildFeatures = 'INVITE_SPLASH'
| 'MORE_EMOJI'
| 'VERIFIED'
Expand Down

0 comments on commit 5787dee

Please sign in to comment.