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,6 @@
1
+ import type { APIEntitlement, APISoundboardSound } from "@lunibee/types";
2
+ import type { APIAutoModerationActionExecution, APIAutoModerationRule, APIChannel, APIChannelPinsUpdate, APIGuild, APIGuildBanEvent, APIGuildEmojisUpdateEvent, APIGuildMember, APIGuildMembersChunk, APIGuildRoleDeleteEvent, APIGuildRoleEvent, APIGuildScheduledEvent, APIGuildScheduledEventUserEvent, APIGuildStickersUpdateEvent, APIInviteCreate, APIInviteDelete, APIMessageDeleteBulkEvent, APIMessageDeleteEvent, APIMessagePollVoteEvent, APIMessageReactionEvent, APIMessageReactionRemoveEmojiEvent, APIPresenceUpdate, APIStageInstance, APIThreadEvent, APIThreadListSync, APIThreadMember, APIThreadMembersUpdate, APITypingStart, APIVoiceServerUpdate, APIVoiceState, APIWebhooksUpdate, ClientUser } from "@lunibee/types";
3
+ import type { Channel, Interaction, Message } from "@lunibee/structures";
1
4
  /** Names of events emitted by a Lunibee client. */
2
5
  export declare enum ClientEvent {
3
6
  Ready = "ready",
@@ -33,6 +36,13 @@ export declare enum ClientEvent {
33
36
  GuildRoleDelete = "guildRoleDelete",
34
37
  GuildEmojisUpdate = "guildEmojisUpdate",
35
38
  GuildStickersUpdate = "guildStickersUpdate",
39
+ EntitlementCreate = "entitlementCreate",
40
+ EntitlementUpdate = "entitlementUpdate",
41
+ EntitlementDelete = "entitlementDelete",
42
+ SoundboardSoundCreate = "soundboardSoundCreate",
43
+ SoundboardSoundUpdate = "soundboardSoundUpdate",
44
+ SoundboardSoundDelete = "soundboardSoundDelete",
45
+ SoundboardSoundsUpdate = "soundboardSoundsUpdate",
36
46
  GuildIntegrationsUpdate = "guildIntegrationsUpdate",
37
47
  GuildScheduledEventCreate = "guildScheduledEventCreate",
38
48
  GuildScheduledEventUpdate = "guildScheduledEventUpdate",
@@ -66,6 +76,106 @@ export declare enum ClientEvent {
66
76
  InteractionCreate = "interactionCreate"
67
77
  }
68
78
  /** Names of events emitted by a Lunibee client. */
69
- export type ClientEventName = keyof import("./index.js").ClientEvents;
79
+ export type ClientEventName = keyof ClientEvents;
70
80
  /** Listener signature for a Lunibee client event. */
71
- export type ClientListener<K extends ClientEventName> = (...args: import("./index.js").ClientEvents[K]) => unknown;
81
+ export type ClientListener<K extends ClientEventName> = (...args: ClientEvents[K]) => unknown;
82
+ export type ClientEvents = {
83
+ ready: [user: ClientUser];
84
+ resumed: [];
85
+ invalidSession: [isRecoverable: boolean];
86
+ raw: [data: {
87
+ event: string;
88
+ data: unknown;
89
+ }];
90
+ error: [error: Error];
91
+ open: [];
92
+ close: [data: {
93
+ code: number;
94
+ action: string;
95
+ }];
96
+ messageCreate: [message: Message];
97
+ /** `previous` is the cached version, available when `messageCache` is enabled. */
98
+ messageUpdate: [message: Message, previous?: Message];
99
+ /** `message` is the cached message, available when `messageCache` is enabled. */
100
+ messageDelete: [data: APIMessageDeleteEvent, message?: Message];
101
+ /** `messages` are the cached messages that were deleted (empty without `messageCache`). */
102
+ messageDeleteBulk: [data: APIMessageDeleteBulkEvent, messages: Message[]];
103
+ messageReactionAdd: [data: APIMessageReactionEvent];
104
+ messageReactionRemove: [data: APIMessageReactionEvent];
105
+ messageReactionRemoveAll: [data: APIMessageDeleteEvent];
106
+ messageReactionRemoveEmoji: [data: APIMessageReactionRemoveEmojiEvent];
107
+ messagePollVoteAdd: [data: APIMessagePollVoteEvent];
108
+ messagePollVoteRemove: [data: APIMessagePollVoteEvent];
109
+ guildCreate: [data: APIGuild];
110
+ guildUpdate: [data: APIGuild];
111
+ guildDelete: [data: {
112
+ id: string;
113
+ unavailable?: boolean;
114
+ }];
115
+ guildAvailable: [data: APIGuild & {
116
+ unavailable?: boolean;
117
+ }];
118
+ guildUnavailable: [data: {
119
+ id: string;
120
+ unavailable?: boolean;
121
+ }];
122
+ guildMemberAdd: [member: APIGuildMember];
123
+ guildMemberUpdate: [member: APIGuildMember];
124
+ guildMemberRemove: [member: APIGuildMember];
125
+ guildMembersChunk: [data: APIGuildMembersChunk];
126
+ guildBanAdd: [data: APIGuildBanEvent];
127
+ guildBanRemove: [data: APIGuildBanEvent];
128
+ guildRoleCreate: [data: APIGuildRoleEvent];
129
+ guildRoleUpdate: [data: APIGuildRoleEvent];
130
+ guildRoleDelete: [data: APIGuildRoleDeleteEvent];
131
+ guildEmojisUpdate: [data: APIGuildEmojisUpdateEvent];
132
+ guildStickersUpdate: [data: APIGuildStickersUpdateEvent];
133
+ entitlementCreate: [entitlement: APIEntitlement];
134
+ entitlementUpdate: [entitlement: APIEntitlement];
135
+ entitlementDelete: [entitlement: APIEntitlement];
136
+ soundboardSoundCreate: [sound: APISoundboardSound];
137
+ soundboardSoundUpdate: [sound: APISoundboardSound];
138
+ soundboardSoundDelete: [data: {
139
+ sound_id: string;
140
+ guild_id: string;
141
+ }];
142
+ soundboardSoundsUpdate: [
143
+ data: {
144
+ guild_id: string;
145
+ soundboard_sounds: APISoundboardSound[];
146
+ }
147
+ ];
148
+ guildIntegrationsUpdate: [data: {
149
+ guild_id: string;
150
+ }];
151
+ guildScheduledEventCreate: [data: APIGuildScheduledEvent];
152
+ guildScheduledEventUpdate: [data: APIGuildScheduledEvent];
153
+ guildScheduledEventDelete: [data: APIGuildScheduledEvent];
154
+ guildScheduledEventUserAdd: [data: APIGuildScheduledEventUserEvent];
155
+ guildScheduledEventUserRemove: [data: APIGuildScheduledEventUserEvent];
156
+ autoModerationRuleCreate: [data: APIAutoModerationRule];
157
+ autoModerationRuleUpdate: [data: APIAutoModerationRule];
158
+ autoModerationRuleDelete: [data: APIAutoModerationRule];
159
+ autoModerationActionExecution: [data: APIAutoModerationActionExecution];
160
+ channelCreate: [channel: Channel];
161
+ channelUpdate: [channel: Channel];
162
+ channelDelete: [data: APIChannel];
163
+ channelPinsUpdate: [data: APIChannelPinsUpdate];
164
+ threadCreate: [channel: Channel];
165
+ threadUpdate: [channel: Channel];
166
+ threadDelete: [data: APIThreadEvent];
167
+ threadListSync: [data: APIThreadListSync];
168
+ threadMembersUpdate: [data: APIThreadMembersUpdate];
169
+ threadMemberUpdate: [data: APIThreadMember];
170
+ stageInstanceCreate: [data: APIStageInstance];
171
+ stageInstanceUpdate: [data: APIStageInstance];
172
+ stageInstanceDelete: [data: APIStageInstance];
173
+ inviteCreate: [data: APIInviteCreate];
174
+ inviteDelete: [data: APIInviteDelete];
175
+ webhooksUpdate: [data: APIWebhooksUpdate];
176
+ voiceStateUpdate: [data: APIVoiceState];
177
+ voiceServerUpdate: [data: APIVoiceServerUpdate];
178
+ presenceUpdate: [data: APIPresenceUpdate];
179
+ typingStart: [data: APITypingStart];
180
+ interactionCreate: [interaction: Interaction];
181
+ };
@@ -1,12 +1,17 @@
1
- export { Permission, Permissions, PermissionFlagsBits, PermissionSet, PermissionsBitField, PermissionOverwriteType, type PermissionName, } from "./permissions.js";
2
- export { ClientEvent, type ClientEventName, type ClientListener, } from "./events.js";
1
+ export { Permission, Permissions, PermissionFlagsBits, PermissionSet, PermissionsBitField, PermissionOverwriteType, computePermissions, type PermissionContext, type PermissionOverwrite, type PermissionRole, type PermissionName, } from "./permissions.js";
2
+ export { ClientEvent,
3
+ /** Discord.js-familiar alias for {@link ClientEvent}. */
4
+ ClientEvent as Events, type ClientEventName, type ClientEvents, type ClientListener, } from "./events.js";
3
5
  export { Collector, type CollectorOptions } from "./collector.js";
4
- export { GatewayIntentBits, IntentBits, Intents, resolveGatewayIntents, type GatewayIntentResolvable, } from "@lunibee/types";
5
- import { ApplicationCommandManager, ChannelManager, GuildManager, UserManager } from "@lunibee/managers";
6
+ export { GatewayIntentBits, IntentBits, Intents, IntentsBitField, resolveGatewayIntents, type GatewayIntentResolvable, } from "@lunibee/types";
7
+ import { ApplicationCommandManager, ChannelManager, GuildManager, MonetizationManager, StageInstanceManager, UserManager } from "@lunibee/managers";
6
8
  import { REST } from "@lunibee/rest";
7
- import { Channel, Message, Interaction, type InteractionClient } from "@lunibee/structures";
9
+ import { type InteractionClient } from "@lunibee/structures";
8
10
  import { Gateway } from "@lunibee/ws";
9
- import type { APIChannel, APIGuild, APIGuildMember, APIGuildRoleEvent, APIGuildRoleDeleteEvent, APIGuildBanEvent, APIGuildEmojisUpdateEvent, APIGuildStickersUpdateEvent, APIMessageDeleteBulkEvent, APIMessageDeleteEvent, APIMessageReactionEvent, APIMessageReactionRemoveEmojiEvent, APIThreadEvent, APIThreadListSync, APIThreadMembersUpdate, APIVoiceState, APIVoiceServerUpdate, APIPresenceUpdate, APITypingStart, APIInviteCreate, APIInviteDelete, APIWebhooksUpdate, APIAutoModerationRule, APIAutoModerationActionExecution, APIGuildScheduledEvent, APIGuildScheduledEventUserEvent, APIStageInstance, APIChannelPinsUpdate, APIGuildMembersChunk, APIMessagePollVoteEvent, APIThreadMember, ClientOptions, ClientUser } from "@lunibee/types";
11
+ import type { APISoundboardSound, ClientOptions, ClientUser } from "@lunibee/types";
12
+ import { type ClientEvents } from "./events.js";
13
+ import { Collector, type CollectorOptions } from "./collector.js";
14
+ import { type PermissionSet } from "./permissions.js";
10
15
  /** Lifecycle state of a client. */
11
16
  export type ClientState = "idle" | "connecting" | "ready" | "destroyed";
12
17
  type Listener<T extends unknown[]> = (...args: T) => unknown;
@@ -31,9 +36,13 @@ export declare class Client extends EventEmitter<ClientEvents> implements Intera
31
36
  readonly users: UserManager;
32
37
  readonly guilds: GuildManager;
33
38
  readonly channels: ChannelManager;
39
+ /** Stage instances, cached by stage channel ID. */
40
+ readonly stageInstances: StageInstanceManager;
34
41
  readonly application: {
35
42
  commands: ApplicationCommandManager;
36
43
  };
44
+ /** SKUs, entitlements and subscriptions; available after READY (application ID known). */
45
+ monetization?: MonetizationManager;
37
46
  get ws(): Gateway;
38
47
  get gateway(): Gateway;
39
48
  user?: ClientUser;
@@ -56,12 +65,21 @@ export declare class Client extends EventEmitter<ClientEvents> implements Intera
56
65
  requestGuildMembers(data: Record<string, unknown>): boolean;
57
66
  constructor(options: ClientOptions);
58
67
  /**
59
- * Convenience method to connect the bot to Discord.
60
- * Optionally overrides the configured token.
61
- * @param token Optional token override.
62
- * @returns The token used to log in.
63
- * @throws {TypeError} If the resulting token is empty.
68
+ * Collects the first argument of a client event until a limit, timeout,
69
+ * idle timeout, abort or `stop()`. The collector unsubscribes itself when
70
+ * it ends. Items are keyed by `options.key`, else their `id`, else order.
64
71
  */
72
+ createCollector<E extends keyof ClientEvents>(event: E, options?: CollectorOptions<ClientEvents[E][0]> & {
73
+ key?: (item: ClientEvents[E][0]) => string;
74
+ }): Collector<string, ClientEvents[E][0]>;
75
+ /**
76
+ * Resolves a member's permissions from cached state: guild-level for a
77
+ * guild ID, or channel-level (including overwrites) for a cached channel
78
+ * ID. Returns null when the guild or member is not cached.
79
+ */
80
+ permissionsFor(memberId: string, guildOrChannelId: string): PermissionSet | null;
81
+ /** Fetches Discord's default soundboard sounds. */
82
+ fetchDefaultSoundboardSounds(): Promise<APISoundboardSound[]>;
65
83
  login(token?: string): Promise<string>;
66
84
  /**
67
85
  * Destroys the client, permanently closing the Gateway connection.
@@ -71,6 +89,7 @@ export declare class Client extends EventEmitter<ClientEvents> implements Intera
71
89
  editInteractionReply(token: string, data: Record<string, unknown>): Promise<unknown>;
72
90
  deleteInteractionReply(token: string): Promise<void>;
73
91
  followUpInteraction(token: string, data: Record<string, unknown>): Promise<unknown>;
92
+ interactionWebhookMessage(method: "GET" | "PATCH" | "DELETE", applicationId: string, token: string, messageId: string, data?: Record<string, unknown>): Promise<unknown>;
74
93
  /** Fetches a webhook from Discord. */
75
94
  fetchWebhook(id: string, token?: string): Promise<Record<string, unknown>>;
76
95
  /** Fetches a guild preview from Discord. */
@@ -95,85 +114,3 @@ export declare class Client extends EventEmitter<ClientEvents> implements Intera
95
114
  permissions?: string | bigint;
96
115
  }): string;
