Roles#fetch -> Roles#fetchAll & jsdoc
This commit is contained in:
parent
b13cdbe480
commit
b324263a7b
4 changed files with 32 additions and 13 deletions
|
@ -71,7 +71,7 @@ export interface ClientOptions {
|
|||
}
|
||||
|
||||
/**
|
||||
* Discord Client.
|
||||
* Harmony Client. Provides high-level interface over the REST and WebSocket API.
|
||||
*/
|
||||
export class Client extends HarmonyEventEmitter<ClientEvents> {
|
||||
/** REST Manager - used to make all requests */
|
||||
|
@ -148,9 +148,9 @@ export class Client extends HarmonyEventEmitter<ClientEvents> {
|
|||
}
|
||||
}
|
||||
|
||||
/** Get Shard 0's Gateway */
|
||||
get gateway(): Gateway {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
return this.shards.list.get('0') as Gateway
|
||||
return this.shards.list.get('0')!
|
||||
}
|
||||
|
||||
applicationID?: string
|
||||
|
@ -289,7 +289,10 @@ export class Client extends HarmonyEventEmitter<ClientEvents> {
|
|||
* @param token Your token. This is required if not given in ClientOptions.
|
||||
* @param intents Gateway intents in array. This is required if not given in ClientOptions.
|
||||
*/
|
||||
async connect(token?: string, intents?: GatewayIntents[]): Promise<Client> {
|
||||
async connect(
|
||||
token?: string,
|
||||
intents?: Array<GatewayIntents | keyof typeof GatewayIntents>
|
||||
): Promise<Client> {
|
||||
token ??= this.token
|
||||
if (token === undefined) throw new Error('No Token Provided')
|
||||
this.token = token
|
||||
|
@ -301,7 +304,9 @@ export class Client extends HarmonyEventEmitter<ClientEvents> {
|
|||
} else if (intents === undefined && this.intents !== undefined) {
|
||||
intents = this.intents
|
||||
} else if (intents !== undefined && this.intents === undefined) {
|
||||
this.intents = intents
|
||||
this.intents = intents.map((e) =>
|
||||
typeof e === 'string' ? GatewayIntents[e] : e
|
||||
)
|
||||
} else throw new Error('No Gateway Intents were provided')
|
||||
|
||||
this.rest.token = token
|
||||
|
|
|
@ -43,6 +43,11 @@ export interface CommandClientOptions extends ClientOptions {
|
|||
caseSensitive?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
* Harmony Client with extended functionality for Message based Commands parsing and handling.
|
||||
*
|
||||
* See SlashClient (`Client#slash`) for more info about Slash Commands.
|
||||
*/
|
||||
export class CommandClient extends Client implements CommandClientOptions {
|
||||
prefix: string | string[]
|
||||
mentionPrefix: boolean
|
||||
|
@ -372,7 +377,9 @@ export class CommandClient extends Client implements CommandClientOptions {
|
|||
}
|
||||
}
|
||||
|
||||
/** Command decorator */
|
||||
/**
|
||||
* Command decorator. Decorates the function with optional metadata as a Command registered upon constructing class.
|
||||
*/
|
||||
export function command(options?: CommandOptions) {
|
||||
return function (target: CommandClient | Extension, name: string) {
|
||||
if (target._decoratedCommands === undefined) target._decoratedCommands = {}
|
||||
|
|
|
@ -300,6 +300,8 @@ export class CommandsLoader {
|
|||
/**
|
||||
* Load a Command from file.
|
||||
*
|
||||
* NOTE: Relative paths resolve from cwd
|
||||
*
|
||||
* @param filePath Path of Command file.
|
||||
* @param exportName Export name. Default is the "default" export.
|
||||
*/
|
||||
|
@ -344,6 +346,8 @@ export class CommandsLoader {
|
|||
/**
|
||||
* Load commands from a Directory.
|
||||
*
|
||||
* NOTE: Relative paths resolve from cwd
|
||||
*
|
||||
* @param path Path of the directory.
|
||||
* @param options Options to configure loading.
|
||||
*/
|
||||
|
|
|
@ -22,14 +22,17 @@ export class RolesManager extends BaseManager<RolePayload, Role> {
|
|||
this.guild = guild
|
||||
}
|
||||
|
||||
/** Fetch a Guild Role (from API) */
|
||||
async fetch(id: string): Promise<Role> {
|
||||
/** Fetch All Guild Roles */
|
||||
async fetchAll(): Promise<Role[]> {
|
||||
return await new Promise((resolve, reject) => {
|
||||
this.client.rest
|
||||
.get(GUILD_ROLE(this.guild.id, id))
|
||||
.then(async (data) => {
|
||||
await this.set(id, data as RolePayload)
|
||||
resolve(((await this.get(id)) as unknown) as Role)
|
||||
this.client.rest.api.guilds[this.guild.id].roles.get
|
||||
.then(async (data: RolePayload[]) => {
|
||||
const roles: Role[] = []
|
||||
for (const raw of data) {
|
||||
await this.set(raw.id, raw)
|
||||
roles.push(new Role(this.client, raw, this.guild))
|
||||
}
|
||||
resolve(roles)
|
||||
})
|
||||
.catch((e) => reject(e))
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue