mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 19:13:31 +01:00
refactor(BitField): base class for Permissions, ActivityFlags, Speaking (#2765)
* abstract BitField from Permissions * reduce useless code, improve docs * add a ReadOnly identifier to the return type of Bitfield#freeze() https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#partial-readonly-record-and-pick * fix the RangeError * update docs, convert Speaking and ActivityFlags to bitfields * fix some docs * Fix Speaking BitField oops * docs for oops * more incorrect docs * Fix incorrectly named property * add new classes to index * fix missing @extends docs * default bitfield resolve to 0, and cleanup defaulting everywhere Also removes GuildMember#missiongPermissions() alias that had incorrect behavior * Breaking: Rename Overwrite allowed and denied to allow and deny To be consistent with the api's naming * fix setSpeaking usage to bitfields instead of booleans * fix speaking bug in playChunk * docs: Updated typings * fix: BitFieldResolvable should use RecursiveArray * bugfix/requested change * typings: Cleanup (#2) * typings: Fix BitField#{toArray,@@iterator} output type * typings: correct PermissionOverwrites property names and nitpicks
This commit is contained in:
83
typings/index.d.ts
vendored
83
typings/index.d.ts
vendored
@@ -35,6 +35,11 @@ declare module 'discord.js' {
|
||||
public equals(activity: Activity): boolean;
|
||||
}
|
||||
|
||||
export class ActivityFlags extends BitField<ActivityFlagsString> {
|
||||
public static resolve(permission: BitFieldResolvable<ActivityFlagsString>): number;
|
||||
public static FLAGS: Record<ActivityFlagsString, number>;
|
||||
}
|
||||
|
||||
export class Base {
|
||||
constructor (client: Client);
|
||||
public readonly client: Client;
|
||||
@@ -62,6 +67,24 @@ declare module 'discord.js' {
|
||||
public broadcast: VoiceBroadcast;
|
||||
}
|
||||
|
||||
export class BitField<S extends string> {
|
||||
constructor(bits?: BitFieldResolvable<S>);
|
||||
public bitfield: number;
|
||||
public add(...bits: BitFieldResolvable<S>[]): BitField<S>;
|
||||
public equals(bit: BitFieldResolvable<S>): boolean;
|
||||
public freeze(): Readonly<BitField<S>>;
|
||||
public has(bit: BitFieldResolvable<S>): boolean;
|
||||
public missing(bits: BitFieldResolvable<S>, ...hasParams: any[]): S[];
|
||||
public remove(...bits: BitFieldResolvable<S>[]): BitField<S>;
|
||||
public serialize(...hasParams: BitFieldResolvable<S>[]): Record<S, boolean>;
|
||||
public toArray(): S[];
|
||||
public toJSON(): number;
|
||||
public valueOf(): number;
|
||||
public [Symbol.iterator](): Iterator<S>;
|
||||
public static resolve(bit?: BitFieldResolvable<string>): number;
|
||||
public static FLAGS: { [key: string]: number };
|
||||
}
|
||||
|
||||
export class CategoryChannel extends GuildChannel {
|
||||
public readonly children: Collection<Snowflake, GuildChannel>;
|
||||
}
|
||||
@@ -125,7 +148,7 @@ declare module 'discord.js' {
|
||||
public on(event: 'guildCreate' | 'guildDelete' | 'guildUnavailable', listener: (guild: Guild) => void): this;
|
||||
public on(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember) => void): this;
|
||||
public on(event: 'guildMembersChunk', listener: (members: Collection<Snowflake, GuildMember>, guild: Guild) => void): this;
|
||||
public on(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: boolean) => void): this;
|
||||
public on(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: Readonly<Speaking>) => void): this;
|
||||
public on(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this;
|
||||
public on(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this;
|
||||
public on(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message) => void): this;
|
||||
@@ -156,7 +179,7 @@ declare module 'discord.js' {
|
||||
public once(event: 'guildCreate' | 'guildDelete' | 'guildUnavailable', listener: (guild: Guild) => void): this;
|
||||
public once(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember) => void): this;
|
||||
public once(event: 'guildMembersChunk', listener: (members: Collection<Snowflake, GuildMember>, guild: Guild) => void): this;
|
||||
public once(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: boolean) => void): this;
|
||||
public once(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: Readonly<Speaking>) => void): this;
|
||||
public once(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this;
|
||||
public once(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this;
|
||||
public once(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message) => void): this;
|
||||
@@ -450,8 +473,8 @@ declare module 'discord.js' {
|
||||
|
||||
export class GuildChannel extends Channel {
|
||||
constructor(guild: Guild, data: object);
|
||||
private memberPermissions(member: GuildMember): Permissions;
|
||||
private rolePermissions(role: Role): Permissions;
|
||||
private memberPermissions(member: GuildMember): Readonly<Permissions>;
|
||||
private rolePermissions(role: Role): Readonly<Permissions>;
|
||||
|
||||
public readonly calculatedPosition: number;
|
||||
public readonly deletable: boolean;
|
||||
@@ -513,7 +536,7 @@ declare module 'discord.js' {
|
||||
public readonly kickable: boolean;
|
||||
public readonly manageable: boolean;
|
||||
public nickname: string;
|
||||
public readonly permissions: Permissions;
|
||||
public readonly permissions: Readonly<Permissions>;
|
||||
public readonly presence: Presence;
|
||||
public roles: GuildMemberRoleStore;
|
||||
public user: User;
|
||||
@@ -524,8 +547,7 @@ declare module 'discord.js' {
|
||||
public edit(data: GuildMemberEditData, reason?: string): Promise<GuildMember>;
|
||||
public hasPermission(permission: PermissionResolvable, options?: { checkAdmin?: boolean; checkOwner?: boolean }): boolean;
|
||||
public kick(reason?: string): Promise<GuildMember>;
|
||||
public missingPermissions(permissions: PermissionResolvable, explicit?: boolean): PermissionString[];
|
||||
public permissionsIn(channel: ChannelResolvable): Permissions;
|
||||
public permissionsIn(channel: ChannelResolvable): Readonly<Permissions>;
|
||||
public setDeaf(deaf: boolean, reason?: string): Promise<GuildMember>;
|
||||
public setMute(mute: boolean, reason?: string): Promise<GuildMember>;
|
||||
public setNickname(nickname: string, reason?: string): Promise<GuildMember>;
|
||||
@@ -710,29 +732,18 @@ declare module 'discord.js' {
|
||||
|
||||
export class PermissionOverwrites {
|
||||
constructor(guildChannel: GuildChannel, data: object);
|
||||
public allowed: Permissions;
|
||||
public allow: Readonly<Permissions>;
|
||||
public readonly channel: GuildChannel;
|
||||
public denied: Permissions;
|
||||
public deny: Readonly<Permissions>;
|
||||
public id: Snowflake;
|
||||
public type: OverwriteType;
|
||||
public delete(reason?: string): Promise<PermissionOverwrites>;
|
||||
public toJSON(): object;
|
||||
}
|
||||
|
||||
export class Permissions {
|
||||
constructor(permissions: PermissionResolvable);
|
||||
|
||||
public bitfield: number;
|
||||
public add(...permissions: PermissionResolvable[]): this;
|
||||
public freeze(): this;
|
||||
export class Permissions extends BitField<PermissionString> {
|
||||
public has(permission: PermissionResolvable, checkAdmin?: boolean): boolean;
|
||||
public missing(permissions: PermissionResolvable, checkAdmin?: boolean): PermissionString[];
|
||||
public remove(...permissions: PermissionResolvable[]): this;
|
||||
public serialize(checkAdmin?: boolean): PermissionObject;
|
||||
public toArray(checkAdmin?: boolean): PermissionString[];
|
||||
public toJSON(): object;
|
||||
public valueOf(): number;
|
||||
public [Symbol.iterator](): IterableIterator<PermissionString>;
|
||||
public has(bit: BitFieldResolvable<PermissionString>): boolean;
|
||||
|
||||
public static ALL: number;
|
||||
public static DEFAULT: number;
|
||||
@@ -743,6 +754,7 @@ declare module 'discord.js' {
|
||||
export class Presence {
|
||||
constructor(client: Client, data: object);
|
||||
public activity: Activity;
|
||||
public flags: Readonly<ActivityFlags>;
|
||||
public status: 'online' | 'offline' | 'idle' | 'dnd';
|
||||
public readonly user: User;
|
||||
public readonly member?: GuildMember;
|
||||
@@ -807,14 +819,14 @@ declare module 'discord.js' {
|
||||
public readonly members: Collection<Snowflake, GuildMember>;
|
||||
public mentionable: boolean;
|
||||
public name: string;
|
||||
public permissions: Permissions;
|
||||
public permissions: Readonly<Permissions>;
|
||||
public readonly position: number;
|
||||
public rawPosition: number;
|
||||
public comparePositionTo(role: Role): number;
|
||||
public delete(reason?: string): Promise<Role>;
|
||||
public edit(data: RoleData, reason?: string): Promise<Role>;
|
||||
public equals(role: Role): boolean;
|
||||
public permissionsIn(channel: ChannelResolvable): Permissions;
|
||||
public permissionsIn(channel: ChannelResolvable): Readonly<Permissions>;
|
||||
public setColor(color: ColorResolvable, reason?: string): Promise<Role>;
|
||||
public setHoist(hoist: boolean, reason?: string): Promise<Role>;
|
||||
public setMentionable(mentionable: boolean, reason?: string): Promise<Role>;
|
||||
@@ -959,6 +971,11 @@ declare module 'discord.js' {
|
||||
public once(event: string, listener: Function): this;
|
||||
}
|
||||
|
||||
export class Speaking extends BitField<SpeakingString> {
|
||||
public static resolve(permission: BitFieldResolvable<SpeakingString>): number;
|
||||
public static FLAGS: Record<SpeakingString, number>;
|
||||
}
|
||||
|
||||
export class Structures {
|
||||
static get<K extends keyof Extendable>(structure: K): Extendable[K];
|
||||
static get(structure: string): Function;
|
||||
@@ -1097,7 +1114,7 @@ declare module 'discord.js' {
|
||||
private reconnect(token: string, endpoint: string): void;
|
||||
private sendVoiceStateUpdate(options: object): void;
|
||||
private setSessionID(sessionID: string): void;
|
||||
private setSpeaking(value: boolean): void;
|
||||
private setSpeaking(value: BitFieldResolvable<SpeakingString>): void;
|
||||
private setTokenAndEndpoint(token: string, endpoint: string): void;
|
||||
private updateChannel(channel: VoiceChannel): void;
|
||||
|
||||
@@ -1106,7 +1123,7 @@ declare module 'discord.js' {
|
||||
public readonly dispatcher: StreamDispatcher;
|
||||
public player: object;
|
||||
public receiver: VoiceReceiver;
|
||||
public speaking: boolean;
|
||||
public speaking: Readonly<Speaking>;
|
||||
public status: VoiceStatus;
|
||||
public voiceManager: object;
|
||||
public disconnect(): void;
|
||||
@@ -1121,7 +1138,7 @@ declare module 'discord.js' {
|
||||
public on(event: 'newSession', listener: () => void): this;
|
||||
public on(event: 'ready', listener: () => void): this;
|
||||
public on(event: 'reconnecting', listener: () => void): this;
|
||||
public on(event: 'speaking', listener: (user: User, speaking: boolean) => void): this;
|
||||
public on(event: 'speaking', listener: (user: User, speaking: Readonly<Speaking>) => void): this;
|
||||
public on(event: 'warn', listener: (warning: string | Error) => void): this;
|
||||
public on(event: string, listener: Function): this;
|
||||
|
||||
@@ -1134,7 +1151,7 @@ declare module 'discord.js' {
|
||||
public once(event: 'newSession', listener: () => void): this;
|
||||
public once(event: 'ready', listener: () => void): this;
|
||||
public once(event: 'reconnecting', listener: () => void): this;
|
||||
public once(event: 'speaking', listener: (user: User, speaking: boolean) => void): this;
|
||||
public once(event: 'speaking', listener: (user: User, speaking: Readonly<Speaking>) => void): this;
|
||||
public once(event: 'warn', listener: (warning: string | Error) => void): this;
|
||||
public once(event: string, listener: Function): this;
|
||||
}
|
||||
@@ -1360,6 +1377,8 @@ declare module 'discord.js' {
|
||||
|
||||
//#region Typedefs
|
||||
|
||||
type ActivityFlagsString = 'INSTANCE' | 'JOIN' | 'SPECTATE' | 'JOIN_REQUEST' | 'SYNC' | 'PLAY';
|
||||
|
||||
type ActivityType = 'PLAYING'
|
||||
| 'STREAMING'
|
||||
| 'LISTENING'
|
||||
@@ -1444,6 +1463,8 @@ declare module 'discord.js' {
|
||||
|
||||
type Base64String = string;
|
||||
|
||||
type BitFieldResolvable<T extends string> = RecursiveArray<T | number | BitField<T>> | T | number | BitField<T>;
|
||||
|
||||
type BufferResolvable = Buffer | string;
|
||||
|
||||
type ChannelCreationOverwrites = {
|
||||
@@ -1857,8 +1878,8 @@ declare module 'discord.js' {
|
||||
type PermissionResolvable = RecursiveArray<Permissions | PermissionString | number> | Permissions | PermissionString | number;
|
||||
|
||||
type PermissionOverwriteOptions = {
|
||||
allowed: PermissionResolvable;
|
||||
denied: PermissionResolvable;
|
||||
allow: PermissionResolvable;
|
||||
deny: PermissionResolvable;
|
||||
id: UserResolvable | RoleResolvable;
|
||||
};
|
||||
|
||||
@@ -1924,6 +1945,8 @@ declare module 'discord.js' {
|
||||
highWaterMark?: number;
|
||||
};
|
||||
|
||||
type SpeakingString = 'SPEAKING' | 'SOUNDSHARE';
|
||||
|
||||
type StreamType = 'unknown' | 'converted' | 'opus' | 'ogg/opus' | 'webm/opus';
|
||||
|
||||
type StringResolvable = string | string[] | any;
|
||||
|
||||
Reference in New Issue
Block a user