lunibee 0.1.4 → 0.1.6

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 (42) hide show
  1. package/README.md +12 -23
  2. package/dist/builders/components.d.ts +108 -0
  3. package/dist/builders/index.d.ts +1 -1
  4. package/dist/builders/index.js +178 -2
  5. package/dist/builders/index.js.map +3 -3
  6. package/dist/collection/index.d.ts +6 -0
  7. package/dist/collection/index.js +33 -2
  8. package/dist/collection/index.js.map +4 -4
  9. package/dist/core/events.d.ts +67 -3
  10. package/dist/core/index.d.ts +120 -90
  11. package/dist/core/index.js +816 -1021
  12. package/dist/core/index.js.map +20 -21
  13. package/dist/formatters/index.js.map +1 -1
  14. package/dist/index.d.ts +5 -4
  15. package/dist/index.js +2215 -1392
  16. package/dist/index.js.map +29 -26
  17. package/dist/managers/guild.d.ts +30 -0
  18. package/dist/managers/index.d.ts +56 -75
  19. package/dist/managers/index.js +339 -48
  20. package/dist/managers/index.js.map +16 -12
  21. package/dist/managers/message.d.ts +7 -12
  22. package/dist/managers/user.d.ts +20 -0
  23. package/dist/rest/index.d.ts +83 -1
  24. package/dist/rest/index.js +48 -8
  25. package/dist/rest/index.js.map +4 -4
  26. package/dist/rest/routes.d.ts +4 -1
  27. package/dist/sharding/index.js +4 -1
  28. package/dist/sharding/index.js.map +4 -4
  29. package/dist/structures/base.d.ts +99 -48
  30. package/dist/structures/embed.d.ts +65 -0
  31. package/dist/structures/index.d.ts +45 -25
  32. package/dist/structures/index.js +569 -36
  33. package/dist/structures/index.js.map +10 -8
  34. package/dist/structures/interactions.d.ts +72 -17
  35. package/dist/structures/resources.d.ts +9 -5
  36. package/dist/types/index.d.ts +530 -85
  37. package/dist/types/index.js +71 -1
  38. package/dist/types/index.js.map +3 -3
  39. package/dist/voice/index.js.map +1 -1
  40. package/dist/ws/index.js +4 -1
  41. package/dist/ws/index.js.map +4 -4
  42. package/package.json +15 -15
@@ -1,58 +1,11 @@
1
1
  export { Permission, Permissions, PermissionFlagsBits, PermissionSet, PermissionsBitField, PermissionOverwriteType, type PermissionName, } from "./permissions.js";
2
+ export { ClientEvent, type ClientEventName, type ClientListener, } from "./events.js";
3
+ export { GatewayIntentBits, IntentBits, Intents, resolveGatewayIntents, type GatewayIntentResolvable, } from "@lunibee/types";
2
4
  import { ApplicationCommandManager, ChannelManager, GuildManager, UserManager } from "@lunibee/managers";
3
5
  import { REST } from "@lunibee/rest";
4
6
  import { Channel, Message, Interaction, type InteractionClient } from "@lunibee/structures";
5
7
  import { Gateway } from "@lunibee/ws";
