disgroove 1.0.9 → 1.1.1-dev

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 (103) hide show
  1. package/README.md +43 -10
  2. package/dist/Client.d.ts +236 -0
  3. package/dist/Client.js +770 -0
  4. package/dist/Client.js.map +1 -0
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/rest/REST.d.ts +34 -3
  9. package/dist/rest/REST.js +27 -53
  10. package/dist/rest/REST.js.map +1 -1
  11. package/dist/rest/RequestsManager.d.ts +26 -0
  12. package/dist/rest/RequestsManager.js +102 -0
  13. package/dist/rest/RequestsManager.js.map +1 -0
  14. package/dist/rest/index.d.ts +1 -0
  15. package/dist/rest/index.js +1 -0
  16. package/dist/rest/index.js.map +1 -1
  17. package/dist/structures/Application.d.ts +16 -1
  18. package/dist/structures/Application.js +30 -30
  19. package/dist/structures/Application.js.map +1 -1
  20. package/dist/structures/ApplicationCommand.d.ts +5 -1
  21. package/dist/structures/ApplicationCommand.js +10 -10
  22. package/dist/structures/ApplicationCommand.js.map +1 -1
  23. package/dist/structures/AutoModerationRule.d.ts +3 -1
  24. package/dist/structures/AutoModerationRule.js +4 -4
  25. package/dist/structures/AutoModerationRule.js.map +1 -1
  26. package/dist/structures/Base.d.ts +1 -1
  27. package/dist/structures/Channel.d.ts +41 -1
  28. package/dist/structures/Channel.js +80 -80
  29. package/dist/structures/Channel.js.map +1 -1
  30. package/dist/structures/Guild.d.ts +79 -1
  31. package/dist/structures/Guild.js +164 -174
  32. package/dist/structures/Guild.js.map +1 -1
  33. package/dist/structures/GuildMember.d.ts +7 -1
  34. package/dist/structures/GuildMember.js +12 -12
  35. package/dist/structures/GuildMember.js.map +1 -1
  36. package/dist/structures/GuildScheduledEvent.d.ts +4 -1
  37. package/dist/structures/GuildScheduledEvent.js +6 -6
  38. package/dist/structures/GuildScheduledEvent.js.map +1 -1
  39. package/dist/structures/GuildTemplate.d.ts +4 -1
  40. package/dist/structures/GuildTemplate.js +6 -6
  41. package/dist/structures/GuildTemplate.js.map +1 -1
  42. package/dist/structures/Integration.d.ts +2 -1
  43. package/dist/structures/Integration.js +2 -2
  44. package/dist/structures/Integration.js.map +1 -1
  45. package/dist/structures/Interaction.d.ts +9 -1
  46. package/dist/structures/Interaction.js +18 -18
  47. package/dist/structures/Interaction.js.map +1 -1
  48. package/dist/structures/Invite.d.ts +2 -1
  49. package/dist/structures/Invite.js +2 -2
  50. package/dist/structures/Invite.js.map +1 -1
  51. package/dist/structures/Message.d.ts +11 -1
  52. package/dist/structures/Message.js +20 -20
  53. package/dist/structures/Message.js.map +1 -1
  54. package/dist/structures/Role.d.ts +2 -1
  55. package/dist/structures/Role.js +2 -2
  56. package/dist/structures/Role.js.map +1 -1
  57. package/dist/structures/StageInstance.d.ts +3 -1
  58. package/dist/structures/StageInstance.js +4 -4
  59. package/dist/structures/StageInstance.js.map +1 -1
  60. package/dist/structures/User.d.ts +9 -1
  61. package/dist/structures/User.js +16 -18
  62. package/dist/structures/User.js.map +1 -1
  63. package/dist/structures/Webhook.d.ts +11 -1
  64. package/dist/structures/Webhook.js +20 -20
  65. package/dist/structures/Webhook.js.map +1 -1
  66. package/dist/types/application-command.d.ts +5 -0
  67. package/dist/types/application-role-connection-metadata.d.ts +1 -0
  68. package/dist/types/application.d.ts +2 -0
  69. package/dist/types/audit-log.d.ts +4 -0
  70. package/dist/types/auto-moderation.d.ts +6 -0
  71. package/dist/types/channel.d.ts +23 -0
  72. package/dist/types/emoji.d.ts +1 -0
  73. package/dist/types/gateway-events.d.ts +38 -0
  74. package/dist/types/guild-scheduled-event.d.ts +3 -0
  75. package/dist/types/guild-template.d.ts +1 -0
  76. package/dist/types/guild.d.ts +14 -0
  77. package/dist/types/interaction.d.ts +7 -0
  78. package/dist/types/invite.d.ts +3 -0
  79. package/dist/types/message-components.d.ts +4 -0
  80. package/dist/types/role.d.ts +2 -0
  81. package/dist/types/stage-instance.d.ts +1 -0
  82. package/dist/types/sticker.d.ts +3 -0
  83. package/dist/types/team.d.ts +2 -0
  84. package/dist/types/user.d.ts +3 -0
  85. package/dist/types/voice.d.ts +2 -0
  86. package/dist/types/webhook.d.ts +1 -0
  87. package/dist/utils/constants.d.ts +71 -0
  88. package/dist/utils/constants.js +71 -71
  89. package/dist/utils/constants.js.map +1 -1
  90. package/dist/utils/jsoners.d.ts +1 -1
  91. package/package.json +30 -27
  92. package/dist/class/Client.d.ts +0 -170
  93. package/dist/class/Client.js +0 -724
  94. package/dist/class/Client.js.map +0 -1
  95. package/dist/class/index.d.ts +0 -1
  96. package/dist/class/index.js +0 -18
  97. package/dist/class/index.js.map +0 -1
  98. package/dist/structures/AuditLogEntry.d.ts +0 -15
  99. package/dist/structures/AuditLogEntry.js +0 -52
  100. package/dist/structures/AuditLogEntry.js.map +0 -1
  101. package/dist/types/oauth2.d.ts +0 -14
  102. package/dist/types/oauth2.js +0 -3
  103. package/dist/types/oauth2.js.map +0 -1
