diff --git a/structures/Channel.ts b/structures/Channel.ts index 998f073..b476ffa 100644 --- a/structures/Channel.ts +++ b/structures/Channel.ts @@ -1,4 +1,5 @@ import Base from './Base'; +import { PermissionOverwrite } from './Permissions'; export default interface Channel extends Base { application_id?: string; @@ -14,7 +15,7 @@ export default interface Channel extends Base { nsfw?: boolean; owner_id?: string; parent_id?: string | null; - permission_overwrites?: unknown[]; // TODO Overwrite + permission_overwrites?: PermissionOverwrite[]; position?: number; rate_limit_per_user?: number; recipients?: [unknown]; // TODO User diff --git a/structures/Permissions.ts b/structures/Permissions.ts index 186bd0c..95e4cad 100644 --- a/structures/Permissions.ts +++ b/structures/Permissions.ts @@ -2,6 +2,7 @@ // @ts-nocheck // NOTE Can't enun bigints, but reverse mappings will cast bigints to stringified keys. // NOTE See https://github.com/microsoft/TypeScript/issues/40793 and https://github.com/microsoft/TypeScript/issues/37783 +import Base from './Base'; enum Permissions { CREATE_INSTANT_INVITE = 1n << 0n, @@ -43,5 +44,15 @@ enum Permissions { USE_PRIVATE_THREADS = 1n << 36n, } +export interface PermissionOverwrite extends Base { + allow: Permissions; + deny: Permissions; + type: PermissionOverwriteType; +} + +export enum PermissionOverwriteType { + ROLE, + MEMBER, +} export default Permissions; diff --git a/structures/index.ts b/structures/index.ts index 450117f..4255343 100644 --- a/structures/index.ts +++ b/structures/index.ts @@ -9,7 +9,7 @@ export { default as GuildPreview } from './GuildPreview'; export { default as GuildTemplate } from './GuildTemplate'; export { default as Invite, InviteMetadata, InviteTargetType } from './Invite'; export { default as Message, MessageActivity, MessageActivityType, MessageFlags, MessageReference, MessageType, Reaction } from './Message'; -export { default as Permissions } from './Permissions'; +export { default as Permissions, PermissionOverwrite, PermissionOverwriteType } from './Permissions'; export { default as UserConnection, ConnectionVisibilityType } from './UserConnections'; export { default as VoiceRegion } from './VoiceRegion'; export { default as VoiceState } from './VoiceState';