lunibee 0.1.7 → 0.2.0

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 (78) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +225 -223
  3. package/dist/builders/commands.d.ts +6 -4
  4. package/dist/builders/components.d.ts +23 -0
  5. package/dist/builders/index.d.ts +2 -2
  6. package/dist/builders/index.js +120 -24
  7. package/dist/builders/index.js.map +9 -8
  8. package/dist/collection/index.d.ts +68 -1
  9. package/dist/collection/index.js +335 -1
  10. package/dist/collection/index.js.map +4 -4
  11. package/dist/core/collector.d.ts +13 -0
  12. package/dist/core/events.d.ts +112 -2
  13. package/dist/core/index.d.ts +30 -93
  14. package/dist/core/index.js +3386 -957
  15. package/dist/core/index.js.map +48 -24
  16. package/dist/core/permissions.d.ts +48 -0
  17. package/dist/formatters/index.js.map +1 -1
  18. package/dist/handlers/index.js.map +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +3806 -1193
  21. package/dist/index.js.map +64 -43
  22. package/dist/managers/advanced.d.ts +116 -0
  23. package/dist/managers/base.d.ts +13 -2
  24. package/dist/managers/emoji.d.ts +1 -1
  25. package/dist/managers/guild-resources.d.ts +109 -0
  26. package/dist/managers/guild.d.ts +33 -2
  27. package/dist/managers/index.d.ts +44 -6
  28. package/dist/managers/index.js +1186 -150
  29. package/dist/managers/index.js.map +27 -21
  30. package/dist/managers/message.d.ts +10 -1
  31. package/dist/rest/decoder.d.ts +23 -0
  32. package/dist/rest/errors.d.ts +53 -0
  33. package/dist/rest/index.d.ts +21 -17
  34. package/dist/rest/index.js +526 -264
  35. package/dist/rest/index.js.map +14 -8
  36. package/dist/rest/limiter.d.ts +42 -0
  37. package/dist/rest/redis.d.ts +18 -1
  38. package/dist/rest/route.d.ts +31 -0
  39. package/dist/rest/routes.d.ts +22 -0
  40. package/dist/rest/scheduler.d.ts +42 -0
  41. package/dist/rest/store.d.ts +29 -0
  42. package/dist/rest/transport.d.ts +40 -0
  43. package/dist/sharding/bus.d.ts +31 -0
  44. package/dist/sharding/cluster.d.ts +10 -0
  45. package/dist/sharding/index.d.ts +39 -2
  46. package/dist/sharding/index.js +1105 -404
  47. package/dist/sharding/index.js.map +18 -8
  48. package/dist/structures/base.d.ts +10 -0
  49. package/dist/structures/channels.d.ts +56 -0
  50. package/dist/structures/index.d.ts +1 -0
  51. package/dist/structures/index.js +305 -311
  52. package/dist/structures/index.js.map +18 -14
  53. package/dist/structures/interactions.d.ts +38 -52
  54. package/dist/structures/options.d.ts +55 -0
  55. package/dist/structures/resources.d.ts +3 -3
  56. package/dist/types/gateway-events.d.ts +132 -0
  57. package/dist/types/gateway.d.ts +197 -0
  58. package/dist/types/index.d.ts +53 -260
  59. package/dist/types/index.js +44 -2
  60. package/dist/types/index.js.map +5 -4
  61. package/dist/utils/index.js.map +1 -1
  62. package/dist/voice/index.d.ts +32 -1
  63. package/dist/voice/index.js +73 -7
  64. package/dist/voice/index.js.map +3 -3
  65. package/dist/ws/close-codes.d.ts +23 -0
  66. package/dist/ws/decoder.d.ts +58 -0
  67. package/dist/ws/heartbeat.d.ts +87 -0
  68. package/dist/ws/index.d.ts +18 -65
  69. package/dist/ws/index.js +911 -385
  70. package/dist/ws/index.js.map +15 -5
  71. package/dist/ws/opcodes.d.ts +14 -0
  72. package/dist/ws/protocol.d.ts +110 -0
  73. package/dist/ws/reconnect.d.ts +108 -0
  74. package/dist/ws/send-budget.d.ts +17 -0
  75. package/dist/ws/session.d.ts +100 -0
  76. package/dist/ws/state.d.ts +27 -0
  77. package/dist/ws/transport.d.ts +80 -0
  78. package/package.json +21 -20
