diff --git a/packages/biscuit/structures/Message.ts b/packages/biscuit/structures/Message.ts index fbb071e..de6134a 100644 --- a/packages/biscuit/structures/Message.ts +++ b/packages/biscuit/structures/Message.ts @@ -391,7 +391,7 @@ export class Message implements Model { } /** deletes this message */ - async delete({ reason }: { reason: string }): Promise { + async delete(reason?: string): Promise { await this.session.rest.runMethod( this.session.rest, 'DELETE', diff --git a/packages/biscuit/structures/channels.ts b/packages/biscuit/structures/channels.ts index a6185de..dcabeea 100644 --- a/packages/biscuit/structures/channels.ts +++ b/packages/biscuit/structures/channels.ts @@ -12,6 +12,7 @@ import { DiscordInviteMetadata, DiscordListArchivedThreads, DiscordMessage, + DiscordOverwrite, DiscordThreadMember, DiscordWebhook, GatewayOpcodes, @@ -30,7 +31,7 @@ import Invite from './Invite.ts'; import Webhook from './Webhook.ts'; import User from './User.ts'; import ThreadMember from './ThreadMember.ts'; -import Permissions, { PermissionResolvable } from "./Permissions.ts"; +import Permissions from './Permissions.ts'; /** * Abstract class that represents the base for creating a new channel. @@ -90,7 +91,7 @@ export abstract class BaseChannel implements Model { } } -/** +/** * Represents a category channel. */ export class CategoryChannel extends BaseChannel { @@ -104,18 +105,9 @@ export class CategoryChannel extends BaseChannel { this.position = data.position ? data.position : undefined; this.parentId = data.parent_id ? data.parent_id : undefined; - this.permissionOverwrites = [] as PermissionsOverwrites[]; - // TODO: improve this and test - if (data.permission_overwrites && data.permission_overwrites.length > 0) { - data.permission_overwrites.forEach(v => { - this.permissionOverwrites.push({ - id: v.id, - type: v.type, - allow: new Permissions(parseInt(v.allow as string) as PermissionResolvable), - deny: new Permissions(parseInt(v.deny as string) as PermissionResolvable), - } as PermissionsOverwrites); - }) - } + this.permissionOverwrites = data.permission_overwrites + ? ChannelFactory.permissionOverwrites(data.permission_overwrites) + : []; } id: Snowflake; @@ -246,7 +238,6 @@ export class TextChannel { } } - /** * fetchPins makes an asynchronous request and gets the current channel pins. * @returns A promise that resolves with an array of Message objects. @@ -525,6 +516,9 @@ export class GuildChannel extends BaseChannel implements Model { this.position = data.position; data.topic ? this.topic = data.topic : null; data.parent_id ? this.parentId = data.parent_id : undefined; + this.permissionOverwrites = data.permission_overwrites + ? ChannelFactory.permissionOverwrites(data.permission_overwrites) + : []; } override type: Exclude; @@ -532,6 +526,7 @@ export class GuildChannel extends BaseChannel implements Model { topic?: string; position?: number; parentId?: Snowflake; + permissionOverwrites: PermissionsOverwrites[]; async fetchInvites(): Promise { const invites = await this.session.rest.runMethod( @@ -916,4 +911,15 @@ export class ChannelFactory { throw new Error('Channel was not implemented'); } } + + static permissionOverwrites(overwrites: DiscordOverwrite[]): PermissionsOverwrites[] { + return overwrites.map((v) => { + return { + id: v.id, + type: v.type, + allow: new Permissions(parseInt(v.allow!)), + deny: new Permissions(parseInt(v.deny!)), + }; + }); + } }