lunibee 0.1.6 → 0.1.7

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 (55) hide show
  1. package/README.md +3 -3
  2. package/dist/builders/commands.d.ts +37 -0
  3. package/dist/builders/components.d.ts +19 -12
  4. package/dist/builders/embed.d.ts +3 -1
  5. package/dist/builders/index.d.ts +1 -1
  6. package/dist/builders/index.js +146 -19
  7. package/dist/builders/index.js.map +8 -7
  8. package/dist/collection/index.d.ts +30 -0
  9. package/dist/collection/index.js +78 -5
  10. package/dist/collection/index.js.map +4 -4
  11. package/dist/core/events.d.ts +2 -0
  12. package/dist/core/index.d.ts +38 -0
  13. package/dist/core/index.js +754 -175
  14. package/dist/core/index.js.map +24 -22
  15. package/dist/core/permissions.d.ts +112 -53
  16. package/dist/formatters/index.d.ts +43 -3
  17. package/dist/formatters/index.js +64 -1
  18. package/dist/formatters/index.js.map +3 -3
  19. package/dist/handlers/index.js.map +2 -2
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +1762 -291
  22. package/dist/index.js.map +43 -38
  23. package/dist/managers/emoji.d.ts +38 -0
  24. package/dist/managers/guild.d.ts +112 -1
  25. package/dist/managers/index.d.ts +31 -1
  26. package/dist/managers/index.js +803 -77
  27. package/dist/managers/index.js.map +21 -20
  28. package/dist/rest/index.d.ts +101 -11
  29. package/dist/rest/index.js +301 -45
  30. package/dist/rest/index.js.map +8 -6
  31. package/dist/rest/redis.d.ts +37 -0
  32. package/dist/rest/routes.d.ts +22 -0
  33. package/dist/rest/store.d.ts +38 -0
  34. package/dist/rest/webhook.d.ts +2 -2
  35. package/dist/sharding/cluster.d.ts +61 -0
  36. package/dist/sharding/index.d.ts +8 -0
  37. package/dist/sharding/index.js +286 -18
  38. package/dist/sharding/index.js.map +8 -7
  39. package/dist/structures/audit-log.d.ts +26 -0
  40. package/dist/structures/base.d.ts +32 -0
  41. package/dist/structures/index.d.ts +29 -1
  42. package/dist/structures/index.js +1022 -86
  43. package/dist/structures/index.js.map +14 -10
  44. package/dist/structures/resources.d.ts +192 -4
  45. package/dist/types/index.d.ts +76 -0
  46. package/dist/types/index.js.map +2 -2
  47. package/dist/utils/index.js.map +2 -2
  48. package/dist/voice/index.d.ts +88 -0
  49. package/dist/voice/index.js +204 -5
  50. package/dist/voice/index.js.map +3 -3
  51. package/dist/ws/index.d.ts +40 -1
  52. package/dist/ws/index.js +102 -18
  53. package/dist/ws/index.js.map +4 -4
  54. package/package.json +16 -16
  55. package/dist/structures/permissions.d.ts +0 -73
