From 813199045371ef335e36bee92151097936a190d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Susa=C3=B1a?= Date: Sun, 17 Jul 2022 22:54:26 -0400 Subject: [PATCH] feat(Guild): setSplash, setBanner, SplashDiscovery, leave (#67) closes #62 #65 --- packages/biscuit/Routes.ts | 8 ++++- packages/biscuit/structures/guilds.ts | 44 +++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/packages/biscuit/Routes.ts b/packages/biscuit/Routes.ts index 643c92b..26af956 100644 --- a/packages/biscuit/Routes.ts +++ b/packages/biscuit/Routes.ts @@ -107,6 +107,11 @@ export function GUILD_ROLES(guildId: Snowflake): string { return `/guilds/${guildId}/roles`; } +export function USER_GUILDS(guildId?: Snowflake): string { + if (guildId) return `/users/@me/guilds/${guildId}`; + return `/users/@me/guilds/`; +} + export function USER_DM() { return `/users/@me/channels`; } @@ -125,7 +130,8 @@ export interface GetInvite { scheduledEventId?: Snowflake; } -export function GUILDS(): string { +export function GUILDS(guildId?: Snowflake): string { + if (guildId) return `/guilds/${guildId}`; return `/guilds`; } diff --git a/packages/biscuit/structures/guilds.ts b/packages/biscuit/structures/guilds.ts index 8db82b5..f4ff740 100644 --- a/packages/biscuit/structures/guilds.ts +++ b/packages/biscuit/structures/guilds.ts @@ -280,7 +280,7 @@ export interface GuildCreateOptions { /** * @link https://discord.com/developers/docs/resources/guild#modify-guild-json-params */ -export interface GuildEditOptions extends Omit { +export interface GuildEditOptions extends Partial { ownerId?: Snowflake; splashURL?: string; bannerURL?: string; @@ -291,7 +291,7 @@ export interface GuildEditOptions extends Omit { +export interface GuildEditOptions extends Partial { ownerId?: Snowflake; splashHash?: bigint; bannerHash?: bigint; @@ -652,7 +652,18 @@ export class Guild extends BaseGuild implements Model { await this.session.rest.runMethod( this.session.rest, "DELETE", - Routes.GUILDS(), + Routes.GUILDS(this.id), + ); + } + + /** + * Leaves the guild + */ + async leave(): Promise { + await this.session.rest.runMethod( + this.session.rest, + "DELETE", + Routes.USER_GUILDS(this.id) ); } @@ -700,11 +711,32 @@ export class Guild extends BaseGuild implements Model { return new Guild(session, guild); } + /** + * ESets a new guild splash. + */ + setSplash(splashURL: string ): Promise { + return this.edit({ splashURL }); + } + + /** + * Sets a new guild banner. + */ + setBanner(bannerURL: string): Promise { + return this.edit({ bannerURL }); + } + + /** + * Sets a new guild discovery splash image. + */ + setDiscoverySplash(discoverySplashURL: string): Promise { + return this.edit({ discoverySplashURL }); + } + /** * Edits a guild and returns its data */ - async edit(session: Session, options: GuildEditOptions): Promise { - const guild = await session.rest.runMethod(session.rest, "PATCH", Routes.GUILDS(), { + async edit(options: GuildEditOptions): Promise { + const guild = await this.session.rest.runMethod(this.session.rest, "PATCH", Routes.GUILDS(), { name: options.name, afk_channel_id: options.afkChannelId, afk_timeout: options.afkTimeout, @@ -734,7 +766,7 @@ export class Guild extends BaseGuild implements Model { premiumProgressBarEnabled: options.premiumProgressBarEnabled, }); - return new Guild(session, guild); + return new Guild(this.session, guild); } }