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…
	
	Add table
		Add a link
		
	
		Reference in a new issue