97
116
  }
98
- export type ClientEvents = {
99
- ready: [user: ClientUser];
100
- resumed: [];
101
- invalidSession: [isRecoverable: boolean];
102
- raw: [data: {
103
- event: string;
104
- data: unknown;
105
- }];
106
- error: [error: Error];
107
- open: [];
108
- close: [data: {
109
- code: number;
110
- action: string;
111
- }];
112
- messageCreate: [message: Message];
113
- messageUpdate: [message: Message];
114
- messageDelete: [data: APIMessageDeleteEvent];
115
- messageDeleteBulk: [data: APIMessageDeleteBulkEvent];
116
- messageReactionAdd: [data: APIMessageReactionEvent];
117
- messageReactionRemove: [data: APIMessageReactionEvent];
118
- messageReactionRemoveAll: [data: APIMessageDeleteEvent];
119
- messageReactionRemoveEmoji: [data: APIMessageReactionRemoveEmojiEvent];
120
- messagePollVoteAdd: [data: APIMessagePollVoteEvent];
121
- messagePollVoteRemove: [data: APIMessagePollVoteEvent];
122
- guildCreate: [data: APIGuild];
123
- guildUpdate: [data: APIGuild];
124
- guildDelete: [data: {
125
- id: string;
126
- unavailable?: boolean;
127
- }];
128
- guildAvailable: [data: APIGuild & {
129
- unavailable?: boolean;
130
- }];
131
- guildUnavailable: [data: {
132
- id: string;
133
- unavailable?: boolean;
134
- }];
135
- guildMemberAdd: [member: APIGuildMember];
136
- guildMemberUpdate: [member: APIGuildMember];
137
- guildMemberRemove: [member: APIGuildMember];
138
- guildMembersChunk: [data: APIGuildMembersChunk];
139
- guildBanAdd: [data: APIGuildBanEvent];
140
- guildBanRemove: [data: APIGuildBanEvent];
141
- guildRoleCreate: [data: APIGuildRoleEvent];
142
- guildRoleUpdate: [data: APIGuildRoleEvent];
143
- guildRoleDelete: [data: APIGuildRoleDeleteEvent];
144
- guildEmojisUpdate: [data: APIGuildEmojisUpdateEvent];
145
- guildStickersUpdate: [data: APIGuildStickersUpdateEvent];
146
- guildIntegrationsUpdate: [data: {
147
- guild_id: string;
148
- }];
149
- guildScheduledEventCreate: [data: APIGuildScheduledEvent];
150
- guildScheduledEventUpdate: [data: APIGuildScheduledEvent];
151
- guildScheduledEventDelete: [data: APIGuildScheduledEvent];
152
- guildScheduledEventUserAdd: [data: APIGuildScheduledEventUserEvent];
153
- guildScheduledEventUserRemove: [data: APIGuildScheduledEventUserEvent];
154
- autoModerationRuleCreate: [data: APIAutoModerationRule];
155
- autoModerationRuleUpdate: [data: APIAutoModerationRule];
156
- autoModerationRuleDelete: [data: APIAutoModerationRule];
157
- autoModerationActionExecution: [data: APIAutoModerationActionExecution];
158
- channelCreate: [channel: Channel];
159
- channelUpdate: [channel: Channel];
160
- channelDelete: [data: APIChannel];
161
- channelPinsUpdate: [data: APIChannelPinsUpdate];
162
- threadCreate: [channel: Channel];
163
- threadUpdate: [channel: Channel];
164
- threadDelete: [data: APIThreadEvent];
165
- threadListSync: [data: APIThreadListSync];
166
- threadMembersUpdate: [data: APIThreadMembersUpdate];
167
- threadMemberUpdate: [data: APIThreadMember];
168
- stageInstanceCreate: [data: APIStageInstance];
169
- stageInstanceUpdate: [data: APIStageInstance];
170
- stageInstanceDelete: [data: APIStageInstance];
171
- inviteCreate: [data: APIInviteCreate];
172
- inviteDelete: [data: APIInviteDelete];
173
- webhooksUpdate: [data: APIWebhooksUpdate];
174
- voiceStateUpdate: [data: APIVoiceState];
175
- voiceServerUpdate: [data: APIVoiceServerUpdate];
176
- presenceUpdate: [data: APIPresenceUpdate];
177
- typingStart: [data: APITypingStart];
178
- interactionCreate: [interaction: Interaction];
179
- };