@@ -0,0 +1,38 @@
1
+ import { Manager } from "./base.js";
2
+ import { Emoji } from "@lunibee/structures";
3
+ import { type REST } from "@lunibee/rest";
4
+ /** Strict payload for creating a custom guild emoji. */
5
+ export interface EmojiCreateOptions {
6
+ /** Emoji name (1-32 chars, alphanumeric + underscores). */
7
+ name: string;
8
+ /** Base64-encoded 128x128 image data URI. */
9
+ image: string;
10
+ /** Role IDs allowed to use the emoji. */
11
+ roles?: string[];
12
+ }
13
+ /** Strict payload for editing a custom guild emoji. */
14
+ export interface EmojiEditOptions {
15
+ /** New emoji name. */
16
+ name?: string;
17
+ /** Role IDs allowed to use the emoji. */
18
+ roles?: string[];
19
+ }
20
+ /** Manages custom emojis for a guild. */
21
+ export declare class EmojiManager extends Manager<string, Emoji> {
22
+ #private;
23
+ constructor(rest: REST, guildId: string);
24
+ /** Fetches an emoji by ID from Discord. */
25
+ fetch(emojiId: string): Promise<Emoji>;
26
+ /** Fetches all emojis for this guild. */
27
+ fetchAll(): Promise<Emoji[]>;
28
+ /** Creates a new custom emoji. */
29
+ create(options: EmojiCreateOptions): Promise<Emoji>;
30
+ /** Edits an existing custom emoji. */
31
+ edit(emojiId: string, options: EmojiEditOptions): Promise<Emoji>;
32
+ /** Deletes a custom emoji. */
33
+ deleteEmoji(emojiId: string): Promise<void>;
34
+ /** Upserts an emoji into the manager cache. Custom emojis are keyed by their
35
+ * snowflake ID; unicode emojis (no ID) are keyed by `unicode:${name}` so repeated
36
+ * upserts reuse the same cached instance instead of allocating a new one each call. */
37
+ upsert(data: ConstructorParameters<typeof Emoji>[0]): Emoji;
38
+ }
@@ -1,5 +1,5 @@
1
1
  import { ResourceManager } from "./base.js";
2
- import { Guild } from "@lunibee/structures";
2
+ import { Guild, AutoModerationRule } from "@lunibee/structures";
3
3
  import { type REST } from "@lunibee/rest";
4
4
  import { type APIChannel, type APIGuildPreview, type APIInvite, type APIWebhook } from "@lunibee/types";