package/README.md CHANGED
@@ -27,26 +27,59 @@ const client = new Client("token", {
27
27
  ### Example
28
28
 
29
29
  ```js
30
- const { Client, GatewayIntents, GatewayEvents } = require("disgroove");
30
+ const {
31
+ Client,
32
+ GatewayIntents,
33
+ GatewayEvents,
34
+ ActivityType,
35
+ StatusTypes,
36
+ InteractionType,
37
+ InteractionCallbackType,
38
+ MessageFlags,
39
+ } = require("disgroove");
31
40
  const client = new Client("token", {
32
41
  intents: GatewayIntents.All,
33
42
  });
34
43
 
35
44
  client.on(GatewayEvents.Ready, async () => {
36
- const user = await client.getUser();
45
+ const user = await client.getUser(); // Get the bot user
37
46
 
38
- console.log(`${user.username} is ready`);
47
+ console.log(`${user.username} is now online!`); // Print "Username is now online!" when the bot connects to the gateway
48
+
49
+ const application = await client.getApplication(); // Get the bot application
50
+
51
+ await application.createGlobalApplicationCommand({
52
+ name: "ping",
53
+ description: "Reply with Pong! �",
54
+ }); // Create a global application command named "ping"
55
+
56
+ client.updatePresence({
57
+ activities: [
58
+ {
59
+ name: "/ping",
60
+ type: ActivityType.Watching,
61
+ createdAt: Date.now(),
62
+ },
63
+ ],
64
+ status: StatusTypes.Online,
65
+ afk: false,
66
+ }); // Update the bot presence to "Watching /ping"
39
67
  });
40
68
 
41
- client.on(GatewayEvents.MessageCreate, async (message) => {
42
- if (message.content === "!ping") {
43
- const channel = await client.getChannel(message.channelId);
69
+ client.on(GatewayEvents.InteractionCreate, async (interaction) => {
70
+ if (interaction.type !== InteractionType.ApplicationCommand) return; // Check if the interaction is an application command
44
71
 
45
- await channel.createMessage({
46
- content: "Pong! ",
47
- });
72
+ if (interaction.data.name === "ping") {
73
+ // Check if the application command name is equals to "ping"
74
+ await interaction.createResponse({
75
+ type: InteractionCallbackType.ChannelMessageWithSource,
76
+ data: {
77
+ content: "Pong! �",
78
+ flags: MessageFlags.Ephemeral,
79
+ },
80
+ }); // Reply with an ephemeral message "Pong! �"
48
81
  }
49
82
  });
50
83
 
51
- client.connect();
84
+ client.connect(); // Connect the bot to the gateway
52
85
  ```
@@ -0,0 +1,236 @@
1
+ /// <reference types="node" />
2
+ import WebSocket from "ws";
3
+ import { type DefaultMessageNotificationLevel, type ExplicitContentFilterLevel, GatewayIntents, type GuildFeatures, type OAuth2Scopes, type PrivacyLevel, StatusTypes, type SystemChannelFlags, type VerificationLevel } from "./utils";
4
+ import { REST } from "./rest";
5
+ import { Application, AutoModerationRule, Channel, Guild, GuildMember, GuildScheduledEvent, Integration, Interaction, Invite, Message, Role, StageInstance, User } from "./structures";
6
+ import type { JSONActivity, JSONAuditLogEntry, JSONAutoModerationActionExectionEventFields, JSONAutoModerationRule, JSONChannel, JSONChannelPinsUpdateEventFields, JSONGuildApplicationCommandPermissions, JSONGuildBanAddEventFields, JSONGuildBanRemoveEventFields, JSONGuildDeleteEventFields, JSONGuildEmojisUpdateEventFields, JSONGuildIntegrationsUpdateEventFields, JSONGuildMemberRemoveEventFields, JSONGuildMemberUpdateEventFields, JSONGuildMembersChunkEventFields, JSONGuildRoleDeleteEventFields, JSONGuildRoleUpdateEventFields, JSONGuildScheduledEvent, JSONGuildScheduledEventUserAddEventFields, JSONGuildScheduledEventUserRemoveEventFields, JSONGuildStickersUpdateEventFields, JSONIntegrationDeleteEventFields, JSONInvite, JSONInviteCreateEventFields, JSONInviteDeleteEventFields, JSONMessageDeleteBulkEventFields, JSONMessageDeleteEventFields, JSONMessageReactionAddEventFields, JSONMessageReactionRemoveAllEventFields, JSONMessageReactionRemoveEmojiEventFields, JSONMessageReactionRemoveEventFields, JSONPresenceUpdateEventFields, JSONRole, JSONStageInstance, JSONStickerPack, JSONThreadListSyncEventFields, JSONThreadMember, JSONThreadMembersUpdateEventFields, JSONTypingStartEventFields, JSONVoiceRegion, JSONVoiceServerUpdateEventFields, JSONVoiceState, JSONWebhooksUpdateEventFields } from "./types";
7
+ import EventEmitter from "node:events";
8
+ export interface ClientOptions {
9
+ intents?: GatewayIntents | number;
10
+ auth?: "Bot" | "Bearer";
11
+ presence?: {
12
+ activities: Array<JSONActivity>;
13
+ status: StatusTypes;
14
+ afk: boolean;
15
+ };
16
+ }
17
+ export interface ClientEvents {
18
+ hello: [
19
+ {
20
+ heartbeatInterval: number;
21
+ }
22
+ ];
23
+ ready: [];
24
+ resumed: [];
25
+ reconnect: [];
26
+ invalidSession: [];
27
+ applicationCommandPermissionsUpdate: [
28
+ applicationCommandPermissions: JSONGuildApplicationCommandPermissions
29
+ ];
30
+ autoModerationRuleCreate: [autoModerationRule: AutoModerationRule];
31
+ autoModerationRuleUpdate: [autoModerationRule: AutoModerationRule];
32
+ autoModerationRuleDelete: [autoModerationRule: JSONAutoModerationRule];
33
+ autoModerationActionExecution: [
34
+ autoModerationAction: JSONAutoModerationActionExectionEventFields
35
+ ];
36
+ channelCreate: [channel: Channel];
37
+ channelUpdate: [channel: Channel];
38
+ channelDelete: [channel: JSONChannel];
39
+ threadCreate: [channel: Channel];
40
+ threadUpdate: [channel: Channel];
41
+ threadDelete: [channel: JSONChannel];
42
+ threadListSync: [threadList: JSONThreadListSyncEventFields];
43
+ threadMemberUpdate: [
44
+ threadMember: JSONThreadMember & {
45
+ guildId: string;
46
+ }
47
+ ];
48
+ threadMembersUpdate: [threadMembers: JSONThreadMembersUpdateEventFields];
49
+ channelPinsUpdate: [channelPins: JSONChannelPinsUpdateEventFields];
50
+ guildCreate: [guild: Guild];
51
+ guildUpdate: [guild: Guild];
52
+ guildDelete: [guild: JSONGuildDeleteEventFields];
53
+ guildAuditLogEntryCreate: [auditLogEntry: JSONAuditLogEntry];
54
+ guildBanAdd: [guildBan: JSONGuildBanAddEventFields];
55
+ guildBanRemove: [guildBan: JSONGuildBanRemoveEventFields];
56
+ guildEmojisUpdate: [guildEmojis: JSONGuildEmojisUpdateEventFields];
57
+ guildStickersUpdate: [guildStickers: JSONGuildStickersUpdateEventFields];
58
+ guildIntegrationsUpdate: [
59
+ guildIntergrations: JSONGuildIntegrationsUpdateEventFields
60
+ ];
61
+ guildMemberAdd: [guildMember: GuildMember];
62
+ guildMemberRemove: [guildMember: JSONGuildMemberRemoveEventFields];
63
+ guildMemberUpdate: [guildMember: JSONGuildMemberUpdateEventFields];
64
+ guildMembersChunk: [guildMembers: JSONGuildMembersChunkEventFields];
65
+ guildRoleCreate: [role: Role];
66
+ guildRoleUpdate: [role: JSONGuildRoleUpdateEventFields];
67
+ guildRoleDelete: [role: JSONGuildRoleDeleteEventFields];
68
+ guildScheduledEventCreate: [guildScheduledEvent: GuildScheduledEvent];
69
+ guildScheduledEventUpdate: [guildScheduledEvent: GuildScheduledEvent];
70
+ guildScheduledEventDelete: [guildScheduledEvent: JSONGuildScheduledEvent];
71
+ guildScheduledEventUserAdd: [
72
+ guildScheduledEvent: JSONGuildScheduledEventUserAddEventFields
73
+ ];
74
+ guildScheduledEventUserRemove: [
75
+ guildScheduledEvent: JSONGuildScheduledEventUserRemoveEventFields
76
+ ];
77
+ integrationCreate: [integration: Integration];
78
+ integrationUpdate: [integration: Integration];
79
+ integrationDelete: [integration: JSONIntegrationDeleteEventFields];
80
+ inviteCreate: [invite: JSONInviteCreateEventFields];
81
+ inviteDelete: [invite: JSONInviteDeleteEventFields];
82
+ messageCreate: [message: Message];
83
+ messageUpdate: [message: Message];
84
+ messageDelete: [message: JSONMessageDeleteEventFields];
85
+ messageDeleteBulk: [message: JSONMessageDeleteBulkEventFields];
86
+ messageReactionAdd: [message: JSONMessageReactionAddEventFields];
87
+ messageReactionRemove: [message: JSONMessageReactionRemoveEventFields];
88
+ messageReactionRemoveAll: [message: JSONMessageReactionRemoveAllEventFields];
89
+ messageReactionRemoveEmoji: [
90
+ message: JSONMessageReactionRemoveEmojiEventFields
91
+ ];
92
+ presenceUpdate: [guild: JSONPresenceUpdateEventFields];
93
+ typingStart: [channel: JSONTypingStartEventFields];
94
+ userUpdate: [user: User];
95
+ voiceStateUpdate: [member: JSONVoiceState];
96
+ voiceServerUpdate: [listener: JSONVoiceServerUpdateEventFields];
97
+ webhooksUpdate: [guild: JSONWebhooksUpdateEventFields];
98
+ interactionCreate: [interaction: Interaction];
99
+ stageInstanceCreate: [instance: StageInstance];
100
+ stageInstanceUpdate: [instance: StageInstance];
101
+ stageInstanceDelete: [instance: JSONStageInstance];
102
+ }
103
+ export declare interface Client extends EventEmitter {
104
+ addListener<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
105
+ emit<K extends keyof ClientEvents>(eventName: K, ...args: ClientEvents[K]): boolean;
106
+ listenerCount(eventName: keyof ClientEvents): number;
107
+ listeners(eventName: keyof ClientEvents): Array<Function>;
108
+ off<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
109
+ on<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
110
+ once<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
111
+ prependListener<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
112
+ prependOnceListener<K extends keyof ClientEvents>(eventName: K, listener: (...args: ClientEvents[K]) => void): this;
113
+ rawListeners(eventName: keyof ClientEvents): Array<Function>;
114
+ removeAllListeners(event?: keyof ClientEvents): this;
115
+ removeListener<K extends keyof ClientEvents>(eveventName: K, listener: (...args: ClientEvents[K]) => void): this;
116
+ }
117
+ export declare class Client extends EventEmitter {
118
+ private heartbeatInterval;
119
+ token: string;
120
+ intents: GatewayIntents | number;
121
+ auth: "Bot" | "Bearer";
122
+ presence?: {
123
+ activities: Array<JSONActivity>;
124
+ status: StatusTypes;
125
+ afk: boolean;
126
+ };
127
+ rest: REST;
128
+ ws: WebSocket;
129
+ constructor(token: string, options?: ClientOptions);
130
+ /** https://discord.com/developers/docs/resources/application#get-current-application */
131
+ getApplication(): Promise<Application>;
132
+ /** https://discord.com/developers/docs/resources/channel#get-channel */
133
+ getChannel(channelId: string): Promise<Channel>;
134
+ /** https://discord.com/developers/docs/resources/guild#create-guild */
135
+ createGuild(options: {
136
+ name: string;
137
+ region?: string | null;
138
+ icon?: string;
139
+ verificationLevel?: VerificationLevel;
140
+ defaultMessageNotifications?: DefaultMessageNotificationLevel;
141
+ explicitContentFilter?: ExplicitContentFilterLevel;
142
+ roles?: Array<JSONRole>;
143
+ channels?: Array<JSONChannel>;
144
+ afkChannelId?: string;
145
+ afkTimeout?: number;
146
+ systemChannelId?: string;
147
+ systemChannelFlags?: SystemChannelFlags;
148
+ }): Promise<Guild>;
149
+ /** https://discord.com/developers/docs/resources/guild#get-guild */
150
+ getGuild(guildId: string, options?: {
151
+ withCounts?: boolean;
152
+ }): Promise<Guild>;
153
+ /** https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template */
154
+ createGuildFromTemplate(code: string, options: {
155
+ name: string;
156
+ icon?: string;
157
+ }): Promise<Guild>;
158
+ /** https://discord.com/developers/docs/resources/invite#get-invite */
159
+ getInvite(code: string, options?: {
160
+ withCounts?: boolean;
161
+ withExpiration?: boolean;
162
+ guildScheduledEventId?: string;
163
+ }): Promise<Invite>;
164
+ /** https://discord.com/developers/docs/resources/invite#delete-invite */
165
+ deleteInvite(code: string, reason?: string): Promise<JSONInvite>;
166
+ /** https://discord.com/developers/docs/resources/stage-instance#create-stage-instance */
167
+ createStageInstance(options: {
168
+ channelId: string;
169
+ topic: string;
170
+ privacyLevel?: PrivacyLevel;
171
+ sendStartNotifications?: boolean;
172
+ }, reason?: string): Promise<StageInstance>;
173
+ /** https://discord.com/developers/docs/resources/stage-instance#get-stage-instance */
174
+ getStageInstance(channelId: string): Promise<StageInstance>;
175
+ /** https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs */
176
+ listNitroStickerPacks(): Promise<{
177
+ stickerPacks: Array<JSONStickerPack>;
178
+ }>;
179
+ /** https://discord.com/developers/docs/resources/user#get-user */
180
+ getUser(userId?: string): Promise<User>;
181
+ /** https://discord.com/developers/docs/resources/user#get-current-user-guilds */
182
+ getGuilds(options?: {
183
+ before?: string;
184
+ after?: string;
185
+ limit?: number;
186
+ withCounts?: boolean;
187
+ }): Promise<Array<{
188
+ id: string;
189
+ name: string;
190
+ icon: string;
191
+ owner: boolean;
192
+ permissions: string;
193
+ features: Array<GuildFeatures>;
194
+ approximate_member_count: number;
195
+ approximate_presence_count: number;
196
+ }>>;
197
+ /** https://discord.com/developers/docs/resources/voice#list-voice-regions */
198
+ listVoiceRegions(): Promise<Array<JSONVoiceRegion>>;
199
+ /** https://discord.com/developers/docs/topics/gateway#get-gateway */
200
+ getGateway(): Promise<{
201
+ url: string;
202
+ }>;
203
+ /** https://discord.com/developers/docs/topics/gateway#get-gateway-bot */
204
+ getGatewayBot(): Promise<{
205
+ url: string;
206
+ shards: number;
207
+ sessionStartLimit: {
208
+ total: number;
209
+ remaining: number;
210
+ resetAfter: number;
211
+ maxConcurrency: number;
212
+ };
213
+ }>;
214
+ /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
215
+ updatePresence(options: {
216
+ activities: Array<JSONActivity>;
217
+ status: StatusTypes;
218
+ afk: boolean;
219
+ }): void;
220
+ /** https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information */
221
+ getOAuth2Application(): Promise<Application>;
222
+ /** https://discord.com/developers/docs/topics/oauth2#get-current-authorization-information */
223
+ getOAuth2Authorization(): Promise<{
224
+ application: Application;
225
+ scopes: Array<OAuth2Scopes>;
226
+ expires: number;
227
+ user?: User;
228
+ }>;
229
+ /** https://discord.com/developers/docs/topics/gateway#connections */
230
+ connect(): void;
231
+ disconnect(): void;
232
+ private onWebSocketOpen;
233
+ private onWebSocketMessage;
234
+ private onWebSocketError;
235
+ private onWebSocketClose;
236
+ }