commit
						41891b45c7
					
				
					 8 changed files with 101 additions and 11 deletions
				
			
		|  | @ -37,10 +37,15 @@ export class BaseManager<T, T2> { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** Deletes a key from Cache */ |   /** Deletes a key from Cache */ | ||||||
|   async delete(key: string): Promise<boolean> { |   async _delete(key: string): Promise<boolean> { | ||||||
|     return this.client.cache.delete(this.cacheName, key) |     return this.client.cache.delete(this.cacheName, key) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** Alias to _delete (cache) for compatibility purposes */ | ||||||
|  |   async delete(key: string): Promise<boolean> { | ||||||
|  |     return await this._delete(key) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   /** Gets an Array of values from Cache */ |   /** Gets an Array of values from Cache */ | ||||||
|   async array(): Promise<T2[]> { |   async array(): Promise<T2[]> { | ||||||
|     let arr = await (this.client.cache.array(this.cacheName) as T[]) |     let arr = await (this.client.cache.array(this.cacheName) as T[]) | ||||||
|  |  | ||||||
|  | @ -36,6 +36,7 @@ export class GuildChannelsManager extends BaseChildManager< | ||||||
|     else return undefined |     else return undefined | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** Delete a Guild Channel */ | ||||||
|   async delete(id: string): Promise<boolean> { |   async delete(id: string): Promise<boolean> { | ||||||
|     return this.client.rest.delete(CHANNEL(id)) |     return this.client.rest.delete(CHANNEL(id)) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { Guild } from '../structures/guild.ts' | import { Guild } from '../structures/guild.ts' | ||||||
| import { Invite } from '../structures/invite.ts' | import { Invite } from '../structures/invite.ts' | ||||||
| import { GUILD_INVITES } from '../types/endpoint.ts' | import { INVITE } from '../types/endpoint.ts' | ||||||
| import { InvitePayload } from '../types/invite.ts' | import { InvitePayload } from '../types/invite.ts' | ||||||
| import { BaseManager } from './base.ts' | import { BaseManager } from './base.ts' | ||||||
| 
 | 
 | ||||||
|  | @ -19,14 +19,15 @@ export class InviteManager extends BaseManager<InvitePayload, Invite> { | ||||||
|     return new Invite(this.client, raw) |     return new Invite(this.client, raw) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async fetch(id: string): Promise<Invite | undefined> { |   /** Fetch an Invite */ | ||||||
|  |   async fetch(id: string): Promise<Invite> { | ||||||
|     return await new Promise((resolve, reject) => { |     return await new Promise((resolve, reject) => { | ||||||
|       this.client.rest |       this.client.rest | ||||||
|         .get(GUILD_INVITES(this.guild.id)) |         .get(INVITE(id)) | ||||||
|         .then(async (data) => { |         .then(async (data) => { | ||||||
|           this.set(id, data as InvitePayload) |           this.set(id, data as InvitePayload) | ||||||
|           const newInvite = await this.get(data.code) |           const newInvite = await this.get(data.code) | ||||||
|           resolve(newInvite) |           resolve(newInvite as Invite) | ||||||
|         }) |         }) | ||||||
|         .catch((e) => reject(e)) |         .catch((e) => reject(e)) | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ export class MemberRolesManager extends BaseChildManager<RolePayload, Role> { | ||||||
|       true |       true | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
|     return res.status === 204 |     return res.response.status === 204 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async remove(role: string | Role): Promise<boolean> { |   async remove(role: string | Role): Promise<boolean> { | ||||||
|  | @ -76,6 +76,6 @@ export class MemberRolesManager extends BaseChildManager<RolePayload, Role> { | ||||||
|       true |       true | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
|     return res.status === 204 |     return res.response.status === 204 | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -58,6 +58,7 @@ export class MembersManager extends BaseManager<MemberPayload, Member> { | ||||||
|     ) |     ) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** Fetch a Guild Member */ | ||||||
|   async fetch(id: string): Promise<Member> { |   async fetch(id: string): Promise<Member> { | ||||||
|     return await new Promise((resolve, reject) => { |     return await new Promise((resolve, reject) => { | ||||||
|       this.client.rest |       this.client.rest | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ import { Guild } from '../structures/guild.ts' | ||||||
| import { Message } from '../structures/message.ts' | import { Message } from '../structures/message.ts' | ||||||
| import { MessageReaction } from '../structures/messageReaction.ts' | import { MessageReaction } from '../structures/messageReaction.ts' | ||||||
| import { Reaction } from '../types/channel.ts' | import { Reaction } from '../types/channel.ts' | ||||||
|  | import { MESSAGE_REACTION, MESSAGE_REACTIONS } from '../types/endpoint.ts' | ||||||
| import { BaseManager } from './base.ts' | import { BaseManager } from './base.ts' | ||||||
| 
 | 
 | ||||||
| export class MessageReactionsManager extends BaseManager< | export class MessageReactionsManager extends BaseManager< | ||||||
|  | @ -58,4 +59,22 @@ export class MessageReactionsManager extends BaseManager< | ||||||
|     await this.client.cache.deleteCache(`reaction_users:${this.message.id}`) |     await this.client.cache.deleteCache(`reaction_users:${this.message.id}`) | ||||||
|     return this.client.cache.deleteCache(this.cacheName) |     return this.client.cache.deleteCache(this.cacheName) | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   /** Remove all Reactions from the Message */ | ||||||
|  |   async removeAll(): Promise<void> { | ||||||
|  |     await this.client.rest.delete( | ||||||
|  |       MESSAGE_REACTIONS(this.message.channel.id, this.message.id) | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Remove a specific Emoji from Reactions */ | ||||||
|  |   async removeEmoji(emoji: Emoji | string): Promise<MessageReactionsManager> { | ||||||
|  |     const val = encodeURIComponent( | ||||||
|  |       (typeof emoji === 'object' ? emoji.id ?? emoji.name : emoji) as string | ||||||
|  |     ) | ||||||
|  |     await this.client.rest.delete( | ||||||
|  |       MESSAGE_REACTION(this.message.channel.id, this.message.id, val) | ||||||
|  |     ) | ||||||
|  |     return this | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,19 @@ | ||||||
|  | import { Permissions } from '../../mod.ts' | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { Guild } from '../structures/guild.ts' | import { Guild } from '../structures/guild.ts' | ||||||
| import { Role } from '../structures/role.ts' | import { Role } from '../structures/role.ts' | ||||||
| import { GUILD_ROLE } from '../types/endpoint.ts' | import { GUILD_ROLE, GUILD_ROLES } from '../types/endpoint.ts' | ||||||
| import { RolePayload } from '../types/role.ts' | import { RolePayload } from '../types/role.ts' | ||||||
| import { BaseManager } from './base.ts' | import { BaseManager } from './base.ts' | ||||||
| 
 | 
 | ||||||
|  | export interface CreateGuildRoleOptions { | ||||||
|  |   name?: string | ||||||
|  |   permissions?: number | string | Permissions | ||||||
|  |   color?: number | string | ||||||
|  |   hoist?: boolean | ||||||
|  |   mentionable?: boolean | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export class RolesManager extends BaseManager<RolePayload, Role> { | export class RolesManager extends BaseManager<RolePayload, Role> { | ||||||
|   guild: Guild |   guild: Guild | ||||||
| 
 | 
 | ||||||
|  | @ -13,13 +22,14 @@ export class RolesManager extends BaseManager<RolePayload, Role> { | ||||||
|     this.guild = guild |     this.guild = guild | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** Fetch a Guild Role (from API) */ | ||||||
|   async fetch(id: string): Promise<Role> { |   async fetch(id: string): Promise<Role> { | ||||||
|     return await new Promise((resolve, reject) => { |     return await new Promise((resolve, reject) => { | ||||||
|       this.client.rest |       this.client.rest | ||||||
|         .get(GUILD_ROLE(this.guild.id, id)) |         .get(GUILD_ROLE(this.guild.id, id)) | ||||||
|         .then((data) => { |         .then(async (data) => { | ||||||
|           this.set(id, data as RolePayload) |           await this.set(id, data as RolePayload) | ||||||
|           resolve(new Role(this.client, data as RolePayload)) |           resolve(((await this.get(id)) as unknown) as Role) | ||||||
|         }) |         }) | ||||||
|         .catch((e) => reject(e)) |         .catch((e) => reject(e)) | ||||||
|     }) |     }) | ||||||
|  | @ -31,4 +41,43 @@ export class RolesManager extends BaseManager<RolePayload, Role> { | ||||||
|     } |     } | ||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   /** Create a Guild Role */ | ||||||
|  |   async create(data?: CreateGuildRoleOptions): Promise<Role> { | ||||||
|  |     if (typeof data?.color === 'string') { | ||||||
|  |       if (data.color.startsWith('#')) data.color = data.color.slice(1) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const roleRaw = ((await this.client.rest.post(GUILD_ROLES(this.guild.id), { | ||||||
|  |       name: data?.name, | ||||||
|  |       permissions: | ||||||
|  |         data?.permissions === undefined | ||||||
|  |           ? undefined | ||||||
|  |           : (typeof data.permissions === 'object' | ||||||
|  |               ? data.permissions.bitfield | ||||||
|  |               : data.permissions | ||||||
|  |             ).toString(), | ||||||
|  |       color: | ||||||
|  |         data?.color === undefined | ||||||
|  |           ? undefined | ||||||
|  |           : typeof data.color === 'string' | ||||||
|  |           ? isNaN(parseInt(data.color, 16)) | ||||||
|  |             ? 0 | ||||||
|  |             : parseInt(data.color, 16) | ||||||
|  |           : data.color, | ||||||
|  |       hoist: data?.hoist ?? false, | ||||||
|  |       mentionable: data?.mentionable ?? false | ||||||
|  |     })) as unknown) as RolePayload | ||||||
|  | 
 | ||||||
|  |     await this.set(roleRaw.id, roleRaw) | ||||||
|  |     return ((await this.get(roleRaw.id)) as unknown) as Role | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Delete a Guild Role */ | ||||||
|  |   async delete(role: Role | string): Promise<boolean> { | ||||||
|  |     await this.client.rest.delete( | ||||||
|  |       GUILD_ROLE(this.guild.id, typeof role === 'object' ? role.id : role) | ||||||
|  |     ) | ||||||
|  |     return true | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -17,6 +17,8 @@ import { Interaction } from '../structures/slash.ts' | ||||||
| import { SlashModule } from './slashModule.ts' | import { SlashModule } from './slashModule.ts' | ||||||
| import type { ShardManager } from './shard.ts' | import type { ShardManager } from './shard.ts' | ||||||
| import { Application } from '../structures/application.ts' | import { Application } from '../structures/application.ts' | ||||||
|  | import { Invite } from '../structures/invite.ts' | ||||||
|  | import { INVITE } from '../types/endpoint.ts' | ||||||
| import { ClientEvents } from '../gateway/handlers/index.ts' | import { ClientEvents } from '../gateway/handlers/index.ts' | ||||||
| 
 | 
 | ||||||
| /** OS related properties sent with Gateway Identify */ | /** OS related properties sent with Gateway Identify */ | ||||||
|  | @ -229,6 +231,18 @@ export class Client extends EventEmitter { | ||||||
|     return new Application(this, app) |     return new Application(this, app) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** Fetch an Invite */ | ||||||
|  |   async fetchInvite(id: string): Promise<Invite> { | ||||||
|  |     return await new Promise((resolve, reject) => { | ||||||
|  |       this.rest | ||||||
|  |         .get(INVITE(id)) | ||||||
|  |         .then((data) => { | ||||||
|  |           resolve(new Invite(this, data)) | ||||||
|  |         }) | ||||||
|  |         .catch((e) => reject(e)) | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   /** |   /** | ||||||
|    * This function is used for connecting to discord. |    * This function is used for connecting to discord. | ||||||
|    * @param token Your token. This is required. |    * @param token Your token. This is required. | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue