lunibee 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +229 -0
  2. package/dist/builders/attachment.d.ts +20 -0
  3. package/dist/builders/commands.d.ts +118 -0
  4. package/dist/builders/components.d.ts +151 -0
  5. package/dist/builders/embed.d.ts +59 -0
  6. package/dist/builders/index.d.ts +5 -0
  7. package/dist/builders/index.js +828 -0
  8. package/dist/builders/index.js.map +13 -0
  9. package/dist/collection/cache.d.ts +37 -0
  10. package/dist/collection/index.d.ts +47 -0
  11. package/dist/collection/index.js +214 -0
  12. package/dist/collection/index.js.map +11 -0
  13. package/dist/core/client-state.d.ts +10 -0
  14. package/dist/core/collector.d.ts +27 -0
  15. package/dist/core/events.d.ts +5 -0
  16. package/dist/core/index.d.ts +111 -0
  17. package/dist/core/index.js +3188 -0
  18. package/dist/core/index.js.map +29 -0
  19. package/dist/core/permissions.d.ts +293 -0
  20. package/dist/formatters/index.d.ts +10 -0
  21. package/dist/formatters/index.js +43 -0
  22. package/dist/formatters/index.js.map +10 -0
  23. package/dist/handlers/index.d.ts +16 -0
  24. package/dist/handlers/index.js +37 -0
  25. package/dist/handlers/index.js.map +10 -0
  26. package/{src/index.ts → dist/index.d.ts} +2 -29
  27. package/dist/index.js +4182 -0
  28. package/dist/index.js.map +41 -0
  29. package/dist/managers/application.d.ts +28 -0
  30. package/dist/managers/base.d.ts +28 -0
  31. package/dist/managers/index.d.ts +96 -0
  32. package/dist/managers/index.js +947 -0
  33. package/dist/managers/index.js.map +22 -0
  34. package/dist/managers/member.d.ts +35 -0
  35. package/dist/managers/message.d.ts +25 -0
  36. package/dist/managers/role.d.ts +34 -0
  37. package/dist/managers/thread.d.ts +14 -0
  38. package/dist/rest/index.d.ts +49 -0
  39. package/dist/rest/index.js +344 -0
  40. package/dist/rest/index.js.map +12 -0
  41. package/dist/rest/routes.d.ts +44 -0
  42. package/dist/rest/types.d.ts +26 -0
  43. package/dist/rest/webhook.d.ts +40 -0
  44. package/dist/sharding/bus.d.ts +22 -0
  45. package/dist/sharding/index.d.ts +34 -0
  46. package/dist/sharding/index.js +732 -0
  47. package/dist/sharding/index.js.map +13 -0
  48. package/dist/structures/base.d.ts +75 -0
  49. package/dist/structures/index.d.ts +39 -0
  50. package/dist/structures/index.js +571 -0
  51. package/dist/structures/index.js.map +14 -0
  52. package/dist/structures/interactions.d.ts +136 -0
  53. package/dist/structures/permissions.d.ts +73 -0
  54. package/dist/structures/resources.d.ts +64 -0
  55. package/dist/types/index.d.ts +535 -0
  56. package/dist/types/index.js +132 -0
  57. package/dist/types/index.js.map +10 -0
  58. package/dist/utils/index.d.ts +6 -0
  59. package/dist/utils/index.js +18 -0
  60. package/dist/utils/index.js.map +10 -0
  61. package/dist/voice/index.d.ts +97 -0
  62. package/dist/voice/index.js +161 -0
  63. package/dist/voice/index.js.map +10 -0
  64. package/dist/ws/index.d.ts +76 -0
  65. package/dist/ws/index.js +582 -0
  66. package/dist/ws/index.js.map +11 -0
  67. package/package.json +113 -28
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/structures/src/base.ts", "../../packages/structures/src/permissions.ts", "../../packages/structures/src/resources.ts", "../../packages/structures/src/interactions.ts", "../../packages/structures/src/index.ts"],
4
+ "sourcesContent": [
5
+ "/** Common Discord snowflake-backed structure. */\nexport class BaseStructure {\n /** Discord resource ID. */\n public readonly id: string;\n /** Creates a structure from an ID. @param id Discord snowflake identifier. @throws {TypeError} If the ID is invalid. */\n public constructor(id: string) {\n if (!/^\\d{1,20}$/.test(id))\n throw new TypeError(\"A Discord structure requires a valid snowflake ID.\");\n this.id = id;\n }\n /** Returns the resource ID. @returns Discord snowflake identifier. */\n public toString(): string {\n return this.id;\n }\n}\n\n/** Context used by structures to delegate resource operations to the owning client. */\nexport interface ResourceContext {\n /** Sends a message through the owning channel manager. @param channelId Channel identifier. @param options Message payload. @returns The created message. */\n sendMessage(\n channelId: string,\n options: { content?: string },\n ): Promise<import(\"./index.js\").Message>;\n /** Edits a message through the owning channel manager. @param channelId Channel identifier. @param messageId Message identifier. @param options Edit payload. @returns The updated message. */\n editMessage(\n channelId: string,\n messageId: string,\n options: { content?: string },\n ): Promise<import(\"./index.js\").Message>;\n /** Deletes a message through the owning channel manager. @param channelId Channel identifier. @param messageId Message identifier. @returns A promise fulfilled after deletion. */\n deleteMessage(channelId: string, messageId: string): Promise<void>;\n /** Crossposts a message through the owning channel manager. @param channelId Channel identifier. @param messageId Message identifier. @returns The crossposted message. */\n crosspostMessage(\n channelId: string,\n messageId: string,\n ): Promise<import(\"./index.js\").Message>;\n}\n\n/** Represents a Discord user. */\nexport class User extends BaseStructure {\n /** User name. */ public username: string;\n /** Global display name. */ public globalName: string | null;\n /** Avatar hash. */ public avatar: string | null;\n /** Whether the user is a bot. */ public bot: boolean;\n /** Whether the account is a Discord system user. */ public system: boolean;\n /** Public user flags. */ public flags: number;\n /** Creates a user from Discord API data. @param data User payload. @throws {TypeError} If required data is invalid. */\n public constructor(data: import(\"@lunibee/types\").UserData) {\n super(data.id);\n if (!data.username)\n throw new TypeError(\"A Discord user requires a username.\");\n this.username = data.username;\n this.globalName = data.global_name ?? null;\n this.avatar = data.avatar ?? null;\n this.bot = data.bot ?? false;\n this.system = data.system ?? false;\n this.flags = data.public_flags ?? 0;\n }\n /** Gets the effective display name. @returns Global display name or username. */\n public get displayName(): string {\n return this.globalName ?? this.username;\n }\n /** Creates an avatar CDN URL. @param options URL format options. @returns Avatar URL, or null when no custom avatar exists. */\n public avatarURL(\n options: { extension?: \"png\" | \"jpg\" | \"webp\" | \"gif\"; size?: number } = {},\n ): string | null {\n if (!this.avatar) return null;\n const extension =\n options.extension ?? (this.avatar.startsWith(\"a_\") ? \"gif\" : \"png\");\n return `https://cdn.discordapp.com/avatars/${this.id}/${this.avatar}.${extension}${options.size ? `?size=${options.size}` : \"\"}`;\n }\n /** Creates the default avatar URL. @returns Discord default avatar URL. */\n public defaultAvatarURL(): string {\n return `https://cdn.discordapp.com/embed/avatars/${Number(BigInt(this.id) % 5n)}.png`;\n }\n /** Creates an avatar URL with default fallback. @param options URL format options. @returns Avatar or default avatar URL. */\n public displayAvatarURL(\n options: { extension?: \"png\" | \"jpg\" | \"webp\" | \"gif\"; size?: number } = {},\n ): string {\n return this.avatarURL(options) ?? this.defaultAvatarURL();\n }\n}\n\n/** Represents a Discord channel. */\nexport class Channel extends BaseStructure {\n /** Discord channel type. */ public type: number;\n /** Channel name. */ public name?: string | null;\n /** Guild containing the channel. */ public guildId?: string;\n readonly #context?: ResourceContext;\n /** Creates a channel from Discord API data. @param data Channel payload. @param context Optional owning resource context. @throws {TypeError|RangeError} If required channel data is invalid. */\n public constructor(\n data: import(\"@lunibee/types\").APIChannel,\n context?: ResourceContext,\n ) {\n super(data.id);\n if (!Number.isInteger(data.type) || data.type < 0)\n throw new RangeError(\"A Discord channel requires a valid channel type.\");\n this.type = data.type;\n this.name = data.name;\n this.guildId = data.guild_id;\n this.#context = context;\n }\n /** Sends a message through the owning manager. @param options Message payload. @returns The created message. @throws {Error} If this channel is detached from a client. */\n public sendMessage(options: {\n content?: string;\n }): Promise<import(\"./index.js\").Message> {\n if (!this.#context)\n throw new Error(\"This channel is not attached to a client.\");\n return this.#context.sendMessage(this.id, options);\n }\n}\n\n/** Represents a Discord guild. */\nexport class Guild extends BaseStructure {\n /** Guild name. */ public name: string;\n /** Preferred guild locale. */ public preferredLocale?: string;\n /** Guild owner ID. */ public ownerId?: string;\n /** Creates a guild from Discord API data. @param data Guild payload. @throws {TypeError} If required data is invalid. */\n public constructor(data: {\n id: string;\n name: string;\n preferred_locale?: string;\n owner_id?: string;\n }) {\n super(data.id);\n if (!data.name) throw new TypeError(\"A Discord guild requires a name.\");\n this.name = data.name;\n this.preferredLocale = data.preferred_locale;\n this.ownerId = data.owner_id;\n }\n}\n",
6
+ "/** Permission bit values exposed by Discord. */\r\nexport const Permissions = {\r\n /** Create instant invite permission. */ CreateInstantInvite: 1n << 0n,\r\n /** Kick members permission. */ KickMembers: 1n << 1n,\r\n /** Ban members permission. */ BanMembers: 1n << 2n,\r\n /** Administrator permission. */ Administrator: 1n << 3n,\r\n /** Manage channels permission. */ ManageChannels: 1n << 4n,\r\n /** Manage guild permission. */ ManageGuild: 1n << 5n,\r\n /** Add reactions permission. */ AddReactions: 1n << 6n,\r\n /** View audit log permission. */ ViewAuditLog: 1n << 7n,\r\n /** Priority speaker permission. */ PrioritySpeaker: 1n << 8n,\r\n /** Stream permission. */ Stream: 1n << 9n,\r\n /** View channel permission. */ ViewChannel: 1n << 10n,\r\n /** Send messages permission. */ SendMessages: 1n << 11n,\r\n /** Send TTS messages permission. */ SendTTSMessages: 1n << 12n,\r\n /** Manage messages permission. */ ManageMessages: 1n << 13n,\r\n /** Embed links permission. */ EmbedLinks: 1n << 14n,\r\n /** Attach files permission. */ AttachFiles: 1n << 15n,\r\n /** Read message history permission. */ ReadMessageHistory: 1n << 16n,\r\n /** Mention everyone permission. */ MentionEveryone: 1n << 17n,\r\n /** Use external emojis permission. */ UseExternalEmojis: 1n << 18n,\r\n /** View guild insights permission. */ ViewGuildInsights: 1n << 19n,\r\n /** Connect permission. */ Connect: 1n << 20n,\r\n /** Speak permission. */ Speak: 1n << 21n,\r\n /** Mute members permission. */ MuteMembers: 1n << 22n,\r\n /** Deafen members permission. */ DeafenMembers: 1n << 23n,\r\n /** Move members permission. */ MoveMembers: 1n << 24n,\r\n /** Use voice activity detection permission. */ UseVAD: 1n << 25n,\r\n /** Change nickname permission. */ ChangeNickname: 1n << 26n,\r\n /** Manage nicknames permission. */ ManageNicknames: 1n << 27n,\r\n /** Manage roles permission. */ ManageRoles: 1n << 28n,\r\n /** Manage webhooks permission. */ ManageWebhooks: 1n << 29n,\r\n /** Manage guild expressions permission. */ ManageGuildExpressions: 1n << 30n,\r\n /** Use application commands permission. */ UseApplicationCommands: 1n << 31n,\r\n /** Request to speak permission. */ RequestToSpeak: 1n << 32n,\r\n /** Manage events permission. */ ManageEvents: 1n << 33n,\r\n /** Manage threads permission. */ ManageThreads: 1n << 34n,\r\n /** Create public threads permission. */ CreatePublicThreads: 1n << 35n,\r\n /** Create private threads permission. */ CreatePrivateThreads: 1n << 36n,\r\n /** Use external stickers permission. */ UseExternalStickers: 1n << 37n,\r\n /** Send messages in threads permission. */ SendMessagesInThreads: 1n << 38n,\r\n /** Use embedded activities permission. */ UseEmbeddedActivities: 1n << 39n,\r\n /** Moderate members permission. */ ModerateMembers: 1n << 40n,\r\n /** View creator monetization analytics permission. */ ViewCreatorMonetizationAnalytics:\r\n 1n << 41n,\r\n /** Use soundboard permission. */ UseSoundboard: 1n << 42n,\r\n /** Create guild expressions permission. */ CreateGuildExpressions: 1n << 43n,\r\n /** Create events permission. */ CreateEvents: 1n << 44n,\r\n /** Use external sounds permission. */ UseExternalSounds: 1n << 45n,\r\n /** Send voice messages permission. */ SendVoiceMessages: 1n << 46n,\r\n /** Send polls permission. */ SendPolls: 1n << 49n,\r\n /** Use external apps permission. */ UseExternalApps: 1n << 50n,\r\n} as const;\r\n\r\n/** Public permission resolvable. */\r\nexport type PermissionResolvable =\r\n | bigint\r\n | number\r\n | string\r\n | PermissionName\r\n | PermissionSet\r\n | PermissionResolvable[];\r\n\r\n/** Immutable Discord permission bitfield. */\r\nexport class PermissionSet {\r\n /** Permission bitfield. */ public readonly bitfield: bigint;\r\n /** Creates a permission set. @param value Initial permission bitfield. @throws {RangeError} If the value is negative. @throws {TypeError} If the value is not a valid integer. */\r\n public constructor(value: PermissionResolvable = 0n) {\r\n try {\r\n if (Array.isArray(value)) {\r\n let bit = 0n;\r\n for (const item of value) bit |= this.#resolve(item);\r\n this.bitfield = bit;\r\n } else if (value instanceof PermissionSet) {\r\n this.bitfield = value.bitfield;\r\n } else {\r\n const bitfield = this.#resolve(value);\r\n if (bitfield < 0n)\r\n throw new RangeError(\"Permission bitfield cannot be negative.\");\r\n this.bitfield = bitfield;\r\n }\r\n } catch (error) {\r\n if (error instanceof RangeError) throw error;\r\n throw new TypeError(\r\n \"Permission bitfield must be a valid non-negative integer.\",\r\n { cause: error },\r\n );\r\n }\r\n }\r\n /** Checks whether all supplied permissions are present. @param permissions Permission names or raw bits. @returns True when every requested permission is present. */ public has(\r\n ...permissions: PermissionResolvable[]\r\n ): boolean {\r\n return permissions.every(\r\n (permission) =>\r\n (this.bitfield & this.#resolve(permission)) ===\r\n this.#resolve(permission),\r\n );\r\n }\r\n /** Checks whether any supplied permission is present. @param permissions Permission names or raw bits. @returns True when at least one requested permission is present. */ public any(\r\n ...permissions: PermissionResolvable[]\r\n ): boolean {\r\n return permissions.some(\r\n (permission) => (this.bitfield & this.#resolve(permission)) !== 0n,\r\n );\r\n }\r\n /** Returns a new set with permissions added. @param permissions Permission names or raw bits. @returns A new permission set. */ public add(\r\n ...permissions: PermissionResolvable[]\r\n ): PermissionSet {\r\n let bitfield = this.bitfield;\r\n for (const permission of permissions) bitfield |= this.#resolve(permission);\r\n return new PermissionSet(bitfield);\r\n }\r\n /** Returns a new set with permissions removed. @param permissions Permission names or raw bits. @returns A new permission set. */ public remove(\r\n ...permissions: PermissionResolvable[]\r\n ): PermissionSet {\r\n let bitfield = this.bitfield;\r\n for (const permission of permissions)\r\n bitfield &= ~this.#resolve(permission);\r\n return new PermissionSet(bitfield);\r\n }\r\n /** Checks equality with another permission set or raw bitfield. @param other Permission set or raw bitfield. @returns True when both values are equal. */ public equals(\r\n other: PermissionSet | bigint | number | string,\r\n ): boolean {\r\n return (\r\n this.bitfield ===\r\n (other instanceof PermissionSet\r\n ? other.bitfield\r\n : new PermissionSet(other).bitfield)\r\n );\r\n }\r\n /** Returns the decimal permission representation. @returns Decimal permission bitfield. */ public toString(): string {\r\n return this.bitfield.toString();\r\n }\r\n /** Returns known permission names contained in this set. @returns Names of all enabled known permissions. */ public toArray(): PermissionName[] {\r\n return (Object.keys(Permissions) as PermissionName[]).filter((permission) =>\r\n this.has(permission),\r\n );\r\n }\r\n /** Resolves a named permission or raw bit. @param permission Permission name or raw bit. @returns Numeric permission bit. */ #resolve(\r\n permission: PermissionResolvable,\r\n ): bigint {\r\n if (permission instanceof PermissionSet) return permission.bitfield;\r\n if (typeof permission === \"bigint\") return permission;\r\n if (typeof permission === \"number\") return BigInt(permission);\r\n if (Array.isArray(permission)) {\r\n let bit = 0n;\r\n for (const p of permission) bit |= this.#resolve(p);\r\n return bit;\r\n }\r\n if (typeof permission === \"string\") {\r\n if (permission in Permissions)\r\n return (Permissions as Record<string, bigint>)[permission]!;\r\n const matchedKey = Object.keys(Permissions).find(\r\n (k) => k.toLowerCase() === permission.toLowerCase(),\r\n );\r\n if (matchedKey)\r\n return (Permissions as Record<string, bigint>)[matchedKey]!;\r\n return BigInt(permission);\r\n }\r\n return 0n;\r\n }\r\n}\r\n\r\n/** Discord.js-compatible permission bitfield. */\r\nexport class PermissionsBitField extends PermissionSet {\r\n /** Creates a permissions bitfield. @param value Initial permission bitfield. */\r\n public constructor(value: PermissionResolvable = 0n) {\r\n super(value);\r\n }\r\n}\r\n",
7
+ "import { BaseStructure, Channel, User } from \"./base.js\";\nimport { PermissionsBitField } from \"./permissions.js\";\n\n/** A Discord guild member. */\nexport class GuildMember {\n /** User represented by the member. */ public readonly user: User;\n /** Guild containing the member. */ public readonly guildId: string;\n /** Nickname, if configured. */ public nickname: string | null;\n /** Role IDs assigned to the member. */ public readonly roleIds: string[];\n /** Whether the member is pending membership screening. */ public pending: boolean;\n /** Member join timestamp. */ public joinedAt?: Date;\n /** Raw effective permission bitfield supplied by Discord. */ public readonly permissions: PermissionsBitField;\n /** Creates a guild member from Discord data. @param data Discord guild-member payload. @throws {TypeError} If the guild ID is invalid. @throws {RangeError} If joined_at is invalid. */\n public constructor(data: {\n user: {\n id: string;\n username: string;\n global_name?: string | null;\n avatar?: string | null;\n bot?: boolean;\n system?: boolean;\n public_flags?: number;\n };\n guild_id: string;\n nick?: string | null;\n roles?: string[];\n pending?: boolean;\n joined_at?: string;\n permissions?: string;\n }) {\n this.user = new User(data.user);\n if (!/^\\d{1,20}$/.test(data.guild_id))\n throw new TypeError(\"Member guild_id must be a valid snowflake.\");\n this.guildId = data.guild_id;\n this.nickname = data.nick ?? null;\n this.roleIds = [...(data.roles ?? [])];\n this.pending = data.pending ?? false;\n this.joinedAt = data.joined_at ? new Date(data.joined_at) : undefined;\n if (this.joinedAt?.toString() === \"Invalid Date\")\n throw new RangeError(\"Member joined_at must be a valid date.\");\n this.permissions = new PermissionsBitField(data.permissions ?? 0n);\n }\n /** Effective member display name. @returns Nickname or user display name. */ public get displayName(): string {\n return this.nickname ?? this.user.displayName;\n }\n}\n\n/** A Discord guild role. */\nexport class Role extends BaseStructure {\n /** Role name. */ public name: string;\n /** Role color. */ public color: number;\n /** Whether the role is hoisted. */ public hoist: boolean;\n /** Permission bitfield. */ public permissions: PermissionsBitField;\n /** Whether the role is managed. */ public managed: boolean;\n /** Whether the role is mentionable. */ public mentionable: boolean;\n /** Creates a role from Discord data. @param data Discord role payload. */\n public constructor(data: {\n id: string;\n name: string;\n color?: number;\n hoist?: boolean;\n permissions?: string;\n managed?: boolean;\n mentionable?: boolean;\n }) {\n super(data.id);\n if (!data.name) throw new TypeError(\"Role name cannot be empty.\");\n this.name = data.name;\n this.color = data.color ?? 0;\n this.hoist = data.hoist ?? false;\n this.permissions = new PermissionsBitField(data.permissions ?? 0n);\n this.managed = data.managed ?? false;\n this.mentionable = data.mentionable ?? false;\n }\n /** Discord role mention string. @returns Role mention. */ public toString(): string {\n return `<@&${this.id}>`;\n }\n}\n\n/** A Discord text-capable channel. */\nexport class TextChannel extends Channel {\n /** Parent category ID. */ public parentId?: string | null;\n /** Creates a text channel from Discord data. @param data Discord channel payload. */\n public constructor(data: {\n id: string;\n type: number;\n name?: string;\n parent_id?: string | null;\n guild_id?: string;\n }) {\n super(data);\n this.parentId = data.parent_id;\n }\n /** Discord channel mention string. @returns Channel mention. */ public toString(): string {\n return `<#${this.id}>`;\n }\n}\n",
8
+ "/** Discord interaction type constants. */\r\nexport const InteractionType = {\r\n Ping: 1,\r\n ApplicationCommand: 2,\r\n MessageComponent: 3,\r\n ApplicationCommandAutocomplete: 4,\r\n ModalSubmit: 5,\r\n} as const;\r\n/** Discord interaction response type constants. */\r\nexport const InteractionResponseType = {\r\n Pong: 1,\r\n ChannelMessage: 4,\r\n DeferredChannelMessage: 5,\r\n DeferredMessageUpdate: 6,\r\n MessageUpdate: 7,\r\n Autocomplete: 8,\r\n Modal: 9,\r\n} as const;\r\n/** Data shared by Discord interactions. */\r\nexport interface InteractionData {\r\n /** Interaction identifier. */ id: string;\r\n /** Application identifier. */ application_id: string;\r\n /** Interaction type. */ type: number;\r\n /** Interaction token. */ token: string;\r\n /** Gateway/API version. */ version?: number;\r\n /** Guild identifier. */ guild_id?: string;\r\n /** Channel identifier. */ channel_id?: string;\r\n /** Interaction-specific data. */ data?: Record<string, unknown>;\r\n [key: string]: unknown;\r\n}\r\n/** Options for an interaction response message. */\r\nexport interface InteractionReplyOptions {\r\n /** Message content. */ content?: string;\r\n /** Whether the response is ephemeral. */ ephemeral?: boolean;\r\n /** Message components. */ components?: unknown[];\r\n /** Message embeds. */ embeds?: unknown[];\r\n /** Discord message flags. */ flags?: number;\r\n [key: string]: unknown;\r\n}\r\n/** Transport required by an interaction structure. */\r\nexport interface InteractionClient {\r\n /** Sends the initial interaction callback. @param id Interaction identifier. @param token Interaction token. @param response Callback payload. @returns Discord response. @throws {Error} When REST fails. */ postInteractionResponse(\r\n id: string,\r\n token: string,\r\n response: InteractionResponse,\r\n ): Promise<unknown>;\r\n /** Edits the original interaction response. @param token Interaction token. @param data Message payload. @returns Discord response. @throws {Error} When REST fails. */ editInteractionReply(\r\n token: string,\r\n data: InteractionReplyOptions,\r\n ): Promise<unknown>;\r\n /** Deletes the original interaction response. @param token Interaction token. @returns Promise fulfilled after deletion. @throws {Error} When REST fails. */ deleteInteractionReply(\r\n token: string,\r\n ): Promise<void>;\r\n /** Sends a follow-up interaction webhook message. @param token Interaction token. @param data Message payload. @returns Discord response. @throws {Error} When REST fails. */ followUpInteraction(\r\n token: string,\r\n data: InteractionReplyOptions,\r\n ): Promise<unknown>;\r\n}\r\n/** A Discord interaction callback payload. */\r\nexport class InteractionResponse {\r\n readonly type: number;\r\n readonly data?: InteractionReplyOptions;\r\n /** Creates a response payload. @param type Discord callback type. @param data Optional callback data. @throws {TypeError} If type is not finite. */\r\n public constructor(type: number, data?: InteractionReplyOptions) {\r\n if (!Number.isFinite(type))\r\n throw new TypeError(\"Interaction response type must be finite.\");\r\n this.type = type;\r\n this.data = data;\r\n }\r\n /** Serializes the response for Discord. @returns Discord callback payload. */ public toJSON(): {\r\n type: number;\r\n data?: InteractionReplyOptions;\r\n } {\r\n return this.data === undefined\r\n ? { type: this.type }\r\n : { type: this.type, data: this.data };\r\n }\r\n /** Creates an immediate message response. @param options Response message options. @returns Callback payload. */ public static message(\r\n options: InteractionReplyOptions,\r\n ): InteractionResponse {\r\n const data: InteractionReplyOptions = { ...options };\r\n if (options.ephemeral) {\r\n data.flags = (typeof options.flags === \"number\" ? options.flags : 0) | 64;\r\n }\r\n return new InteractionResponse(\r\n InteractionResponseType.ChannelMessage,\r\n data,\r\n );\r\n }\r\n /** Creates a deferred channel response. @param ephemeral Whether the eventual response is ephemeral. @returns Callback payload. */ public static defer(\r\n ephemeral = false,\r\n ): InteractionResponse {\r\n return new InteractionResponse(\r\n InteractionResponseType.DeferredChannelMessage,\r\n ephemeral ? { flags: 64 } : undefined,\r\n );\r\n }\r\n /** Creates a Pong response. @returns Callback payload. */ public static pong(): InteractionResponse {\r\n return new InteractionResponse(InteractionResponseType.Pong);\r\n }\r\n}\r\n/** Base interaction structure. */\r\nexport class Interaction<TData extends InteractionData = InteractionData> {\r\n /** Interaction identifier. */ public readonly id: string;\r\n /** Application identifier. */ public readonly applicationId: string;\r\n /** Interaction token. */ public readonly token: string;\r\n /** Guild identifier. */ public readonly guildId?: string;\r\n /** Channel identifier. */ public readonly channelId?: string;\r\n /** Interaction type. */ public readonly type: number;\r\n /** Raw interaction data. */ public readonly data: TData;\r\n /** Whether the initial response was sent. */ public replied = false;\r\n /** Whether the initial response was deferred. */ public deferred = false;\r\n readonly #client: InteractionClient;\r\n /** Creates an interaction from a Gateway payload. @param client Interaction transport. @param data Gateway interaction payload. @throws {TypeError} If required identifiers are missing. */ public constructor(\r\n client: InteractionClient,\r\n data: TData,\r\n ) {\r\n if (!data.id || !data.token)\r\n throw new TypeError(\"Interaction ID and token are required.\");\r\n this.#client = client;\r\n this.id = data.id;\r\n this.applicationId = data.application_id;\r\n this.token = data.token;\r\n this.guildId = data.guild_id;\r\n this.channelId = data.channel_id;\r\n this.type = data.type;\r\n this.data = data;\r\n }\r\n /** Whether this interaction is an application command. @returns True for application command interactions. */ public isChatInputCommand(): this is CommandInteraction {\r\n return this.type === InteractionType.ApplicationCommand;\r\n }\r\n /** Whether this interaction is a message component. @returns True for component interactions. */ public isMessageComponent(): this is ComponentInteraction {\r\n return this.type === InteractionType.MessageComponent;\r\n }\r\n /** Whether this interaction is a modal submission. @returns True for modal submissions. */ public isModalSubmit(): this is ComponentInteraction {\r\n return this.type === InteractionType.ModalSubmit;\r\n }\r\n /** Whether this interaction is autocomplete. @returns True for autocomplete interactions. */ public isAutocomplete(): this is CommandInteraction {\r\n return this.type === InteractionType.ApplicationCommandAutocomplete;\r\n }\r\n /** Ensures the interaction has not already been acknowledged. @returns Nothing. @throws {Error} When already acknowledged. */ protected assertUnacknowledged(): void {\r\n if (this.replied || this.deferred)\r\n throw new Error(\"Interaction has already been acknowledged.\");\r\n }\r\n /** Ensures the interaction has been acknowledged. @returns Nothing. @throws {Error} When not acknowledged. */ protected assertAcknowledged(): void {\r\n if (!this.replied && !this.deferred)\r\n throw new Error(\"Interaction has not been acknowledged.\");\r\n }\r\n /** Posts a raw interaction response callback. */\r\n protected postResponse(response: InteractionResponse): Promise<unknown> {\r\n return this.#client.postInteractionResponse(this.id, this.token, response);\r\n }\r\n /** Sends the initial interaction response. @param options Response message options. @returns Discord response. @throws {Error} When already acknowledged or REST fails. */ public async reply(\r\n options: InteractionReplyOptions | string,\r\n ): Promise<unknown> {\r\n this.assertUnacknowledged();\r\n const payload =\r\n typeof options === \"string\" ? { content: options } : options;\r\n const result = await this.#client.postInteractionResponse(\r\n this.id,\r\n this.token,\r\n InteractionResponse.message(payload),\r\n );\r\n this.replied = true;\r\n return result;\r\n }\r\n /** Defers the initial interaction response. @param ephemeral Whether the eventual response is ephemeral. @returns Promise fulfilled after acknowledgement. @throws {Error} When already acknowledged or REST fails. */ public async deferReply(\r\n ephemeral = false,\r\n ): Promise<void> {\r\n this.assertUnacknowledged();\r\n await this.#client.postInteractionResponse(\r\n this.id,\r\n this.token,\r\n InteractionResponse.defer(ephemeral),\r\n );\r\n this.deferred = true;\r\n }\r\n /** Edits the original response. @param options Replacement message options. @returns Discord response. @throws {Error} When not acknowledged or REST fails. */ public editReply(\r\n options: InteractionReplyOptions,\r\n ): Promise<unknown> {\r\n this.assertAcknowledged();\r\n return this.#client.editInteractionReply(this.token, options);\r\n }\r\n /** Deletes the original response. @returns Promise fulfilled after deletion. @throws {Error} When not acknowledged or REST fails. */ public deleteReply(): Promise<void> {\r\n this.assertAcknowledged();\r\n return this.#client.deleteInteractionReply(this.token);\r\n }\r\n /** Sends a follow-up message using the interaction webhook. @param options Follow-up message options. @returns Discord response. @throws {Error} When REST fails. */ public followUp(\r\n options: InteractionReplyOptions | string,\r\n ): Promise<unknown> {\r\n const payload =\r\n typeof options === \"string\" ? { content: options } : options;\r\n return this.#client.followUpInteraction(this.token, payload);\r\n }\r\n /** Updates the message for a component interaction. */ public async update(\r\n options: InteractionReplyOptions | string,\r\n ): Promise<unknown> {\r\n this.assertUnacknowledged();\r\n const payload =\r\n typeof options === \"string\" ? { content: options } : options;\r\n const result = await this.#client.postInteractionResponse(\r\n this.id,\r\n this.token,\r\n new InteractionResponse(InteractionResponseType.MessageUpdate, payload),\r\n );\r\n this.replied = true;\r\n return result;\r\n }\r\n /** Opens a modal dialog in the user's client. @param modal Modal builder output or raw modal callback data. @returns Discord response. @throws {Error} When already acknowledged or REST fails. */\r\n public async showModal(modal: {\r\n custom_id: string;\r\n title: string;\r\n components: unknown[];\r\n [key: string]: unknown;\r\n }): Promise<unknown> {\r\n this.assertUnacknowledged();\r\n const result = await this.#client.postInteractionResponse(\r\n this.id,\r\n this.token,\r\n new InteractionResponse(\r\n InteractionResponseType.Modal,\r\n modal as InteractionReplyOptions,\r\n ),\r\n );\r\n this.replied = true;\r\n return result;\r\n }\r\n}\r\n/** Application command interaction. */\r\nexport class CommandInteraction extends Interaction {\r\n /** Invoked command name. @returns Command name or an empty string. */ public get commandName(): string {\r\n return typeof this.data.data?.name === \"string\" ? this.data.data.name : \"\";\r\n }\r\n}\r\n/** Message component interaction. */\r\nexport class ComponentInteraction extends Interaction {\r\n /** Gets component custom ID. */\r\n public get customId(): string {\r\n return (this.data as any)?.data?.custom_id ?? \"\";\r\n }\r\n /** Gets component type. */\r\n public get componentType(): number {\r\n return (this.data as any)?.data?.component_type ?? 0;\r\n }\r\n /** Gets selected values for select menu component interactions. */\r\n public get values(): string[] {\r\n return (this.data as any)?.data?.values ?? [];\r\n }\r\n /** Defers updating the message to which the component was attached. */\r\n public async deferUpdate(): Promise<void> {\r\n this.assertUnacknowledged();\r\n await this.postResponse(\r\n new InteractionResponse(InteractionResponseType.DeferredMessageUpdate),\r\n );\r\n this.deferred = true;\r\n }\r\n /** Updates the message to which the component was attached. */\r\n public async update(\r\n options: InteractionReplyOptions | string,\r\n ): Promise<unknown> {\r\n this.assertUnacknowledged();\r\n const payload =\r\n typeof options === \"string\" ? { content: options } : options;\r\n const result = await this.postResponse(\r\n new InteractionResponse(InteractionResponseType.MessageUpdate, payload),\r\n );\r\n this.replied = true;\r\n return result;\r\n }\r\n}\r\n\r\n/** Creates a specialized interaction structure for a Gateway payload. @param client Interaction transport. @param data Gateway interaction payload. @returns Specialized interaction structure. @throws {TypeError} If required identifiers are missing. */\r\nexport function createInteraction(\r\n client: InteractionClient,\r\n data: InteractionData,\r\n): Interaction {\r\n switch (data.type) {\r\n case InteractionType.ApplicationCommand:\r\n case InteractionType.ApplicationCommandAutocomplete:\r\n return new CommandInteraction(client, data);\r\n case InteractionType.MessageComponent:\r\n case InteractionType.ModalSubmit:\r\n return new ComponentInteraction(client, data);\r\n default:\r\n return new Interaction(client, data);\r\n }\r\n}\r\n\r\n/** Represents a Discord modal submission interaction. */\r\nexport class ModalSubmitInteraction extends Interaction {\r\n /** Gets the submitted modal custom ID. */\r\n public get customId(): string {\r\n return (this.data as any)?.data?.custom_id ?? \"\";\r\n }\r\n\r\n /** Retrieves the text value for a specific text input custom ID. */\r\n public getInputValue(customId: string): string | undefined {\r\n const rows = (this.data as any)?.data?.components ?? [];\r\n for (const row of rows) {\r\n for (const comp of row.components ?? []) {\r\n if (comp.custom_id === customId) return comp.value;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\n/** Represents a Discord slash command autocomplete interaction. */\r\nexport class AutocompleteInteraction extends Interaction {\r\n /** Gets the target command name. */\r\n public get commandName(): string {\r\n return (this.data as any)?.data?.name ?? \"\";\r\n }\r\n\r\n /** Gets the currently focused autocomplete option. */\r\n public get focusedOption(): { name: string; value: unknown } | undefined {\r\n const options = (this.data as any)?.data?.options ?? [];\r\n return options.find((opt: any) => opt.focused);\r\n }\r\n\r\n /** Responds to Discord with autocomplete choices. */\r\n public async respond(\r\n choices: { name: string; value: string | number }[],\r\n ): Promise<void> {\r\n const response = new InteractionResponse(\r\n InteractionResponseType.Autocomplete,\r\n { choices },\r\n );\r\n await this.postResponse(response);\r\n }\r\n}\r\n",
9
+ "import { BaseStructure, Channel, User } from \"./base.js\";\nimport type { ResourceContext } from \"./base.js\";\n\n/** Common Discord structure exports. */\nexport { BaseStructure, Channel, Guild, User } from \"./base.js\";\nexport type { ResourceContext } from \"./base.js\";\n\n/** Represents a Discord message. */\nexport class Message extends BaseStructure {\n /** Message content. */ public content: string;\n /** Message author. */ public author: User;\n /** Channel ID containing the message. */ public channelId: string;\n /** Channel containing the message. */ public readonly channel: Channel;\n /** Guild ID containing the message. */ public guildId?: string;\n /** Message flags. */ public flags: number;\n /** Message creation time. */ public readonly createdAt: Date;\n /** Message attachments. */ public readonly attachments: import(\"@lunibee/types\").APIAttachment[];\n /** Message embeds. */ public readonly embeds: import(\"@lunibee/types\").APIEmbed[];\n /** Mentioned users. */ public readonly mentions: User[];\n /** Mentioned role IDs. */ public readonly mentionRoles: string[];\n /** Whether the message is pinned. */ public pinned: boolean;\n /** Whether the message mentions everyone. */ public mentionEveryone: boolean;\n /** Discord message type. */ public type: number;\n /** Message reference (reply chain data). */ public readonly reference?: import(\"@lunibee/types\").APIMessageReference;\n /** The referenced/replied-to message, if included by Discord. */ public readonly referencedMessage?: Message | null;\n readonly #context?: ResourceContext;\n /** Creates a message from Discord API data. @param data Message payload. @param context Optional owning resource context. @throws {TypeError} If required message identifiers are invalid. */\n public constructor(\n data: import(\"@lunibee/types\").APIMessage,\n context?: ResourceContext,\n ) {\n super(data.id);\n if (!/^\\d{1,20}$/.test(data.channel_id))\n throw new TypeError(\"Message channel_id must be a valid snowflake.\");\n this.content = data.content ?? \"\";\n this.author = new User(data.author);\n this.channelId = data.channel_id;\n this.guildId = data.guild_id;\n this.flags = data.flags ?? 0;\n this.createdAt = new Date(\n data.timestamp ?? Number((BigInt(this.id) >> 22n) + 1420070400000n),\n );\n this.attachments = data.attachments ?? [];\n this.embeds = data.embeds ?? [];\n this.mentions = (data.mentions ?? []).map((user) => new User(user));\n this.mentionRoles = data.mention_roles ?? [];\n this.pinned = data.pinned ?? false;\n this.mentionEveryone = data.mention_everyone ?? false;\n this.type = data.type ?? 0;\n this.reference = data.message_reference;\n this.referencedMessage = data.referenced_message\n ? new Message(data.referenced_message, context)\n : data.referenced_message === null\n ? null\n : undefined;\n this.#context = context;\n this.channel = new Channel(\n { id: data.channel_id, type: 0, guild_id: data.guild_id },\n context,\n );\n }\n /** Whether embeds are suppressed. @returns True when the suppress-embeds flag is set. */ public get embedsSuppressed(): boolean {\n return (this.flags & 4) !== 0;\n }\n /** Edits this message. @param options Edit payload. @returns Updated message. @throws {Error} If detached from a client. */ public edit(options: {\n content?: string;\n }): Promise<Message> {\n if (!this.#context)\n throw new Error(\"This message is not attached to a client.\");\n return this.#context.editMessage(this.channelId, this.id, options);\n }\n /** Deletes this message. @returns Nothing. @throws {Error} If detached from a client. */ public delete(): Promise<void> {\n if (!this.#context)\n throw new Error(\"This message is not attached to a client.\");\n return this.#context.deleteMessage(this.channelId, this.id);\n }\n /** Crossposts this message. @returns Crossposted message. @throws {Error} If detached from a client. */ public crosspost(): Promise<Message> {\n if (!this.#context)\n throw new Error(\"This message is not attached to a client.\");\n return this.#context.crosspostMessage(this.channelId, this.id);\n }\n /** Replies in this message's channel, auto-populating message_reference. @param options Message content or payload. @returns Created reply. @throws {Error} If detached from a client. */ public reply(\n options: string | { content?: string; [key: string]: unknown },\n ): Promise<Message> {\n if (!this.#context)\n throw new Error(\"This message is not attached to a client.\");\n const payload =\n typeof options === \"string\" ? { content: options } : { ...options };\n // Automatically thread the reply via Discord's message_reference\n (payload as Record<string, unknown>).message_reference = {\n message_id: this.id,\n channel_id: this.channelId,\n guild_id: this.guildId,\n };\n return this.#context.sendMessage(this.channelId, payload);\n }\n}\n\nexport { GuildMember, Role, TextChannel } from \"./resources.js\";\nexport * from \"./interactions.js\";\n"
10
+ ],
11
+ "mappings": "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",
12
+ "debugId": "EDF445FCBD7D61B564756E2164756E21",
13
+ "names": []
14
+ }
@@ -0,0 +1,136 @@
1
+ /** Discord interaction type constants. */
2
+ export declare const InteractionType: {
3
+ readonly Ping: 1;
4
+ readonly ApplicationCommand: 2;
5
+ readonly MessageComponent: 3;
6
+ readonly ApplicationCommandAutocomplete: 4;
7
+ readonly ModalSubmit: 5;
8
+ };
9
+ /** Discord interaction response type constants. */
10
+ export declare const InteractionResponseType: {
11
+ readonly Pong: 1;
12
+ readonly ChannelMessage: 4;
13
+ readonly DeferredChannelMessage: 5;
14
+ readonly DeferredMessageUpdate: 6;
15
+ readonly MessageUpdate: 7;
16
+ readonly Autocomplete: 8;
17
+ readonly Modal: 9;
18
+ };
19
+ /** Data shared by Discord interactions. */
20
+ export interface InteractionData {
21
+ /** Interaction identifier. */ id: string;
22
+ /** Application identifier. */ application_id: string;
23
+ /** Interaction type. */ type: number;
24
+ /** Interaction token. */ token: string;
25
+ /** Gateway/API version. */ version?: number;
26
+ /** Guild identifier. */ guild_id?: string;
27
+ /** Channel identifier. */ channel_id?: string;
28
+ /** Interaction-specific data. */ data?: Record<string, unknown>;
29
+ [key: string]: unknown;
30
+ }
31
+ /** Options for an interaction response message. */
32
+ export interface InteractionReplyOptions {
33
+ /** Message content. */ content?: string;
34
+ /** Whether the response is ephemeral. */ ephemeral?: boolean;
35
+ /** Message components. */ components?: unknown[];
36
+ /** Message embeds. */ embeds?: unknown[];
37
+ /** Discord message flags. */ flags?: number;
38
+ [key: string]: unknown;
39
+ }
40
+ /** Transport required by an interaction structure. */
41
+ export interface InteractionClient {
42
+ /** Sends the initial interaction callback. @param id Interaction identifier. @param token Interaction token. @param response Callback payload. @returns Discord response. @throws {Error} When REST fails. */ postInteractionResponse(id: string, token: string, response: InteractionResponse): Promise<unknown>;
43
+ /** Edits the original interaction response. @param token Interaction token. @param data Message payload. @returns Discord response. @throws {Error} When REST fails. */ editInteractionReply(token: string, data: InteractionReplyOptions): Promise<unknown>;
44
+ /** Deletes the original interaction response. @param token Interaction token. @returns Promise fulfilled after deletion. @throws {Error} When REST fails. */ deleteInteractionReply(token: string): Promise<void>;
45
+ /** Sends a follow-up interaction webhook message. @param token Interaction token. @param data Message payload. @returns Discord response. @throws {Error} When REST fails. */ followUpInteraction(token: string, data: InteractionReplyOptions): Promise<unknown>;
46
+ }
47
+ /** A Discord interaction callback payload. */
48
+ export declare class InteractionResponse {
49
+ readonly type: number;
50
+ readonly data?: InteractionReplyOptions;
51
+ /** Creates a response payload. @param type Discord callback type. @param data Optional callback data. @throws {TypeError} If type is not finite. */
52
+ constructor(type: number, data?: InteractionReplyOptions);
53
+ /** Serializes the response for Discord. @returns Discord callback payload. */ toJSON(): {
54
+ type: number;
55
+ data?: InteractionReplyOptions;
56
+ };
57
+ /** Creates an immediate message response. @param options Response message options. @returns Callback payload. */ static message(options: InteractionReplyOptions): InteractionResponse;
58
+ /** Creates a deferred channel response. @param ephemeral Whether the eventual response is ephemeral. @returns Callback payload. */ static defer(ephemeral?: boolean): InteractionResponse;
59
+ /** Creates a Pong response. @returns Callback payload. */ static pong(): InteractionResponse;
60
+ }
61
+ /** Base interaction structure. */
62
+ export declare class Interaction<TData extends InteractionData = InteractionData> {
63
+ #private;
64
+ /** Interaction identifier. */ readonly id: string;
65
+ /** Application identifier. */ readonly applicationId: string;
66
+ /** Interaction token. */ readonly token: string;
67
+ /** Guild identifier. */ readonly guildId?: string;
68
+ /** Channel identifier. */ readonly channelId?: string;
69
+ /** Interaction type. */ readonly type: number;
70
+ /** Raw interaction data. */ readonly data: TData;
71
+ /** Whether the initial response was sent. */ replied: boolean;
72
+ /** Whether the initial response was deferred. */ deferred: boolean;
73
+ /** Creates an interaction from a Gateway payload. @param client Interaction transport. @param data Gateway interaction payload. @throws {TypeError} If required identifiers are missing. */ constructor(client: InteractionClient, data: TData);
74
+ /** Whether this interaction is an application command. @returns True for application command interactions. */ isChatInputCommand(): this is CommandInteraction;
75
+ /** Whether this interaction is a message component. @returns True for component interactions. */ isMessageComponent(): this is ComponentInteraction;
76
+ /** Whether this interaction is a modal submission. @returns True for modal submissions. */ isModalSubmit(): this is ComponentInteraction;
77
+ /** Whether this interaction is autocomplete. @returns True for autocomplete interactions. */ isAutocomplete(): this is CommandInteraction;
78
+ /** Ensures the interaction has not already been acknowledged. @returns Nothing. @throws {Error} When already acknowledged. */ protected assertUnacknowledged(): void;
79
+ /** Ensures the interaction has been acknowledged. @returns Nothing. @throws {Error} When not acknowledged. */ protected assertAcknowledged(): void;
80
+ /** Posts a raw interaction response callback. */
81
+ protected postResponse(response: InteractionResponse): Promise<unknown>;
82
+ /** Sends the initial interaction response. @param options Response message options. @returns Discord response. @throws {Error} When already acknowledged or REST fails. */ reply(options: InteractionReplyOptions | string): Promise<unknown>;
83
+ /** Defers the initial interaction response. @param ephemeral Whether the eventual response is ephemeral. @returns Promise fulfilled after acknowledgement. @throws {Error} When already acknowledged or REST fails. */ deferReply(ephemeral?: boolean): Promise<void>;
84
+ /** Edits the original response. @param options Replacement message options. @returns Discord response. @throws {Error} When not acknowledged or REST fails. */ editReply(options: InteractionReplyOptions): Promise<unknown>;
85
+ /** Deletes the original response. @returns Promise fulfilled after deletion. @throws {Error} When not acknowledged or REST fails. */ deleteReply(): Promise<void>;
86
+ /** Sends a follow-up message using the interaction webhook. @param options Follow-up message options. @returns Discord response. @throws {Error} When REST fails. */ followUp(options: InteractionReplyOptions | string): Promise<unknown>;
87
+ /** Updates the message for a component interaction. */ update(options: InteractionReplyOptions | string): Promise<unknown>;
88
+ /** Opens a modal dialog in the user's client. @param modal Modal builder output or raw modal callback data. @returns Discord response. @throws {Error} When already acknowledged or REST fails. */
89
+ showModal(modal: {
90
+ custom_id: string;
91
+ title: string;
92
+ components: unknown[];
93
+ [key: string]: unknown;
94
+ }): Promise<unknown>;
95
+ }
96
+ /** Application command interaction. */
97
+ export declare class CommandInteraction extends Interaction {
98
+ /** Invoked command name. @returns Command name or an empty string. */ get commandName(): string;
99
+ }
100
+ /** Message component interaction. */
101
+ export declare class ComponentInteraction extends Interaction {
102
+ /** Gets component custom ID. */
103
+ get customId(): string;
104
+ /** Gets component type. */
105
+ get componentType(): number;
106
+ /** Gets selected values for select menu component interactions. */
107
+ get values(): string[];
108
+ /** Defers updating the message to which the component was attached. */
109
+ deferUpdate(): Promise<void>;
110
+ /** Updates the message to which the component was attached. */
111
+ update(options: InteractionReplyOptions | string): Promise<unknown>;
112
+ }
113
+ /** Creates a specialized interaction structure for a Gateway payload. @param client Interaction transport. @param data Gateway interaction payload. @returns Specialized interaction structure. @throws {TypeError} If required identifiers are missing. */
114
+ export declare function createInteraction(client: InteractionClient, data: InteractionData): Interaction;
115
+ /** Represents a Discord modal submission interaction. */
116
+ export declare class ModalSubmitInteraction extends Interaction {
117
+ /** Gets the submitted modal custom ID. */
118
+ get customId(): string;
119
+ /** Retrieves the text value for a specific text input custom ID. */
120
+ getInputValue(customId: string): string | undefined;
121
+ }
122
+ /** Represents a Discord slash command autocomplete interaction. */
123
+ export declare class AutocompleteInteraction extends Interaction {
124
+ /** Gets the target command name. */
125
+ get commandName(): string;
126
+ /** Gets the currently focused autocomplete option. */
127
+ get focusedOption(): {
128
+ name: string;
129
+ value: unknown;
130
+ } | undefined;
131
+ /** Responds to Discord with autocomplete choices. */
132
+ respond(choices: {
133
+ name: string;
134
+ value: string | number;
135
+ }[]): Promise<void>;
136
+ }
@@ -0,0 +1,73 @@
1
+ /** Permission bit values exposed by Discord. */
2
+ export declare const Permissions: {
3
+ /** Create instant invite permission. */ readonly CreateInstantInvite: bigint;
4
+ /** Kick members permission. */ readonly KickMembers: bigint;
5
+ /** Ban members permission. */ readonly BanMembers: bigint;
6
+ /** Administrator permission. */ readonly Administrator: bigint;
7
+ /** Manage channels permission. */ readonly ManageChannels: bigint;
8
+ /** Manage guild permission. */ readonly ManageGuild: bigint;
9
+ /** Add reactions permission. */ readonly AddReactions: bigint;
10
+ /** View audit log permission. */ readonly ViewAuditLog: bigint;
11
+ /** Priority speaker permission. */ readonly PrioritySpeaker: bigint;
12
+ /** Stream permission. */ readonly Stream: bigint;
13
+ /** View channel permission. */ readonly ViewChannel: bigint;
14
+ /** Send messages permission. */ readonly SendMessages: bigint;
15
+ /** Send TTS messages permission. */ readonly SendTTSMessages: bigint;
16
+ /** Manage messages permission. */ readonly ManageMessages: bigint;
17
+ /** Embed links permission. */ readonly EmbedLinks: bigint;
18
+ /** Attach files permission. */ readonly AttachFiles: bigint;
19
+ /** Read message history permission. */ readonly ReadMessageHistory: bigint;
20
+ /** Mention everyone permission. */ readonly MentionEveryone: bigint;
21
+ /** Use external emojis permission. */ readonly UseExternalEmojis: bigint;
22
+ /** View guild insights permission. */ readonly ViewGuildInsights: bigint;
23
+ /** Connect permission. */ readonly Connect: bigint;
24
+ /** Speak permission. */ readonly Speak: bigint;
25
+ /** Mute members permission. */ readonly MuteMembers: bigint;
26
+ /** Deafen members permission. */ readonly DeafenMembers: bigint;
27
+ /** Move members permission. */ readonly MoveMembers: bigint;
28
+ /** Use voice activity detection permission. */ readonly UseVAD: bigint;
29
+ /** Change nickname permission. */ readonly ChangeNickname: bigint;
30
+ /** Manage nicknames permission. */ readonly ManageNicknames: bigint;
31
+ /** Manage roles permission. */ readonly ManageRoles: bigint;
32
+ /** Manage webhooks permission. */ readonly ManageWebhooks: bigint;
33
+ /** Manage guild expressions permission. */ readonly ManageGuildExpressions: bigint;
34
+ /** Use application commands permission. */ readonly UseApplicationCommands: bigint;
35
+ /** Request to speak permission. */ readonly RequestToSpeak: bigint;
36
+ /** Manage events permission. */ readonly ManageEvents: bigint;
37
+ /** Manage threads permission. */ readonly ManageThreads: bigint;
38
+ /** Create public threads permission. */ readonly CreatePublicThreads: bigint;
39
+ /** Create private threads permission. */ readonly CreatePrivateThreads: bigint;
40
+ /** Use external stickers permission. */ readonly UseExternalStickers: bigint;
41
+ /** Send messages in threads permission. */ readonly SendMessagesInThreads: bigint;
42
+ /** Use embedded activities permission. */ readonly UseEmbeddedActivities: bigint;
43
+ /** Moderate members permission. */ readonly ModerateMembers: bigint;
44
+ /** View creator monetization analytics permission. */ readonly ViewCreatorMonetizationAnalytics: bigint;
45
+ /** Use soundboard permission. */ readonly UseSoundboard: bigint;
46
+ /** Create guild expressions permission. */ readonly CreateGuildExpressions: bigint;
47
+ /** Create events permission. */ readonly CreateEvents: bigint;
48
+ /** Use external sounds permission. */ readonly UseExternalSounds: bigint;
49
+ /** Send voice messages permission. */ readonly SendVoiceMessages: bigint;
50
+ /** Send polls permission. */ readonly SendPolls: bigint;
51
+ /** Use external apps permission. */ readonly UseExternalApps: bigint;
52
+ };
53
+ /** Public permission resolvable. */
54
+ export type PermissionResolvable = bigint | number | string | PermissionName | PermissionSet | PermissionResolvable[];
55
+ /** Immutable Discord permission bitfield. */
56
+ export declare class PermissionSet {
57
+ #private;
58
+ /** Permission bitfield. */ readonly bitfield: bigint;
59
+ /** Creates a permission set. @param value Initial permission bitfield. @throws {RangeError} If the value is negative. @throws {TypeError} If the value is not a valid integer. */
60
+ constructor(value?: PermissionResolvable);
61
+ /** Checks whether all supplied permissions are present. @param permissions Permission names or raw bits. @returns True when every requested permission is present. */ has(...permissions: PermissionResolvable[]): boolean;
62
+ /** Checks whether any supplied permission is present. @param permissions Permission names or raw bits. @returns True when at least one requested permission is present. */ any(...permissions: PermissionResolvable[]): boolean;
63
+ /** Returns a new set with permissions added. @param permissions Permission names or raw bits. @returns A new permission set. */ add(...permissions: PermissionResolvable[]): PermissionSet;
64
+ /** Returns a new set with permissions removed. @param permissions Permission names or raw bits. @returns A new permission set. */ remove(...permissions: PermissionResolvable[]): PermissionSet;
65
+ /** Checks equality with another permission set or raw bitfield. @param other Permission set or raw bitfield. @returns True when both values are equal. */ equals(other: PermissionSet | bigint | number | string): boolean;
66
+ /** Returns the decimal permission representation. @returns Decimal permission bitfield. */ toString(): string;
67
+ /** Returns known permission names contained in this set. @returns Names of all enabled known permissions. */ toArray(): PermissionName[];
68
+ }
69
+ /** Discord.js-compatible permission bitfield. */
70
+ export declare class PermissionsBitField extends PermissionSet {
71
+ /** Creates a permissions bitfield. @param value Initial permission bitfield. */
72
+ constructor(value?: PermissionResolvable);
73
+ }
@@ -0,0 +1,64 @@
1
+ import { BaseStructure, Channel, User } from "./base.js";
2
+ import { PermissionsBitField } from "./permissions.js";
3
+ /** A Discord guild member. */
4
+ export declare class GuildMember {
5
+ /** User represented by the member. */ readonly user: User;
6
+ /** Guild containing the member. */ readonly guildId: string;
7
+ /** Nickname, if configured. */ nickname: string | null;
8
+ /** Role IDs assigned to the member. */ readonly roleIds: string[];
9
+ /** Whether the member is pending membership screening. */ pending: boolean;
10
+ /** Member join timestamp. */ joinedAt?: Date;
11
+ /** Raw effective permission bitfield supplied by Discord. */ readonly permissions: PermissionsBitField;
12
+ /** Creates a guild member from Discord data. @param data Discord guild-member payload. @throws {TypeError} If the guild ID is invalid. @throws {RangeError} If joined_at is invalid. */
13
+ constructor(data: {
14
+ user: {
15
+ id: string;
16
+ username: string;
17
+ global_name?: string | null;
18
+ avatar?: string | null;
19
+ bot?: boolean;
20
+ system?: boolean;
21
+ public_flags?: number;
22
+ };
23
+ guild_id: string;
24
+ nick?: string | null;
25
+ roles?: string[];
26
+ pending?: boolean;
27
+ joined_at?: string;
28
+ permissions?: string;
29
+ });
30
+ /** Effective member display name. @returns Nickname or user display name. */ get displayName(): string;
31
+ }
32
+ /** A Discord guild role. */
33
+ export declare class Role extends BaseStructure {
34
+ /** Role name. */ name: string;
35
+ /** Role color. */ color: number;
36
+ /** Whether the role is hoisted. */ hoist: boolean;
37
+ /** Permission bitfield. */ permissions: PermissionsBitField;
38
+ /** Whether the role is managed. */ managed: boolean;
39
+ /** Whether the role is mentionable. */ mentionable: boolean;
40
+ /** Creates a role from Discord data. @param data Discord role payload. */
41
+ constructor(data: {
42
+ id: string;
43
+ name: string;
44
+ color?: number;
45
+ hoist?: boolean;
46
+ permissions?: string;
47
+ managed?: boolean;
48
+ mentionable?: boolean;
49
+ });
50
+ /** Discord role mention string. @returns Role mention. */ toString(): string;
51
+ }
52
+ /** A Discord text-capable channel. */
53
+ export declare class TextChannel extends Channel {
54
+ /** Parent category ID. */ parentId?: string | null;
55
+ /** Creates a text channel from Discord data. @param data Discord channel payload. */
56
+ constructor(data: {
57
+ id: string;
58
+ type: number;
59
+ name?: string;
60
+ parent_id?: string | null;
61
+ guild_id?: string;
62
+ });
63
+ /** Discord channel mention string. @returns Channel mention. */ toString(): string;
64
+ }