6
- import type { APIChannel, APIGuild, APIGuildMember, APIGuildRoleEvent, APIGuildRoleDeleteEvent, APIGuildBanEvent, APIGuildEmojisUpdateEvent, APIMessageDeleteBulkEvent, APIMessageDeleteEvent, APIMessageReactionEvent, APIThreadEvent, ClientOptions, ClientUser } from "@lunibee/types";
7
- /** Events emitted by the Lunibee client. */
8
- export interface ClientEvents {
9
- /** Client is ready. */ ready: [ClientUser];
10
- /** Raw gateway dispatch envelope. */ raw: [{
11
- event: string;
12
- data: unknown;
13
- }];
14
- /** Normalized client error. */ error: [Error];
15
- /** Gateway opened. */ open: [];
16
- /** Gateway closed. */ close: [{
17
- code: number;
18
- action: string;
19
- }];
20
- /** Message created. */ messageCreate: [Message];
21
- /** Message updated. */ messageUpdate: [Message];
22
- /** Message deleted. */ messageDelete: [APIMessageDeleteEvent];
23
- /** Messages deleted in bulk. */ messageDeleteBulk: [
24
- APIMessageDeleteBulkEvent
25
- ];
26
- /** Guild became available. */ guildCreate: [APIGuild];
27
- /** Guild updated. */ guildUpdate: [APIGuild];
28
- /** Guild became unavailable or was removed. */ guildDelete: [
29
- {
30
- id: string;
31
- unavailable?: boolean;
32
- }
33
- ];
34
- /** Channel created. */ channelCreate: [Channel];
35
- /** Channel updated. */ channelUpdate: [Channel];
36
- /** Channel deleted. */ channelDelete: [APIChannel];
37
- /** Thread created. */ threadCreate: [Channel];
38
- /** Thread updated. */ threadUpdate: [Channel];
39
- /** Thread deleted. */ threadDelete: [APIThreadEvent];
40
- /** Guild member added. */ guildMemberAdd: [APIGuildMember];
41
- /** Guild member updated. */ guildMemberUpdate: [APIGuildMember];
42
- /** Guild member removed. */ guildMemberRemove: [APIGuildMember];
43
- /** Reaction added. */ messageReactionAdd: [APIMessageReactionEvent];
44
- /** Reaction removed. */ messageReactionRemove: [APIMessageReactionEvent];
45
- /** All reactions removed. */ messageReactionRemoveAll: [
46
- APIMessageDeleteEvent
47
- ];
48
- /** Interaction created. */ interactionCreate: [Interaction];
49
- /** Guild role created. */ guildRoleCreate: [APIGuildRoleEvent];
50
- /** Guild role updated. */ guildRoleUpdate: [APIGuildRoleEvent];
51
- /** Guild role deleted. */ guildRoleDelete: [APIGuildRoleDeleteEvent];
52
- /** Guild ban added. */ guildBanAdd: [APIGuildBanEvent];
53
- /** Guild ban removed. */ guildBanRemove: [APIGuildBanEvent];
54
- /** Guild emojis updated. */ guildEmojisUpdate: [APIGuildEmojisUpdateEvent];
55
- }
8
+ 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";
56
9
  /** Lifecycle state of a client. */
57
10
  export type ClientState = "idle" | "connecting" | "ready" | "destroyed";
58
11
  type Listener<T extends unknown[]> = (...args: T) => unknown;
@@ -61,51 +14,128 @@ declare class EventEmitter<Events extends {
61
14
  [K in keyof Events]: unknown[];
62
15
  }> {
63
16
  #private;
64
- /** Registers a listener. @param event Event name. @param listener Listener callback. @returns This emitter. */ on<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
65
- /** Registers a one-shot listener. @param event Event name. @param listener Listener callback. @returns This emitter. */ once<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
66
- /** Removes a listener. @param event Event name. @param listener Listener callback. @returns This emitter. */ off<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
67
- /** Removes listeners. @param event Optional event name. @returns This emitter. */ removeAllListeners<K extends keyof Events>(event?: K): this;
68
- /** Emits an event. @param event Event name. @param args Event arguments. @returns Whether listeners were invoked. */ protected emit<K extends keyof Events>(event: K, ...args: Events[K]): boolean;
17
+ on<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
18
+ once<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
19
+ off<K extends keyof Events>(event: K, listener: Listener<Events[K]>): this;
20
+ removeAllListeners<K extends keyof Events>(event?: K): this;
21
+ protected emit<K extends keyof Events>(event: K, ...args: Events[K]): boolean;
69
22
  }
70
23
  /** Main Lunibee Discord client. */
