diff --git a/package.json b/package.json index fcf9f72..0347ebd 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "license": "Apache-2.0", "dependencies": { "chokidar": "^3.6.0", - "discord-api-types": "^0.37.86", + "discord-api-types": "^0.37.88", "magic-bytes.js": "^1.10.0", "ts-mixer": "^6.0.4", "ws": "^8.17.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 321d5c9..bf3a9d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^3.6.0 version: 3.6.0 discord-api-types: - specifier: ^0.37.86 - version: 0.37.86 + specifier: ^0.37.88 + version: 0.37.88 magic-bytes.js: specifier: ^1.10.0 version: 1.10.0 @@ -362,8 +362,8 @@ packages: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} - discord-api-types@0.37.86: - resolution: {integrity: sha512-ofpVLHshKdKl+XuZBbwOBSlgQFPJPzMuUiBpala3+ImPHBVo7ojZpzJUu2NJV/f0t1kqncechDugQpO5AjZnxg==} + discord-api-types@0.37.88: + resolution: {integrity: sha512-Yrj5S3JXzouPc6WLA8svgXCw3Q7IkNdW/Y/IfkJF+CsgUBsgECQ8qVoOaseJJ8Atj2TEvabut4rGmzq6PRi1/Q==} dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -1185,7 +1185,7 @@ snapshots: denque@2.1.0: optional: true - discord-api-types@0.37.86: {} + discord-api-types@0.37.88: {} dot-prop@5.3.0: dependencies: diff --git a/src/commands/optionresolver.ts b/src/commands/optionresolver.ts index 381e975..fe6e6a5 100644 --- a/src/commands/optionresolver.ts +++ b/src/commands/optionresolver.ts @@ -17,7 +17,10 @@ import type { Command, CommandAutocompleteOption, CommandOption, SubCommand } fr import type { UsingClient } from './applications/shared'; export type ContextOptionsResolved = { - members?: Record; + members?: Record< + string, + APIGuildMember | Omit | APIInteractionGuildMember | GuildMember | InteractionGuildMember + >; users?: Record; roles?: Record; channels?: Record; diff --git a/src/events/hooks/guild.ts b/src/events/hooks/guild.ts index 1041965..a8c5ab2 100644 --- a/src/events/hooks/guild.ts +++ b/src/events/hooks/guild.ts @@ -6,6 +6,7 @@ import type { GatewayGuildDeleteDispatchData, GatewayGuildEmojisUpdateDispatchData, GatewayGuildIntegrationsUpdateDispatchData, + GatewayGuildMemberAddDispatchData, GatewayGuildMemberRemoveDispatchData, GatewayGuildMemberUpdateDispatchData, GatewayGuildMembersChunkDispatchData, @@ -21,16 +22,7 @@ import type { GatewayGuildUpdateDispatchData, } from 'discord-api-types/v10'; import { toCamelCase } from '../../common'; -import { - Guild, - GuildEmoji, - GuildMember, - GuildRole, - Sticker, - UnavailableMember, - User, - type GatewayGuildMemberAddDispatchDataFixed, -} from '../../structures'; +import { Guild, GuildEmoji, GuildMember, GuildRole, Sticker, User } from '../../structures'; import type { UsingClient } from '../../commands'; export const GUILD_AUDIT_LOG_ENTRY_CREATE = (_self: UsingClient, data: GatewayGuildAuditLogEntryCreateDispatchData) => { @@ -64,8 +56,7 @@ export const GUILD_INTEGRATIONS_UPDATE = (_self: UsingClient, data: GatewayGuild return toCamelCase(data); }; -export const GUILD_MEMBER_ADD = (self: UsingClient, data: GatewayGuildMemberAddDispatchDataFixed) => { - if (!('user' in data)) return new UnavailableMember(self, data, data.id, data.guild_id); +export const GUILD_MEMBER_ADD = (self: UsingClient, data: GatewayGuildMemberAddDispatchData) => { return new GuildMember(self, data, data.user, data.guild_id); }; diff --git a/src/structures/GuildMember.ts b/src/structures/GuildMember.ts index 902cb80..4e83103 100644 --- a/src/structures/GuildMember.ts +++ b/src/structures/GuildMember.ts @@ -2,6 +2,7 @@ import { DiscordBase } from './extra/DiscordBase'; export type GuildMemberData = | APIGuildMember + | Omit | GatewayGuildMemberUpdateDispatchData | GatewayGuildMemberAddDispatchData | APIInteractionDataResolvedGuildMember; @@ -19,16 +20,12 @@ import type { RESTPutAPIGuildMemberJSONBody, } from 'discord-api-types/v10'; import type { UsingClient } from '../commands'; -import type { MakeRequired, MessageCreateBodyRequest, ObjectToLower, ToClass } from '../common'; +import type { MessageCreateBodyRequest, ObjectToLower, ToClass } from '../common'; import type { ImageOptions, MethodContext } from '../common/types/options'; import type { GuildMemberResolvable } from '../common/types/resolvables'; import { User } from './User'; import { PermissionsBitField } from './extra/Permissions'; -export type GatewayGuildMemberAddDispatchDataFixed = Pending extends true - ? Omit & { id: string } - : MakeRequired; - export interface BaseGuildMember extends DiscordBase, ObjectToLower> {} export class BaseGuildMember extends DiscordBase { private _roles: string[]; diff --git a/src/websocket/SharedTypes.ts b/src/websocket/SharedTypes.ts index 09452b1..3f78814 100644 --- a/src/websocket/SharedTypes.ts +++ b/src/websocket/SharedTypes.ts @@ -57,9 +57,9 @@ import { type GatewayWebhooksUpdateDispatchData, type PresenceUpdateStatus, type GatewayMessagePollVoteDispatchData, + type GatewayGuildMemberAddDispatchData, } from 'discord-api-types/v10'; import type { RestToKeys } from '../common'; -import type { GatewayGuildMemberAddDispatchDataFixed } from '../structures'; /** https://discord.com/developers/docs/topics/gateway-events#update-presence */ export interface StatusUpdate { @@ -120,7 +120,7 @@ export interface Events { [GatewayDispatchEvents.GuildEmojisUpdate]: GatewayGuildEmojisUpdateDispatchData; [GatewayDispatchEvents.GuildStickersUpdate]: GatewayGuildStickersUpdateDispatchData; [GatewayDispatchEvents.GuildIntegrationsUpdate]: GatewayGuildIntegrationsUpdateDispatchData; - [GatewayDispatchEvents.GuildMemberAdd]: GatewayGuildMemberAddDispatchDataFixed; + [GatewayDispatchEvents.GuildMemberAdd]: GatewayGuildMemberAddDispatchData; [GatewayDispatchEvents.GuildMemberRemove]: GatewayGuildMemberRemoveDispatchData; [GatewayDispatchEvents.GuildMemberUpdate]: GatewayGuildMemberUpdateDispatchData; [GatewayDispatchEvents.GuildMembersChunk]: GatewayGuildMembersChunkDispatchData;