@@ -1,3 +1,5 @@
1
+ import { User } from "./base.js";
2
+ import { GuildMember } from "./resources.js";
1
3
  /** Discord interaction type constants. */
2
4
  export declare const InteractionType: {
3
5
  readonly Ping: 1;
@@ -34,59 +36,11 @@ export interface InteractionClient {
34
36
  /** 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>;
35
37
  /** Deletes the original interaction response. @param token Interaction token. @returns Promise fulfilled after deletion. @throws {Error} When REST fails. */ deleteInteractionReply(token: string): Promise<void>;
36
38
  /** 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>;
39
+ /** Reads, edits or deletes an interaction webhook message (`@original` or a follow-up ID). Optional; required for {@link Interaction.fetchReply}, {@link Interaction.editFollowUp} and {@link Interaction.deleteFollowUp}. */
40
+ interactionWebhookMessage?(method: "GET" | "PATCH" | "DELETE", applicationId: string, token: string, messageId: string, data?: InteractionReplyOptions): Promise<unknown>;
37
41
  }
38
- /** Raw Discord application command interaction data option. */
39
- export interface APIInteractionDataOption {
40
- name: string;
41
- type: number;
42
- value?: string | number | boolean;
43
- options?: APIInteractionDataOption[];
44
- focused?: boolean;
45
- }
46
- /**
47
- * Typed resolver for application command options.
48
- * Attached as `CommandInteraction.options`.
49
- */
50
- export declare class CommandOptions {
51
- #private;
52
- /** @internal */
53
- constructor(options: APIInteractionDataOption[], resolved?: Record<string, unknown>);
54
- /** Returns the invoked subcommand name, or null if none. */
55
- getSubcommand(required?: false): string | null;
56
- getSubcommand(required: true): string;
57
- /** Returns the invoked subcommand group name, or null if none. */
58
- getSubcommandGroup(required?: false): string | null;
59
- getSubcommandGroup(required: true): string;
60
- /** Gets a string option. @param name Option name. @param required If true, throws when missing. */
61
- getString(name: string, required?: false): string | null;
62
- getString(name: string, required: true): string;
63
- /** Gets an integer option. @param name Option name. @param required If true, throws when missing. */
64
- getInteger(name: string, required?: false): number | null;
65
- getInteger(name: string, required: true): number;
66
- /** Gets a number (float) option. @param name Option name. @param required If true, throws when missing. */
67
- getNumber(name: string, required?: false): number | null;
68
- getNumber(name: string, required: true): number;
69
- /** Gets a boolean option. @param name Option name. @param required If true, throws when missing. */
70
- getBoolean(name: string, required?: false): boolean | null;
71
- getBoolean(name: string, required: true): boolean;
72
- /** Gets the raw resolved user data for a user option. @param name Option name. @param required If true, throws when missing. */
73
- getUser(name: string, required?: false): Record<string, unknown> | null;
74
- getUser(name: string, required: true): Record<string, unknown>;
75
- /** Gets the raw resolved channel data for a channel option. @param name Option name. @param required If true, throws when missing. */
76
- getChannel(name: string, required?: false): Record<string, unknown> | null;
77
- getChannel(name: string, required: true): Record<string, unknown>;
78
- /** Gets the raw resolved role data for a role option. @param name Option name. @param required If true, throws when missing. */
79
- getRole(name: string, required?: false): Record<string, unknown> | null;
80
- getRole(name: string, required: true): Record<string, unknown>;
81
- /** Gets the raw resolved user or role data for a mentionable option. @param name Option name. @param required If true, throws when missing. */
82
- getMentionable(name: string, required?: false): Record<string, unknown> | null;
83
- getMentionable(name: string, required: true): Record<string, unknown>;
84
- /** Gets the raw resolved attachment data for an attachment option. @param name Option name. @param required If true, throws when missing. */
85
- getAttachment(name: string, required?: false): Record<string, unknown> | null;
86
- getAttachment(name: string, required: true): Record<string, unknown>;
87
- /** Returns the raw option list for advanced use cases. */
88
- get raw(): readonly APIInteractionDataOption[];
89
- }
42
+ export { CommandOptions, type APIInteractionDataOption } from "./options.js";
43
+ import { CommandOptions } from "./options.js";
90
44
  /** A Discord interaction callback payload. */
91
45
  export declare class InteractionResponse {
92
46
  readonly type: number;
@@ -118,7 +72,36 @@ export declare class Interaction<TData extends InteractionData = InteractionData
118
72
  /** Whether this interaction is a message component. @returns True for component interactions. */ isMessageComponent(): this is ComponentInteraction;
119
73
  /** Whether this interaction is a modal submission. @returns True for modal submissions. */ isModalSubmit(): this is ModalSubmitInteraction;
120
74
  /** Whether this interaction is autocomplete. @returns True for autocomplete interactions. */ isAutocomplete(): this is AutocompleteInteraction;
75
+ /** Whether this is a button interaction. */ isButton(): this is ComponentInteraction;
76
+ /** Whether this is a string select menu interaction. */ isStringSelectMenu(): this is ComponentInteraction;
77
+ /** Whether this is a user select menu interaction. */ isUserSelectMenu(): this is ComponentInteraction;
78
+ /** Whether this is a role select menu interaction. */ isRoleSelectMenu(): this is ComponentInteraction;
79
+ /** Whether this is a mentionable select menu interaction. */ isMentionableSelectMenu(): this is ComponentInteraction;
80
+ /** Whether this is a channel select menu interaction. */ isChannelSelectMenu(): this is ComponentInteraction;
81
+ /** Whether this is any select menu interaction. */ isAnySelectMenu(): this is ComponentInteraction;
121
82
  /** Ensures the interaction has not already been acknowledged. @returns Nothing. @throws {Error} When already acknowledged. */ protected assertUnacknowledged(): void;
83
+ /**
84
+ * Sends the initial response exactly once. The in-flight flag is set
85
+ * before the request, so two concurrent calls cannot both send; it is
86
+ * cleared if the request fails so the caller may try again.
87
+ */
88
+ protected acknowledge(response: InteractionResponse, state: "replied" | "deferred"): Promise<unknown>;
89
+ /** The invoking user (from `member.user` in guilds, `user` in DMs). */
90
+ get user(): User | null;
91
+ /** The invoking guild member, or null outside a guild. */
92
+ get member(): GuildMember | null;
93
+ /** Unix timestamp (ms) at which the interaction was created, from its snowflake. */
94
+ get createdTimestamp(): number;
95
+ /** When the interaction token stops working (15 minutes after creation). */
96
+ get expiresAt(): Date;
97
+ /** Whether the token has expired; no response, edit or follow-up can succeed after that. */
98
+ get isExpired(): boolean;
99
+ /** Fetches the original response message. */
100
+ fetchReply(): Promise<unknown>;
101
+ /** Edits a follow-up message. @param messageId Follow-up message ID. */
102
+ editFollowUp(messageId: string, options: InteractionReplyOptions | string): Promise<unknown>;
103
+ /** Deletes a follow-up message. @param messageId Follow-up message ID. */
104
+ deleteFollowUp(messageId: string): Promise<void>;
122
105
  /** Ensures the interaction has been acknowledged. @returns Nothing. @throws {Error} When not acknowledged. */ protected assertAcknowledged(): void;
123
106
  /** Posts a raw interaction response callback. */
124
107
  protected postResponse(response: InteractionResponse): Promise<unknown>;
@@ -167,6 +150,9 @@ export declare class ModalSubmitInteraction extends Interaction {
167
150
  }
168
151
  /** Represents a Discord slash command autocomplete interaction. */
169
152
  export declare class AutocompleteInteraction extends Interaction {
153
+ /** Option resolver; use `options.getFocused()` for the focused value. */
154
+ readonly options: CommandOptions;
155
+ constructor(client: InteractionClient, data: InteractionData);
170
156
  /** Gets the target command name. */
171
157
  get commandName(): string;
172
158
  /** Gets the currently focused autocomplete option. */
@@ -0,0 +1,55 @@
1
+ /** Raw Discord application command interaction data option. */
2
+ export interface APIInteractionDataOption {
3
+ name: string;
4
+ type: number;
5
+ value?: string | number | boolean;
6
+ options?: APIInteractionDataOption[];
7
+ focused?: boolean;
8
+ }
9
+ /**
10
+ * Typed resolver for application command options.
11
+ * Attached as `CommandInteraction.options`.
12
+ */
13
+ export declare class CommandOptions {
14
+ #private;
15
+ /** @internal */
16
+ constructor(options: APIInteractionDataOption[], resolved?: Record<string, unknown>);
17
+ /** Returns the invoked subcommand name, or null if none. */
18
+ getSubcommand(required?: false): string | null;
19
+ getSubcommand(required: true): string;
20
+ /** Returns the invoked subcommand group name, or null if none. */
21
+ getSubcommandGroup(required?: false): string | null;
22
+ getSubcommandGroup(required: true): string;
23
+ /** Returns the focused option's value (autocomplete), or the full option when `full` is true. @throws {TypeError} If no option is focused. */
24
+ getFocused(full: true): APIInteractionDataOption;
25
+ getFocused(full?: false): string | number | boolean;
26
+ /** Gets a string option. @param name Option name. @param required If true, throws when missing. */
27
+ getString(name: string, required?: false): string | null;
28
+ getString(name: string, required: true): string;
29
+ /** Gets an integer option. @param name Option name. @param required If true, throws when missing. */
30
+ getInteger(name: string, required?: false): number | null;
31
+ getInteger(name: string, required: true): number;
32
+ /** Gets a number (float) option. @param name Option name. @param required If true, throws when missing. */
33
+ getNumber(name: string, required?: false): number | null;
34
+ getNumber(name: string, required: true): number;
35
+ /** Gets a boolean option. @param name Option name. @param required If true, throws when missing. */
36
+ getBoolean(name: string, required?: false): boolean | null;
37
+ getBoolean(name: string, required: true): boolean;
38
+ /** Gets the raw resolved user data for a user option. @param name Option name. @param required If true, throws when missing. */
39
+ getUser(name: string, required?: false): Record<string, unknown> | null;
40
+ getUser(name: string, required: true): Record<string, unknown>;
41
+ /** Gets the raw resolved channel data for a channel option. @param name Option name. @param required If true, throws when missing. */
42
+ getChannel(name: string, required?: false): Record<string, unknown> | null;
43
+ getChannel(name: string, required: true): Record<string, unknown>;
44
+ /** Gets the raw resolved role data for a role option. @param name Option name. @param required If true, throws when missing. */
45
+ getRole(name: string, required?: false): Record<string, unknown> | null;
46
+ getRole(name: string, required: true): Record<string, unknown>;
47
+ /** Gets the raw resolved user or role data for a mentionable option. @param name Option name. @param required If true, throws when missing. */
48
+ getMentionable(name: string, required?: false): Record<string, unknown> | null;
49
+ getMentionable(name: string, required: true): Record<string, unknown>;
50
+ /** Gets the raw resolved attachment data for an attachment option. @param name Option name. @param required If true, throws when missing. */
51
+ getAttachment(name: string, required?: false): Record<string, unknown> | null;
52
+ getAttachment(name: string, required: true): Record<string, unknown>;
53
+ /** Returns the raw option list for advanced use cases. */
54
+ get raw(): readonly APIInteractionDataOption[];
55
+ }
@@ -78,7 +78,7 @@ export declare class Role extends BaseStructure {
78
78
  get colorHex(): string;
79
79
  /** Returns the role's custom icon URL, or null if the role has no icon. */
80
80
  iconURL(options?: ImageURLOptions): string | null;
81
- /** Whether this is the @everyone base role (its ID equals the guild ID). */
81
+ /** Whether this is the `@everyone` base role (its ID equals the guild ID). */
82
82
  isEveryone(guildId: string): boolean;
83
83
  /** Discord role mention string. Used automatically in template literals. */
84
84
  toString(): string;
@@ -89,10 +89,10 @@ export declare class TextChannel extends Channel {
89
89
  constructor(data: {
90
90
  id: string;
91
91
  type: number;
92
- name?: string;
92
+ name?: string | null;
93
93
  parent_id?: string | null;
94
94
  guild_id?: string;
95
- }, context?: import("./base.js").ResourceContext);
95
+ } & Partial<import("@lunibee/types").APIChannel>, context?: import("./base.js").ResourceContext);
96
96
  /** Discord channel mention string. Used automatically in template literals. */
97
97
  toString(): string;
98
98
  }
@@ -0,0 +1,132 @@
1
+ import type { APIChannel, APIEmoji, APIGuildMember, APIPartialEmoji, APIPresenceUpdate, APIRole, APISticker, APIThreadMember, Snowflake, UserData } from "./index.js";
2
+ /** Raw Discord READY event payload. */
3
+ export interface APIReadyEvent {
4
+ v: number;
5
+ user: UserData;
6
+ guilds: Array<{
7
+ id: Snowflake;
8
+ unavailable?: boolean;
9
+ }>;
10
+ session_id: string;
11
+ resume_gateway_url: string;
12
+ shard?: [number, number];
13
+ application?: {
14
+ id: Snowflake;
15
+ flags: number;
16
+ [key: string]: unknown;
17
+ };
18
+ }
19
+ /** Raw Discord reaction event payload. */
20
+ export interface APIMessageReactionEvent {
21
+ user_id: Snowflake;
22
+ channel_id: Snowflake;
23
+ message_id: Snowflake;
24
+ guild_id?: Snowflake;
25
+ member?: APIGuildMember;
26
+ emoji: APIPartialEmoji;
27
+ message_author_id?: Snowflake;
28
+ burst?: boolean;
29
+ type?: number;
30
+ }
31
+ /** Raw Discord reaction remove emoji event payload. */
32
+ export interface APIMessageReactionRemoveEmojiEvent {
33
+ channel_id: Snowflake;
34
+ guild_id?: Snowflake;
35
+ message_id: Snowflake;
36
+ emoji: APIPartialEmoji;
37
+ }
38
+ /** Raw Discord message deletion event payload. */
39
+ export interface APIMessageDeleteEvent {
40
+ id: Snowflake;
41
+ channel_id: Snowflake;
42
+ guild_id?: Snowflake;
43
+ }
44
+ /** Raw Discord bulk message deletion event payload. */
45
+ export interface APIMessageDeleteBulkEvent {
46
+ ids: Snowflake[];
47
+ channel_id: Snowflake;
48
+ guild_id?: Snowflake;
49
+ }
50
+ /** Raw Discord channel deletion event payload. */
51
+ export interface APIChannelDeleteEvent extends APIChannel {
52
+ }
53
+ /** Raw Discord guild deletion event payload. */
54
+ export interface APIGuildDeleteEvent {
55
+ id: Snowflake;
56
+ unavailable?: boolean;
57
+ }
58
+ /** Raw Discord thread lifecycle payload. */
59
+ export interface APIThreadEvent extends APIChannel {
60
+ guild_id: Snowflake;
61
+ member?: APIThreadMember;
62
+ }
63
+ /** Raw Discord thread list sync event. */
64
+ export interface APIThreadListSync {
65
+ guild_id: Snowflake;
66
+ channel_ids?: Snowflake[];
67
+ threads: APIChannel[];
68
+ members: APIThreadMember[];
69
+ }
70
+ /** Raw Discord thread members update event. */
71
+ export interface APIThreadMembersUpdate {
72
+ id: Snowflake;
73
+ guild_id: Snowflake;
74
+ member_count: number;
75
+ added_members?: APIThreadMember[];
76
+ removed_member_ids?: Snowflake[];
77
+ }
78
+ /** Raw Discord guild role event payload. */
79
+ export interface APIGuildRoleEvent {
80
+ guild_id: Snowflake;
81
+ role: APIRole;
82
+ }
83
+ /** Raw Discord guild role delete event payload. */
84
+ export interface APIGuildRoleDeleteEvent {
85
+ guild_id: Snowflake;
86
+ role_id: Snowflake;
87
+ }
88
+ /** Raw Discord guild ban event payload. */
89
+ export interface APIGuildBanEvent {
90
+ guild_id: Snowflake;
91
+ user: UserData;
92
+ }
93
+ /** Raw Discord guild emojis update event payload. */
94
+ export interface APIGuildEmojisUpdateEvent {
95
+ guild_id: Snowflake;
96
+ emojis: APIEmoji[];
97
+ }
98
+ /** Raw Discord guild stickers update event payload. */
99
+ export interface APIGuildStickersUpdateEvent {
100
+ guild_id: Snowflake;
101
+ stickers: APISticker[];
102
+ }
103
+ /** Raw Discord channel pins update event. */
104
+ export interface APIChannelPinsUpdate {
105
+ guild_id?: Snowflake;
106
+ channel_id: Snowflake;
107
+ last_pin_timestamp?: string | null;
108
+ }
109
+ /** Raw Discord guild members chunk event. */
110
+ export interface APIGuildMembersChunk {
111
+ guild_id: Snowflake;
112
+ members: APIGuildMember[];
113
+ chunk_index: number;
114
+ chunk_count: number;
115
+ not_found?: Snowflake[];
116
+ presences?: APIPresenceUpdate[];
117
+ nonce?: string;
118
+ }
119
+ /** Raw Discord guild scheduled event user add/remove event. */
120
+ export interface APIGuildScheduledEventUserEvent {
121
+ guild_scheduled_event_id: Snowflake;
122
+ user_id: Snowflake;
123
+ guild_id: Snowflake;
124
+ }
125
+ /** Raw Discord message poll vote add/remove event. */
126
+ export interface APIMessagePollVoteEvent {
127
+ user_id: Snowflake;
128
+ channel_id: Snowflake;
129
+ message_id: Snowflake;
130
+ guild_id?: Snowflake;
131
+ answer_id: number;
132
+ }
@@ -0,0 +1,197 @@
1
+ /** Gateway intent bit flags supported by Discord (PascalCase). */
2
+ export declare const GatewayIntentBits: {
3
+ readonly Guilds: number;
4
+ readonly GuildMembers: number;
5
+ readonly GuildModeration: number;
6
+ readonly GuildExpressions: number;
7
+ readonly GuildIntegrations: number;
8
+ readonly GuildWebhooks: number;
9
+ readonly GuildInvites: number;
10
+ readonly GuildVoiceStates: number;
11
+ readonly GuildPresences: number;
12
+ readonly GuildMessages: number;
13
+ readonly GuildMessageReactions: number;
14
+ readonly GuildMessageTyping: number;
15
+ readonly DirectMessages: number;
16
+ readonly DirectMessageReactions: number;
17
+ readonly DirectMessageTyping: number;
18
+ readonly MessageContent: number;
19
+ readonly GuildScheduledEvents: number;
20
+ readonly AutoModerationConfiguration: number;
21
+ readonly AutoModerationExecution: number;
22
+ readonly GuildMessagePolls: number;
23
+ readonly DirectMessagePolls: number;
24
+ };
25
+ /** Idiomatic camelCase Gateway intent bit flags supported by Discord. */
26
+ export declare const IntentBits: {
27
+ readonly guild: number;
28
+ readonly guilds: number;
29
+ readonly guildMembers: number;
30
+ readonly guildModeration: number;
31
+ readonly guildBans: number;
32
+ readonly guildExpressions: number;
33
+ readonly guildEmojis: number;
34
+ readonly guildEmojisAndStickers: number;
35
+ readonly guildIntegrations: number;
36
+ readonly guildWebhooks: number;
37
+ readonly guildInvites: number;
38
+ readonly guildVoiceStates: number;
39
+ readonly guildPresences: number;
40
+ readonly guildMessages: number;
41
+ readonly guildMessage: number;
42
+ readonly guildMessageReactions: number;
43
+ readonly guildMessageTyping: number;
44
+ readonly directMessages: number;
45
+ readonly directMessageReactions: number;
46
+ readonly directMessageTyping: number;
47
+ readonly messageContent: number;
48
+ readonly guildScheduledEvents: number;
49
+ readonly autoModerationConfiguration: number;
50
+ readonly autoModerationExecution: number;
51
+ readonly guildMessagePolls: number;
52
+ readonly directMessagePolls: number;
53
+ };
54
+ /** Alias for IntentBits. */
55
+ export declare const Intents: {
56
+ readonly guild: number;
57
+ readonly guilds: number;
58
+ readonly guildMembers: number;
59
+ readonly guildModeration: number;
60
+ readonly guildBans: number;
61
+ readonly guildExpressions: number;
62
+ readonly guildEmojis: number;
63
+ readonly guildEmojisAndStickers: number;
64
+ readonly guildIntegrations: number;
65
+ readonly guildWebhooks: number;
66
+ readonly guildInvites: number;
67
+ readonly guildVoiceStates: number;
68
+ readonly guildPresences: number;
69
+ readonly guildMessages: number;
70
+ readonly guildMessage: number;
71
+ readonly guildMessageReactions: number;
72
+ readonly guildMessageTyping: number;
73
+ readonly directMessages: number;
74
+ readonly directMessageReactions: number;
75
+ readonly directMessageTyping: number;
76
+ readonly messageContent: number;
77
+ readonly guildScheduledEvents: number;
78
+ readonly autoModerationConfiguration: number;
79
+ readonly autoModerationExecution: number;
80
+ readonly guildMessagePolls: number;
81
+ readonly directMessagePolls: number;
82
+ };
83
+ /** Gateway intent resolvable value (single bitfield, enum key, or array of bitfields/strings). */
84
+ export type GatewayIntentResolvable = number | keyof typeof GatewayIntentBits | keyof typeof IntentBits | (number | keyof typeof GatewayIntentBits | keyof typeof IntentBits | string)[] | {
85
+ readonly bitfield: number;
86
+ };
87
+ /** Resolves any GatewayIntentResolvable into a raw bitfield integer. */
88
+ export declare function resolveGatewayIntents(intents: GatewayIntentResolvable): number;
89
+ /**
90
+ * Discord.js-familiar intent bitfield.
91
+ * @example new IntentsBitField([IntentsBitField.Flags.Guilds, "GuildMessages"])
92
+ */
93
+ export declare class IntentsBitField {
94
+ /** Intent flag values by name. */
95
+ static readonly Flags: {
96
+ readonly Guilds: number;
97
+ readonly GuildMembers: number;
98
+ readonly GuildModeration: number;
99
+ readonly GuildExpressions: number;
100
+ readonly GuildIntegrations: number;
101
+ readonly GuildWebhooks: number;
102
+ readonly GuildInvites: number;
103
+ readonly GuildVoiceStates: number;
104
+ readonly GuildPresences: number;
105
+ readonly GuildMessages: number;
106
+ readonly GuildMessageReactions: number;
107
+ readonly GuildMessageTyping: number;
108
+ readonly DirectMessages: number;
109
+ readonly DirectMessageReactions: number;
110
+ readonly DirectMessageTyping: number;
111
+ readonly MessageContent: number;
112
+ readonly GuildScheduledEvents: number;
113
+ readonly AutoModerationConfiguration: number;
114
+ readonly AutoModerationExecution: number;
115
+ readonly GuildMessagePolls: number;
116
+ readonly DirectMessagePolls: number;
117
+ };
118
+ /** Raw intent bitfield. */
119
+ bitfield: number;
120
+ constructor(bits?: GatewayIntentResolvable);
121
+ /** Whether every given intent is set. */
122
+ has(bits: GatewayIntentResolvable): boolean;
123
+ /** Whether any given intent is set. */
124
+ any(bits: GatewayIntentResolvable): boolean;
125
+ /** Adds intents in place. @returns This bitfield. */
126
+ add(...bits: GatewayIntentResolvable[]): this;
127
+ /** Removes intents in place. @returns This bitfield. */
128
+ remove(...bits: GatewayIntentResolvable[]): this;
129
+ /** Names of the set intents. */
130
+ toArray(): (keyof typeof GatewayIntentBits)[];
131
+ /** Whether this equals another bitfield. */
132
+ equals(bits: GatewayIntentResolvable): boolean;
133
+ valueOf(): number;
134
+ toJSON(): number;
135
+ }
136
+ /** Gateway connection properties (OS, browser, device). */
137
+ export interface GatewayProperties {
138
+ os?: string;
139
+ browser?: string;
140
+ device?: string;
141
+ [key: string]: unknown;
142
+ }
143
+ /** Gateway presence activity. */
144
+ export interface GatewayPresenceActivity {
145
+ name: string;
146
+ type?: number;
147
+ url?: string;
148
+ state?: string;
149
+ }
150
+ /** Gateway presence data. */
151
+ export interface GatewayPresence {
152
+ status?: "online" | "dnd" | "idle" | "invisible" | "offline";
153
+ activities?: GatewayPresenceActivity[];
154
+ afk?: boolean;
155
+ since?: number | null;
156
+ }
157
+ /** Client configuration. */
158
+ export interface ClientOptions {
159
+ token: string;
160
+ intents: GatewayIntentResolvable;
161
+ gateway?: GatewayOptions;
162
+ rest?: RESTOptions;
163
+ /** Opt-in bounded per-channel message cache. Messages are not cached by default. */
164
+ messageCache?: {
165
+ maxSize?: number;
166
+ ttl?: number;
167
+ };
168
+ /**
169
+ * Which resources the client keeps from Gateway events. Everything is
170
+ * cached by default; large bots can turn off what they do not read.
171
+ * Events are still emitted either way.
172
+ */
173
+ cache?: {
174
+ users?: boolean;
175
+ members?: boolean;
176
+ roles?: boolean;
177
+ emojis?: boolean;
178
+ };
179
+ }
180
+ /** Gateway connection configuration. */
181
+ export interface GatewayOptions {
182
+ intents?: GatewayIntentResolvable;
183
+ reconnect?: boolean;
184
+ maxReconnectAttempts?: number;
185
+ reconnectBaseDelay?: number;
186
+ reconnectMaxDelay?: number;
187
+ shardId?: number;
188
+ shardCount?: number;
189
+ properties?: GatewayProperties;
190
+ presence?: GatewayPresence;
191
+ }
192
+ /** REST request configuration. */
193
+ export interface RESTOptions {
194
+ timeout?: number;
195
+ retries?: number;
196
+ baseURL?: string;
197
+ }