71
24
  export declare class Client extends EventEmitter<ClientEvents> implements InteractionClient {
72
25
  #private;
73
26
  readonly options: ClientOptions;
74
- /** REST transport used by all managers. */ readonly rest: REST;
75
- /** User resource manager. */ readonly users: UserManager;
76
- /** Guild resource manager. */ readonly guilds: GuildManager;
77
- /** Channel and message resource manager. */ readonly channels: ChannelManager;
78
- /** Application command manager (available after login). */ readonly application: {
79
- /** Application command registration API. */ commands: ApplicationCommandManager;
27
+ readonly rest: REST;
28
+ readonly users: UserManager;
29
+ readonly guilds: GuildManager;
30
+ readonly channels: ChannelManager;
31
+ readonly application: {
32
+ commands: ApplicationCommandManager;
80
33
  };
81
- /** Underlying WebSocket Gateway connection. */ get ws(): Gateway;
82
- /** Underlying WebSocket Gateway connection. */ get gateway(): Gateway;
83
- /** Current authenticated bot user. */ user?: ClientUser;
84
- /** Time at which the gateway became ready. */ readyAt?: Date;
85
- /** Current client lifecycle state. */ state: ClientState;
86
- /** Time in milliseconds since the client became ready, or null if not ready. */
34
+ get ws(): Gateway;
35
+ get gateway(): Gateway;
36
+ user?: ClientUser;
37
+ readyAt?: Date;
38
+ state: ClientState;
87
39
  get uptime(): number | null;
88
- /** Creates a client. @param options Client configuration. @throws {TypeError} If no token is supplied. */ constructor(options: ClientOptions);
89
- /** Indicates whether the client has completed gateway readiness. @returns True when ready. */ isReady(): this is Client & {
90
- user: ClientUser;
91
- readyAt: Date;
92
- };
93
- /** Connects the REST and gateway clients. @returns A promise fulfilled after the gateway socket opens. @throws {Error} If the client is destroyed or connection fails. */ login(): Promise<void>;
94
- /** Closes the gateway and destroys cached resources. @returns Nothing. */ destroy(): void;
95
- /** Posts an interaction callback through REST. @param id Interaction identifier. @param token Interaction token. @param response Interaction response. @returns REST response. */ postInteractionResponse(id: string, token: string, response: import("@lunibee/structures").InteractionResponse): Promise<unknown>;
96
- /** Edits the original interaction response. @param token Interaction token. @param data Reply payload. @returns REST response. */ editInteractionReply(token: string, data: import("@lunibee/structures").InteractionReplyOptions): Promise<unknown>;
97
- /** Deletes the original interaction response. @param token Interaction token. @returns Nothing. */ deleteInteractionReply(token: string): Promise<void>;
98
- /** Sets the client gateway presence. @param presence Presence options. @returns Whether the presence update was sent. */
99
- setPresence(presence: import("@lunibee/types").GatewayPresence): boolean;
100
- /** Sends a follow-up interaction webhook message. @param token Interaction token. @param data Follow-up payload. @returns REST response. */ followUpInteraction(token: string, data: import("@lunibee/structures").InteractionReplyOptions): Promise<unknown>;
40
+ /** Whether the client is ready and connected. */
41
+ isReady(): boolean;
42
+ /** Sets the bot's presence / status. @param data Presence payload. @returns Whether the payload was sent. */
43
+ setPresence(data: import("@lunibee/types").GatewayPresence): boolean;
44
+ constructor(options: ClientOptions);
45
+ /**
46
+ * Convenience method to connect the bot to Discord.
47
+ * Optionally overrides the configured token.
48
+ * @param token Optional token override.
49
+ * @returns The token used to log in.
50
+ * @throws {TypeError} If the resulting token is empty.
51
+ */
52
+ login(token?: string): Promise<string>;
53
+ /**
54
+ * Destroys the client, permanently closing the Gateway connection.
55
+ */
56
+ destroy(): void;
57
+ postInteractionResponse(id: string, token: string, response: import("@lunibee/structures").InteractionResponse): Promise<unknown>;
58
+ editInteractionReply(token: string, data: Record<string, unknown>): Promise<unknown>;
59
+ deleteInteractionReply(token: string): Promise<void>;
60
+ followUpInteraction(token: string, data: Record<string, unknown>): Promise<unknown>;
101
61
  }
102
- export { Collection } from "@lunibee/collection";
103
- export { REST, RESTError, Routes } from "@lunibee/rest";
104
- export { Gateway, GatewayError, GatewayOpcodes } from "@lunibee/ws";
105
- export { User, Guild, Channel, Message, type ResourceContext, } from "@lunibee/structures";
106
- export { EmbedBuilder, ButtonBuilder, ActionRowBuilder, StringSelectBuilder, SlashCommandBuilder, StringOptionBuilder, } from "@lunibee/builders";
107
- export * from "@lunibee/types";
108
- export { Manager, ResourceManager, UserManager, GuildManager, ChannelManager, MessageCreateOptions, MessageEditOptions, MessageFetchOptions, MessageThreadOptions, ReactionFetchOptions, } from "@lunibee/managers";
109
- export { Collector, type CollectorOptions } from "./collector.js";
110
- export { ApplicationCommandManager } from "@lunibee/managers";
111
- export type { APIApplicationCommand, ApplicationCommandData, APIRole, APIGuildRoleEvent, APIGuildRoleDeleteEvent, APIGuildBanEvent, APIEmoji, APIGuildEmojisUpdateEvent, ApplicationCommandOptionType, ApplicationCommandType, } from "@lunibee/types";
62
+ export type ClientEvents = {
63
+ ready: [user: ClientUser];
64
+ raw: [data: {
65
+ event: string;
66
+ data: unknown;
67
+ }];
68
+ error: [error: Error];
69
+ open: [];
70
+ close: [data: {
71
+ code: number;
72
+ action: string;
73
+ }];
74
+ messageCreate: [message: Message];
75
+ messageUpdate: [message: Message];
76
+ messageDelete: [data: APIMessageDeleteEvent];
77
+ messageDeleteBulk: [data: APIMessageDeleteBulkEvent];
78
+ messageReactionAdd: [data: APIMessageReactionEvent];
79
+ messageReactionRemove: [data: APIMessageReactionEvent];
80
+ messageReactionRemoveAll: [data: APIMessageDeleteEvent];
81
+ messageReactionRemoveEmoji: [data: APIMessageReactionRemoveEmojiEvent];
82
+ messagePollVoteAdd: [data: APIMessagePollVoteEvent];
83
+ messagePollVoteRemove: [data: APIMessagePollVoteEvent];
84
+ guildCreate: [data: APIGuild];
85
+ guildUpdate: [data: APIGuild];
86
+ guildDelete: [data: {
87
+ id: string;
88
+ unavailable?: boolean;
89
+ }];
90
+ guildAvailable: [data: APIGuild & {
91
+ unavailable?: boolean;
92
+ }];
93
+ guildUnavailable: [data: {
94
+ id: string;
95
+ unavailable?: boolean;
96
+ }];
97
+ guildMemberAdd: [member: APIGuildMember];
98
+ guildMemberUpdate: [member: APIGuildMember];
99
+ guildMemberRemove: [member: APIGuildMember];
100
+ guildMembersChunk: [data: APIGuildMembersChunk];
101
+ guildBanAdd: [data: APIGuildBanEvent];
102
+ guildBanRemove: [data: APIGuildBanEvent];
103
+ guildRoleCreate: [data: APIGuildRoleEvent];
104
+ guildRoleUpdate: [data: APIGuildRoleEvent];
105
+ guildRoleDelete: [data: APIGuildRoleDeleteEvent];
106
+ guildEmojisUpdate: [data: APIGuildEmojisUpdateEvent];
107
+ guildStickersUpdate: [data: APIGuildStickersUpdateEvent];
108
+ guildIntegrationsUpdate: [data: {
109
+ guild_id: string;
110
+ }];
111
+ guildScheduledEventCreate: [data: APIGuildScheduledEvent];
112
+ guildScheduledEventUpdate: [data: APIGuildScheduledEvent];
113
+ guildScheduledEventDelete: [data: APIGuildScheduledEvent];
114
+ guildScheduledEventUserAdd: [data: APIGuildScheduledEventUserEvent];
115
+ guildScheduledEventUserRemove: [data: APIGuildScheduledEventUserEvent];
116
+ autoModerationRuleCreate: [data: APIAutoModerationRule];
117
+ autoModerationRuleUpdate: [data: APIAutoModerationRule];
118
+ autoModerationRuleDelete: [data: APIAutoModerationRule];
119
+ autoModerationActionExecution: [data: APIAutoModerationActionExecution];
120
+ channelCreate: [channel: Channel];
121
+ channelUpdate: [channel: Channel];
122
+ channelDelete: [data: APIChannel];
123
+ channelPinsUpdate: [data: APIChannelPinsUpdate];
124
+ threadCreate: [channel: Channel];
125
+ threadUpdate: [channel: Channel];
126
+ threadDelete: [data: APIThreadEvent];
127
+ threadListSync: [data: APIThreadListSync];
128
+ threadMembersUpdate: [data: APIThreadMembersUpdate];
129
+ threadMemberUpdate: [data: APIThreadMember];
130
+ stageInstanceCreate: [data: APIStageInstance];
131
+ stageInstanceUpdate: [data: APIStageInstance];
132
+ stageInstanceDelete: [data: APIStageInstance];
133
+ inviteCreate: [data: APIInviteCreate];
134
+ inviteDelete: [data: APIInviteDelete];
135
+ webhooksUpdate: [data: APIWebhooksUpdate];
136
+ voiceStateUpdate: [data: APIVoiceState];
137
+ voiceServerUpdate: [data: APIVoiceServerUpdate];
138
+ presenceUpdate: [data: APIPresenceUpdate];
139
+ typingStart: [data: APITypingStart];
140
+ interactionCreate: [interaction: Interaction];
141
+ };