5
5
  export interface GuildCreateOptions extends Record<string, unknown> {
@@ -27,4 +27,115 @@ export declare class GuildManager extends ResourceManager<string, Guild> {
27
27
  fetchWebhooks(id: string): Promise<APIWebhook[]>;
28
28
  /** Fetches all invites in the guild. */
29
29
  fetchInvites(id: string): Promise<APIInvite[]>;
30
+ /**
31
+ * Fetches audit log entries for a guild.
32
+ * @param guildId Guild identifier.
33
+ * @param options Filter options: userId (filter by actor), actionType (AuditLogEvent number), before (entry ID cursor), limit (1–100, default 50).
34
+ * @returns Typed audit log response with `audit_log_entries` and related resources.
35
+ */
36
+ fetchAuditLog(guildId: string, options?: {
37
+ userId?: string;
38
+ actionType?: number;
39
+ before?: string;
40
+ after?: string;
41
+ limit?: number;
42
+ }): Promise<AuditLogResponse>;
43
+ /**
44
+ * Fetches members from a guild (paginated).
45
+ * @param guildId Guild identifier.
46
+ * @param options Fetch options: limit (1–1000, default 100), after (member ID cursor).
47
+ * @returns Array of raw member data payloads.
48
+ */
49
+ fetchMembers(guildId: string, options?: {
50
+ limit?: number;
51
+ after?: string;
52
+ }): Promise<Record<string, unknown>[]>;
53
+ /** Fetches a list of all auto moderation rules currently configured for guild. */
54
+ fetchAutoModerationRules(guildId: string): Promise<AutoModerationRule[]>;
55
+ /** Fetches a single auto moderation rule. */
56
+ fetchAutoModerationRule(guildId: string, ruleId: string): Promise<AutoModerationRule>;
57
+ /** Creates a new auto moderation rule. */
58
+ createAutoModerationRule(guildId: string, options: Record<string, unknown>): Promise<AutoModerationRule>;
59
+ /** Modifies an existing auto moderation rule. */
60
+ editAutoModerationRule(guildId: string, ruleId: string, options: Record<string, unknown>): Promise<AutoModerationRule>;
61
+ /** Deletes an auto moderation rule. */
62
+ deleteAutoModerationRule(guildId: string, ruleId: string): Promise<void>;
30
63
  }
64
+ /** A single audit log entry as returned by the Discord API. */
65
+ export interface AuditLogEntry {
66
+ id: string;
67
+ action_type: number;
68
+ user_id: string | null;
69
+ target_id: string | null;
70
+ reason?: string;
71
+ changes?: Array<{
72
+ key: string;
73
+ old_value?: unknown;
74
+ new_value?: unknown;
75
+ }>;
76
+ options?: Record<string, unknown>;
77
+ }
78
+ /** Discord API audit log response payload. */
79
+ export interface AuditLogResponse {
80
+ audit_log_entries: AuditLogEntry[];
81
+ users: Record<string, unknown>[];
82
+ integrations: Record<string, unknown>[];
83
+ webhooks: Record<string, unknown>[];
84
+ guild_scheduled_events: Record<string, unknown>[];
85
+ threads: Record<string, unknown>[];
86
+ application_commands: Record<string, unknown>[];
87
+ }
88
+ /** Known Discord audit log event type numbers. */
89
+ export declare const AuditLogEvent: {
90
+ readonly GuildUpdate: 1;
91
+ readonly ChannelCreate: 10;
92
+ readonly ChannelUpdate: 11;
93
+ readonly ChannelDelete: 12;
94
+ readonly ChannelOverwriteCreate: 13;
95
+ readonly ChannelOverwriteUpdate: 14;
96
+ readonly ChannelOverwriteDelete: 15;
97
+ readonly MemberKick: 20;
98
+ readonly MemberPrune: 21;
99
+ readonly MemberBanAdd: 22;
100
+ readonly MemberBanRemove: 23;
101
+ readonly MemberUpdate: 24;
102
+ readonly MemberRoleUpdate: 25;
103
+ readonly MemberMove: 26;
104
+ readonly MemberDisconnect: 27;
105
+ readonly BotAdd: 28;
106
+ readonly RoleCreate: 30;
107
+ readonly RoleUpdate: 31;
108
+ readonly RoleDelete: 32;
109
+ readonly InviteCreate: 40;
110
+ readonly InviteUpdate: 41;
111
+ readonly InviteDelete: 42;
112
+ readonly WebhookCreate: 50;
113
+ readonly WebhookUpdate: 51;
114
+ readonly WebhookDelete: 52;
115
+ readonly EmojiCreate: 60;
116
+ readonly EmojiUpdate: 61;
117
+ readonly EmojiDelete: 62;
118
+ readonly MessageDelete: 72;
119
+ readonly MessageBulkDelete: 73;
120
+ readonly MessagePin: 74;
121
+ readonly MessageUnpin: 75;
122
+ readonly IntegrationCreate: 80;
123
+ readonly IntegrationUpdate: 81;
124
+ readonly IntegrationDelete: 82;
125
+ readonly StageInstanceCreate: 83;
126
+ readonly StageInstanceUpdate: 84;
127
+ readonly StageInstanceDelete: 85;
128
+ readonly StickerCreate: 90;
129
+ readonly StickerUpdate: 91;
130
+ readonly StickerDelete: 92;
131
+ readonly ScheduledEventCreate: 100;
132
+ readonly ScheduledEventUpdate: 101;
133
+ readonly ScheduledEventDelete: 102;
134
+ readonly ThreadCreate: 110;
135
+ readonly ThreadUpdate: 111;
136
+ readonly ThreadDelete: 112;
137
+ readonly AutoModerationRuleCreate: 140;
138
+ readonly AutoModerationRuleUpdate: 141;
139
+ readonly AutoModerationRuleDelete: 142;
140
+ readonly AutoModerationBlockMessage: 143;
141
+ };
@@ -6,6 +6,8 @@ import { MessageManager, type MessageCreateOptions as ManagerMessageCreateOption
6
6
  import { ThreadManager } from "./thread.js";
7
7
  export { UserManager } from "./user.js";
8
8
  export { GuildManager } from "./guild.js";
9
+ export type { AuditLogEntry, AuditLogResponse } from "./guild.js";
10
+ export { AuditLogEvent } from "./guild.js";
9
11
  export type MessageCreateOptions = ManagerMessageCreateOptions;
10
12
  export type MessageEditOptions = Record<string, unknown> & {
11
13
  content?: string;
@@ -47,6 +49,12 @@ export declare class ChannelManager extends Manager<string, Channel> {
47
49
  create(guildId: string, options: ChannelCreateOptions): Promise<Channel>;
48
50
  edit(channelId: string, options: ChannelEditOptions): Promise<Channel>;
49
51
  deleteChannel(channelId: string): Promise<void>;
52
+ /** Evicts a channel, dropping its per-channel message manager with it.
53
+ * Overrides {@link Manager.delete} so cache eviction driven by a Gateway
54
+ * `CHANNEL_DELETE`/`THREAD_DELETE` — which calls `delete` rather than
55
+ * {@link deleteChannel} — releases the message manager and its cached
56
+ * messages too, instead of retaining them for the client's lifetime. */
57
+ delete(channelId: string): boolean;
50
58
  send(channelId: string, options: MessageCreateOptions): Promise<Message>;
51
59
  sendMessage(channelId: string, options: MessageCreateOptions): Promise<Message>;
52
60
  fetchMessage(channelId: string, messageId: string, options?: MessageFetchOptions): Promise<Message>;
@@ -56,6 +64,8 @@ export declare class ChannelManager extends Manager<string, Channel> {
56
64
  deleteMessage(channelId: string, messageId: string): Promise<void>;
57
65
  deleteCachedMessage(channelId: string, messageId: string): boolean;
58
66
  crosspostMessage(channelId: string, messageId: string): Promise<Message>;
67
+ /** Bulk-deletes messages in a channel.
68
+ * @throws {RangeError} If fewer than 2 or more than 100 message IDs are provided. */
59
69
  bulkDeleteMessages(channelId: string, messageIds: Iterable<string>): Promise<void>;
60
70
  addReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
61
71
  fetchReactions(channelId: string, messageId: string, emoji: string, options?: ReactionFetchOptions): Promise<User[]>;
@@ -66,7 +76,26 @@ export declare class ChannelManager extends Manager<string, Channel> {
66
76
  pinMessage(channelId: string, messageId: string): Promise<void>;
67
77
  unpinMessage(channelId: string, messageId: string): Promise<void>;
68
78
  createThreadFromMessage(channelId: string, messageId: string, options: MessageThreadOptions): Promise<Channel>;
69
- delete(channelId: string): boolean;
79
+ /**
80
+ * Fetches a page of messages with cursor metadata.
81
+ * @param channelId Channel to fetch from.
82
+ * @param options Page options — `before`, `after`, `around`, and `limit` (max 100).
83
+ * @returns `{ messages, before, after, hasMore }` — use `before` or `after` as cursors for the next page.
84
+ */
85
+ fetchPage(channelId: string, options?: MessageQueryOptions): Promise<{
86
+ messages: Message[];
87
+ before?: string;
88
+ after?: string;
89
+ hasMore: boolean;
90
+ }>;
91
+ /**
92
+ * Bulk-deletes 2–100 messages from a channel.
93
+ * Only messages younger than 14 days are accepted by Discord.
94
+ * @param channelId Channel to delete from.
95
+ * @param messageIds Array of message IDs to delete.
96
+ * @throws {RangeError} If fewer than 2 or more than 100 IDs are provided.
97
+ */
98
+ bulkDelete(channelId: string, messageIds: string[]): Promise<void>;
70
99
  clear(): void;
71
100
  }
72
101
  export type CreateMessageOptions = MessageCreateOptions;
@@ -75,3 +104,4 @@ export { ThreadManager } from "./thread.js";
75
104
  export { RoleManager, type RoleCreateOptions, type RoleEditOptions, } from "./role.js";
76
105
  export { GuildMemberManager, type MemberEditOptions, type BanOptions, } from "./member.js";
77
106
  export { ApplicationCommandManager } from "./application.js";
107
+ export { EmojiManager, type EmojiCreateOptions, type EmojiEditOptions } from "./emoji.js";