disgroove 3.0.0-dev.fd521a8 → 3.0.1-dev.739a5a9
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.
- package/LICENSE +9 -9
- package/README.md +48 -48
- package/dist/lib/Client.d.ts +68 -58
- package/dist/lib/Client.js +59 -23
- package/dist/lib/constants.d.ts +17 -4
- package/dist/lib/constants.js +18 -4
- package/dist/lib/gateway/Dispatcher.d.ts +104 -0
- package/dist/lib/gateway/Dispatcher.js +471 -0
- package/dist/lib/gateway/Shard.d.ts +10 -22
- package/dist/lib/gateway/Shard.js +123 -656
- package/dist/lib/gateway/Transmitter.d.ts +22 -0
- package/dist/lib/gateway/Transmitter.js +93 -0
- package/dist/lib/rest/Endpoints.d.ts +3 -0
- package/dist/lib/rest/Endpoints.js +10 -3
- package/dist/lib/rest/RequestManager.js +21 -7
- package/dist/lib/rest/index.js +17 -7
- package/dist/lib/transformers/Components.d.ts +3 -1
- package/dist/lib/transformers/Components.js +26 -0
- package/dist/lib/transformers/Guilds.d.ts +2 -0
- package/dist/lib/transformers/Guilds.js +134 -0
- package/dist/lib/transformers/Interactions.js +30 -0
- package/dist/lib/transformers/Invites.js +2 -2
- package/dist/lib/transformers/Presences.d.ts +3 -3
- package/dist/lib/types/components.d.ts +36 -4
- package/dist/lib/types/gateway-events.d.ts +201 -75
- package/dist/lib/types/interaction.d.ts +3 -3
- package/dist/lib/types/invite.d.ts +5 -2
- package/dist/lib/utils/errors.d.ts +3 -1
- package/dist/lib/utils/errors.js +4 -0
- package/dist/lib/utils/formatters.js +9 -10
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +18 -7
- package/dist/lib/utils/permissions.d.ts +2 -0
- package/dist/lib/utils/permissions.js +7 -0
- package/dist/package.json +5 -5
- package/package.json +6 -6
- package/dist/lib/types/message-components.d.ts +0 -450
- package/dist/lib/types/message-components.js +0 -2
package/LICENSE
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright © 2024 XenKys
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
-
|
|
7
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
-
|
|
9
|
-
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright © 2024 XenKys
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# disgroove
|
|
2
|
-
|
|
3
|
-
A module to interface with Discord
|
|
4
|
-
|
|
5
|
-
- Fast
|
|
6
|
-
- Lightweight
|
|
7
|
-
- Flexible
|
|
8
|
-
- 100% coverage of the [Official Discord API Documentation](https://discord.com/developers/docs/intro)
|
|
9
|
-
|
|
10
|
-
## Example
|
|
11
|
-
|
|
12
|
-
```js
|
|
13
|
-
const {
|
|
14
|
-
Client,
|
|
15
|
-
GatewayIntents,
|
|
16
|
-
InteractionType,
|
|
17
|
-
InteractionCallbackType,
|
|
18
|
-
MessageFlags,
|
|
19
|
-
} = require("disgroove");
|
|
20
|
-
const client = new Client("B0t.T0k3N");
|
|
21
|
-
|
|
22
|
-
client.once("ready", () => {
|
|
23
|
-
console.log("Logged in as", client.user.username);
|
|
24
|
-
|
|
25
|
-
client.createGlobalApplicationCommand(client.application.id, {
|
|
26
|
-
name: "ping",
|
|
27
|
-
description: "Pong!",
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
client.on("interactionCreate", async (interaction) => {
|
|
32
|
-
if (interaction.type !== InteractionType.ApplicationCommand) return;
|
|
33
|
-
|
|
34
|
-
if (interaction.data.name === "ping") {
|
|
35
|
-
client.createInteractionResponse(interaction.id, interaction.token, {
|
|
36
|
-
type: InteractionCallbackType.ChannelMessageWithSource,
|
|
37
|
-
data: {
|
|
38
|
-
content: "Pong! 🏓",
|
|
39
|
-
flags: MessageFlags.Ephemeral,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
client.connect();
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
More examples on the [GitHub repository](https://github.com/sergiogotuzzo/disgroove/tree/main/examples)
|
|
1
|
+
# disgroove
|
|
2
|
+
|
|
3
|
+
A module to interface with Discord
|
|
4
|
+
|
|
5
|
+
- Fast
|
|
6
|
+
- Lightweight
|
|
7
|
+
- Flexible
|
|
8
|
+
- 100% coverage of the [Official Discord API Documentation](https://discord.com/developers/docs/intro)
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
const {
|
|
14
|
+
Client,
|
|
15
|
+
GatewayIntents,
|
|
16
|
+
InteractionType,
|
|
17
|
+
InteractionCallbackType,
|
|
18
|
+
MessageFlags,
|
|
19
|
+
} = require("disgroove");
|
|
20
|
+
const client = new Client("B0t.T0k3N");
|
|
21
|
+
|
|
22
|
+
client.once("ready", () => {
|
|
23
|
+
console.log("Logged in as", client.user.username);
|
|
24
|
+
|
|
25
|
+
client.createGlobalApplicationCommand(client.application.id, {
|
|
26
|
+
name: "ping",
|
|
27
|
+
description: "Pong!",
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
client.on("interactionCreate", async (interaction) => {
|
|
32
|
+
if (interaction.type !== InteractionType.ApplicationCommand) return;
|
|
33
|
+
|
|
34
|
+
if (interaction.data.name === "ping") {
|
|
35
|
+
client.createInteractionResponse(interaction.id, interaction.token, {
|
|
36
|
+
type: InteractionCallbackType.ChannelMessageWithSource,
|
|
37
|
+
data: {
|
|
38
|
+
content: "Pong! 🏓",
|
|
39
|
+
flags: MessageFlags.Ephemeral,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
client.connect();
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
More examples on the [GitHub repository](https://github.com/sergiogotuzzo/disgroove/tree/main/examples)
|
package/dist/lib/Client.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
import { GatewayIntents, type OAuth2Scopes, type ActionTypes, type ImageWidgetStyleOptions, type ReactionTypes, type ApplicationCommandTypes, type EventTypes, type TriggerTypes, type ChannelTypes, type VideoQualityModes, type SortOrderTypes, type ForumLayoutTypes, type InviteTargetTypes, type VerificationLevel, type DefaultMessageNotificationLevel, type ExplicitContentFilterLevel, type SystemChannelFlags, type ApplicationFlags, type ApplicationIntegrationTypes, type ChannelFlags, type GuildFeatures, type GuildScheduledEventEntityTypes, type GuildScheduledEventPrivacyLevel, type GuildScheduledEventStatus, type MessageFlags, type OnboardingMode, type PrivacyLevel, type GuildMemberFlags, type InteractionContextTypes, type LobbyMemberFlags } from "./constants";
|
|
1
|
+
import { GatewayIntents, type OAuth2Scopes, type ActionTypes, type ImageWidgetStyleOptions, type ReactionTypes, type ApplicationCommandTypes, type EventTypes, type TriggerTypes, type ChannelTypes, type VideoQualityModes, type SortOrderTypes, type ForumLayoutTypes, type InviteTargetTypes, type VerificationLevel, type DefaultMessageNotificationLevel, type ExplicitContentFilterLevel, type SystemChannelFlags, type ApplicationFlags, type ApplicationIntegrationTypes, type ChannelFlags, type GuildFeatures, type GuildScheduledEventEntityTypes, type GuildScheduledEventPrivacyLevel, type GuildScheduledEventStatus, type MessageFlags, type OnboardingMode, type PrivacyLevel, type GuildMemberFlags, type InteractionContextTypes, type LobbyMemberFlags, InviteTargetUsersJobStatusErrorCodes } from "./constants";
|
|
5
2
|
import { RequestManager, type FileData } from "./rest";
|
|
6
3
|
import EventEmitter from "node:events";
|
|
7
4
|
import { Shard } from "./gateway";
|
|
@@ -14,7 +11,7 @@ import type { Channel, FollowedChannel, ThreadMember, Overwrite, DefaultReaction
|
|
|
14
11
|
import type { LocaleMap, snowflake, timestamp } from "./types/common";
|
|
15
12
|
import type { Emoji } from "./types/emoji";
|
|
16
13
|
import type { Entitlement } from "./types/entitlements";
|
|
17
|
-
import type {
|
|
14
|
+
import type { AutoModerationActionExecutionEvent, ChannelPinsUpdateEvent, ThreadListSyncEvent, ThreadMemberUpdateEventExtra, ThreadMembersUpdateEvent, GuildCreateEventExtra, GuildAuditLogEntryCreateExtra, GuildBanAddEvent, GuildBanRemoveEvent, GuildMemberAddEventExtra, GuildMemberRemoveEvent, GuildMemberUpdateEvent, GuildMembersChunkEvent, IntegrationCreateEventExtra, IntegrationUpdateEventExtra, IntegrationDeleteEvent, InviteCreateEvent, InviteDeleteEvent, MessageCreateEventExtra, MessageDeleteEvent, MessageDeleteBulkEvent, MessageReactionAddEvent, MessageReactionRemoveEvent, MessageReactionRemoveAllEvent, MessageReactionRemoveEmojiEvent, PresenceUpdateEvent, TypingStartEvent, VoiceServerUpdateEvent, MessagePollVoteAddEvent, MessagePollVoteRemoveEvent, GatewayPresenceUpdate, RawPayload, IdentifyConnectionProperties, VoiceChannelEffectSendEvent, GuildSoundboardSoundDeleteEvent, RateLimitedEvent } from "./types/gateway-events";
|
|
18
15
|
import type { Guild, GuildMember, WelcomeScreen, GuildWidgetSettings, Ban, Integration, GuildOnboarding, GuildPreview, GuildWidget, UnavailableGuild, OnboardingPrompt, WelcomeScreenChannel, IncidentsData } from "./types/guild";
|
|
19
16
|
import type { GuildScheduledEvent, GuildScheduledEventUser, GuildScheduledEventEntityMetadata, GuildScheduledEventRecurrenceRule } from "./types/guild-scheduled-event";
|
|
20
17
|
import type { GuildTemplate } from "./types/guild-template";
|
|
@@ -44,6 +41,7 @@ export interface GatewayOptions {
|
|
|
44
41
|
export interface ClientOptions {
|
|
45
42
|
shardsCount?: number | "auto";
|
|
46
43
|
auth?: "Bot" | "Bearer";
|
|
44
|
+
reconnect?: boolean;
|
|
47
45
|
gateway?: GatewayOptions;
|
|
48
46
|
ws?: WebSocketOptions;
|
|
49
47
|
}
|
|
@@ -56,9 +54,10 @@ export declare class Client extends EventEmitter {
|
|
|
56
54
|
intents: GatewayIntents | number;
|
|
57
55
|
shardsCount: number | "auto";
|
|
58
56
|
auth: "Bot" | "Bearer";
|
|
57
|
+
reconnect: boolean;
|
|
59
58
|
shards: Map<number, Shard>;
|
|
60
59
|
rest: RequestManager;
|
|
61
|
-
guildShardMap:
|
|
60
|
+
guildShardMap: Map<string, number>;
|
|
62
61
|
user: User | null;
|
|
63
62
|
guilds: Map<string, Guild>;
|
|
64
63
|
application: Pick<Application, "id" | "flags"> | null;
|
|
@@ -80,7 +79,7 @@ export declare class Client extends EventEmitter {
|
|
|
80
79
|
/** https://discord.com/developers/docs/resources/guild#add-guild-member-role */
|
|
81
80
|
addGuildMemberRole(guildId: snowflake, userId: snowflake, roleId: snowflake, reason?: string): void;
|
|
82
81
|
/** https://discord.com/developers/docs/resources/lobby#add-a-member-to-a-lobby */
|
|
83
|
-
addLobbyMember(lobbyId: snowflake, userId: snowflake, options
|
|
82
|
+
addLobbyMember(lobbyId: snowflake, userId: snowflake, options?: {
|
|
84
83
|
metadata?: Record<string, string> | null;
|
|
85
84
|
flags?: LobbyMemberFlags;
|
|
86
85
|
}): Promise<LobbyMember>;
|
|
@@ -182,6 +181,8 @@ export declare class Client extends EventEmitter {
|
|
|
182
181
|
targetType?: InviteTargetTypes;
|
|
183
182
|
targetUserId?: snowflake;
|
|
184
183
|
targetApplicationId?: snowflake;
|
|
184
|
+
targetUsersFile?: FileData;
|
|
185
|
+
rolesIds?: Array<snowflake>;
|
|
185
186
|
}, reason?: string): Promise<Invite>;
|
|
186
187
|
/** https://discord.com/developers/docs/resources/webhook#create-webhook */
|
|
187
188
|
createChannelWebhook(channelId: snowflake, options: {
|
|
@@ -295,7 +296,7 @@ export declare class Client extends EventEmitter {
|
|
|
295
296
|
withResponse?: boolean;
|
|
296
297
|
}): Promise<void | InteractionCallbackResponse>;
|
|
297
298
|
/** https://discord.com/developers/docs/resources/lobby#create-lobby */
|
|
298
|
-
createLobby(options
|
|
299
|
+
createLobby(options?: {
|
|
299
300
|
metadata?: Record<string, string> | null;
|
|
300
301
|
members?: Array<Pick<LobbyMember, "id" | "metadata" | "flags">>;
|
|
301
302
|
idleTimeoutSeconds?: number;
|
|
@@ -835,7 +836,7 @@ export declare class Client extends EventEmitter {
|
|
|
835
836
|
/** https://discord.com/developers/docs/interactions/application-commands#get-global-application-command */
|
|
836
837
|
getGlobalApplicationCommand(applicationId: snowflake, commandId: snowflake): Promise<ApplicationCommand>;
|
|
837
838
|
/** https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands */
|
|
838
|
-
getGlobalApplicationCommands(applicationId: snowflake, options
|
|
839
|
+
getGlobalApplicationCommands(applicationId: snowflake, options?: {
|
|
839
840
|
withLocalizations?: boolean;
|
|
840
841
|
}): Promise<Array<ApplicationCommand>>;
|
|
841
842
|
/** https://discord.com/developers/docs/resources/guild#get-guild */
|
|
@@ -876,7 +877,7 @@ export declare class Client extends EventEmitter {
|
|
|
876
877
|
/** https://discord.com/developers/docs/resources/guild#get-guild-member */
|
|
877
878
|
getGuildMember(guildId: snowflake, userId: snowflake): Promise<GuildMember>;
|
|
878
879
|
/** https://discord.com/developers/docs/resources/guild#list-guild-members */
|
|
879
|
-
getGuildMembers(guildId: snowflake, options
|
|
880
|
+
getGuildMembers(guildId: snowflake, options?: {
|
|
880
881
|
limit?: number;
|
|
881
882
|
after?: snowflake;
|
|
882
883
|
}): Promise<Array<GuildMember>>;
|
|
@@ -893,6 +894,8 @@ export declare class Client extends EventEmitter {
|
|
|
893
894
|
}>;
|
|
894
895
|
/** https://discord.com/developers/docs/resources/guild#get-guild-role */
|
|
895
896
|
getGuildRole(guildId: snowflake, roleId: snowflake): Promise<Role>;
|
|
897
|
+
/** https://discord.com/developers/docs/resources/guild#get-guild-role-member-counts */
|
|
898
|
+
getGuildRoleMemberCounts(guildId: snowflake): Promise<Record<snowflake, number>>;
|
|
896
899
|
/** https://discord.com/developers/docs/resources/guild#get-guild-roles */
|
|
897
900
|
getGuildRoles(guildId: snowflake): Promise<Array<Role>>;
|
|
898
901
|
/** https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild */
|
|
@@ -949,6 +952,16 @@ export declare class Client extends EventEmitter {
|
|
|
949
952
|
withCounts?: boolean;
|
|
950
953
|
guildScheduledEventId?: snowflake;
|
|
951
954
|
}): Promise<Invite>;
|
|
955
|
+
/** https://discord.com/developers/docs/resources/invite#get-target-users */
|
|
956
|
+
getInviteTargetUser(inviteCode: string): Promise<Blob>;
|
|
957
|
+
getInviteTargetUserJobStatus(inviteCode: string): Promise<{
|
|
958
|
+
status: InviteTargetUsersJobStatusErrorCodes;
|
|
959
|
+
totalUsers: number;
|
|
960
|
+
processedUsers: number;
|
|
961
|
+
createdAt: timestamp;
|
|
962
|
+
completedAt: timestamp | null;
|
|
963
|
+
errorMessage: string | null;
|
|
964
|
+
}>;
|
|
952
965
|
/** https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads */
|
|
953
966
|
getJoinedPrivateArchivedThreads(channelId: snowflake, options?: {
|
|
954
967
|
before?: snowflake;
|
|
@@ -969,7 +982,7 @@ export declare class Client extends EventEmitter {
|
|
|
969
982
|
limit?: number;
|
|
970
983
|
}): Promise<Array<User>>;
|
|
971
984
|
/** https://discord.com/developers/docs/resources/message#get-channel-messages */
|
|
972
|
-
getMessages(channelId: snowflake, options
|
|
985
|
+
getMessages(channelId: snowflake, options?: {
|
|
973
986
|
around?: snowflake;
|
|
974
987
|
before?: snowflake;
|
|
975
988
|
after?: snowflake;
|
|
@@ -985,7 +998,7 @@ export declare class Client extends EventEmitter {
|
|
|
985
998
|
user?: User;
|
|
986
999
|
}>;
|
|
987
1000
|
/** https://discord.com/developers/docs/resources/channel#get-pinned-messages */
|
|
988
|
-
getPinnedMessages(channelId: snowflake, options
|
|
1001
|
+
getPinnedMessages(channelId: snowflake, options?: {
|
|
989
1002
|
before?: timestamp;
|
|
990
1003
|
limit?: number;
|
|
991
1004
|
}): Promise<{
|
|
@@ -1004,7 +1017,7 @@ export declare class Client extends EventEmitter {
|
|
|
1004
1017
|
/** https://discord.com/developers/docs/resources/subscription#get-sku-subscription */
|
|
1005
1018
|
getSKUSubscription(skuId: snowflake, subscriptionId: snowflake): Promise<Subscription>;
|
|
1006
1019
|
/** https://discord.com/developers/docs/resources/subscription#list-sku-subscriptions */
|
|
1007
|
-
getSKUSubscriptions(skuId: snowflake, options
|
|
1020
|
+
getSKUSubscriptions(skuId: snowflake, options?: {
|
|
1008
1021
|
before?: snowflake;
|
|
1009
1022
|
after?: snowflake;
|
|
1010
1023
|
limit?: number;
|
|
@@ -1094,11 +1107,13 @@ export declare class Client extends EventEmitter {
|
|
|
1094
1107
|
/** https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records */
|
|
1095
1108
|
updateApplicationRoleConnectionMetadataRecords(applicationId: snowflake): Promise<Array<ApplicationRoleConnectionMetadata>>;
|
|
1096
1109
|
/** https://discord.com/developers/docs/resources/user#update-current-user-application-role-connection */
|
|
1097
|
-
updateCurrentApplicationRoleConnection(applicationId: snowflake, options
|
|
1110
|
+
updateCurrentApplicationRoleConnection(applicationId: snowflake, options?: {
|
|
1098
1111
|
platformName?: string;
|
|
1099
1112
|
platformUsername?: string;
|
|
1100
1113
|
metadata?: ApplicationRoleConnectionMetadata;
|
|
1101
1114
|
}): Promise<ApplicationRoleConnection>;
|
|
1115
|
+
/** https://discord.com/developers/docs/resources/invite#update-target-users */
|
|
1116
|
+
updateInviteTargetUser(inviteCode: string, targetUsersFile: FileData): void;
|
|
1102
1117
|
/** https://discord.com/developers/docs/resources/channel#unpin-message */
|
|
1103
1118
|
unpinMessage(channelId: snowflake, messageId: snowflake, reason?: string): void;
|
|
1104
1119
|
}
|
|
@@ -1118,13 +1133,14 @@ export declare interface Client extends EventEmitter {
|
|
|
1118
1133
|
}
|
|
1119
1134
|
export interface ClientEvents {
|
|
1120
1135
|
dispatch: [packet: RawPayload, shard: number];
|
|
1121
|
-
|
|
1136
|
+
heartbeat: [shard: number];
|
|
1137
|
+
reconnect: [shard: number];
|
|
1138
|
+
invalidSession: [shard: number];
|
|
1122
1139
|
hello: [interval: number, shard: number];
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
invalidSession: [];
|
|
1140
|
+
heartbeatACK: [shard: number];
|
|
1141
|
+
ready: [shard: number];
|
|
1142
|
+
resumed: [shard: Number];
|
|
1143
|
+
rateLimited: [rateLimit: RateLimitedEvent, shard: number];
|
|
1128
1144
|
applicationCommandPermissionsUpdate: [
|
|
1129
1145
|
applicationCommandPermissions: GuildApplicationCommandPermissions
|
|
1130
1146
|
];
|
|
@@ -1132,40 +1148,38 @@ export interface ClientEvents {
|
|
|
1132
1148
|
autoModerationRuleUpdate: [autoModerationRule: AutoModerationRule];
|
|
1133
1149
|
autoModerationRuleDelete: [autoModerationRule: AutoModerationRule];
|
|
1134
1150
|
autoModerationActionExecution: [
|
|
1135
|
-
autoModerationExecution:
|
|
1151
|
+
autoModerationExecution: AutoModerationActionExecutionEvent
|
|
1136
1152
|
];
|
|
1137
1153
|
channelCreate: [channel: Channel];
|
|
1138
1154
|
channelUpdate: [channel: Channel];
|
|
1139
1155
|
channelDelete: [channel: Channel];
|
|
1140
|
-
channelPinsUpdate: [pins:
|
|
1156
|
+
channelPinsUpdate: [pins: ChannelPinsUpdateEvent];
|
|
1141
1157
|
threadCreate: [thread: Channel];
|
|
1142
1158
|
threadUpdate: [thread: Channel];
|
|
1143
1159
|
threadDelete: [thread: Channel];
|
|
1144
|
-
threadListSync: [sync:
|
|
1160
|
+
threadListSync: [sync: ThreadListSyncEvent];
|
|
1145
1161
|
threadMemberUpdate: [
|
|
1146
|
-
threadMember: ThreadMember &
|
|
1162
|
+
threadMember: ThreadMember & ThreadMemberUpdateEventExtra
|
|
1147
1163
|
];
|
|
1148
|
-
threadMembersUpdate: [thread:
|
|
1164
|
+
threadMembersUpdate: [thread: ThreadMembersUpdateEvent];
|
|
1149
1165
|
entitlementCreate: [entitlement: Entitlement];
|
|
1150
1166
|
entitlementUpdate: [entitlement: Entitlement];
|
|
1151
1167
|
entitlementDelete: [entitlement: Entitlement];
|
|
1152
|
-
guildCreate: [
|
|
1153
|
-
guild: (Guild & GuildCreateEventExtraFields) | UnavailableGuild
|
|
1154
|
-
];
|
|
1168
|
+
guildCreate: [guild: (Guild & GuildCreateEventExtra) | UnavailableGuild];
|
|
1155
1169
|
guildUpdate: [guild: Guild];
|
|
1156
1170
|
guildDelete: [guild: UnavailableGuild];
|
|
1157
1171
|
guildAuditLogEntryCreate: [
|
|
1158
|
-
auditLogEntry: AuditLogEntry &
|
|
1172
|
+
auditLogEntry: AuditLogEntry & GuildAuditLogEntryCreateExtra
|
|
1159
1173
|
];
|
|
1160
|
-
guildBanAdd: [ban:
|
|
1161
|
-
guildBanRemove: [ban:
|
|
1174
|
+
guildBanAdd: [ban: GuildBanAddEvent];
|
|
1175
|
+
guildBanRemove: [ban: GuildBanRemoveEvent];
|
|
1162
1176
|
guildEmojisUpdate: [emojis: Array<Emoji>, guildId: snowflake];
|
|
1163
1177
|
guildStickersUpdate: [stickers: Array<Sticker>, guildId: snowflake];
|
|
1164
1178
|
guildIntegrationsUpdate: [guildId: snowflake];
|
|
1165
|
-
guildMemberAdd: [guildMember: GuildMember &
|
|
1166
|
-
guildMemberRemove: [guildMember:
|
|
1167
|
-
guildMemberUpdate: [guildMember:
|
|
1168
|
-
guildMembersChunk: [request:
|
|
1179
|
+
guildMemberAdd: [guildMember: GuildMember & GuildMemberAddEventExtra];
|
|
1180
|
+
guildMemberRemove: [guildMember: GuildMemberRemoveEvent];
|
|
1181
|
+
guildMemberUpdate: [guildMember: GuildMemberUpdateEvent];
|
|
1182
|
+
guildMembersChunk: [request: GuildMembersChunkEvent];
|
|
1169
1183
|
guildRoleCreate: [role: Role, guildId: snowflake];
|
|
1170
1184
|
guildRoleUpdate: [role: Role, guildId: snowflake];
|
|
1171
1185
|
guildRoleDelete: [roleId: snowflake, guildId: snowflake];
|
|
@@ -1184,43 +1198,39 @@ export interface ClientEvents {
|
|
|
1184
1198
|
];
|
|
1185
1199
|
guildSoundboardSoundCreate: [sound: SoundboardSound];
|
|
1186
1200
|
guildSoundboardSoundUpdate: [sound: SoundboardSound];
|
|
1187
|
-
guildSoundboardSoundDelete: [sound:
|
|
1201
|
+
guildSoundboardSoundDelete: [sound: GuildSoundboardSoundDeleteEvent];
|
|
1188
1202
|
guildSoundboardSoundsUpdate: [
|
|
1189
1203
|
sounds: Array<SoundboardSound>,
|
|
1190
1204
|
guildId: snowflake
|
|
1191
1205
|
];
|
|
1192
1206
|
soundboardSounds: [sounds: Array<SoundboardSound>, guildId: snowflake];
|
|
1193
|
-
integrationCreate: [
|
|
1194
|
-
|
|
1195
|
-
];
|
|
1196
|
-
integrationUpdate: [
|
|
1197
|
-
integration: Integration & IntegrationUpdateEventExtraFields
|
|
1198
|
-
];
|
|
1199
|
-
integrationDelete: [integration: IntegrationDeleteEventFields];
|
|
1207
|
+
integrationCreate: [integration: Integration & IntegrationCreateEventExtra];
|
|
1208
|
+
integrationUpdate: [integration: Integration & IntegrationUpdateEventExtra];
|
|
1209
|
+
integrationDelete: [integration: IntegrationDeleteEvent];
|
|
1200
1210
|
interactionCreate: [interaction: Interaction];
|
|
1201
|
-
inviteCreate: [invite:
|
|
1202
|
-
inviteDelete: [invite:
|
|
1203
|
-
messageCreate: [message: Message &
|
|
1211
|
+
inviteCreate: [invite: InviteCreateEvent];
|
|
1212
|
+
inviteDelete: [invite: InviteDeleteEvent];
|
|
1213
|
+
messageCreate: [message: Message & MessageCreateEventExtra];
|
|
1204
1214
|
messageUpdate: [message: Message];
|
|
1205
|
-
messageDelete: [message:
|
|
1206
|
-
messageDeleteBulk: [bulk:
|
|
1207
|
-
messageReactionAdd: [reaction:
|
|
1208
|
-
messageReactionRemove: [reaction:
|
|
1209
|
-
messageReactionRemoveAll: [reaction:
|
|
1210
|
-
messageReactionRemoveEmoji: [reaction:
|
|
1211
|
-
presenceUpdate: [presence:
|
|
1215
|
+
messageDelete: [message: MessageDeleteEvent];
|
|
1216
|
+
messageDeleteBulk: [bulk: MessageDeleteBulkEvent];
|
|
1217
|
+
messageReactionAdd: [reaction: MessageReactionAddEvent];
|
|
1218
|
+
messageReactionRemove: [reaction: MessageReactionRemoveEvent];
|
|
1219
|
+
messageReactionRemoveAll: [reaction: MessageReactionRemoveAllEvent];
|
|
1220
|
+
messageReactionRemoveEmoji: [reaction: MessageReactionRemoveEmojiEvent];
|
|
1221
|
+
presenceUpdate: [presence: PresenceUpdateEvent];
|
|
1212
1222
|
stageInstanceCreate: [stageInstance: StageInstance];
|
|
1213
1223
|
stageInstanceUpdate: [stageInstance: StageInstance];
|
|
1214
1224
|
stageInstanceDelete: [stageInstance: StageInstance];
|
|
1215
1225
|
subscriptionCreate: [subscription: Subscription];
|
|
1216
1226
|
subscriptionUpdate: [subscription: Subscription];
|
|
1217
1227
|
subscriptionDelete: [subscription: Subscription];
|
|
1218
|
-
typingStart: [typing:
|
|
1228
|
+
typingStart: [typing: TypingStartEvent];
|
|
1219
1229
|
userUpdate: [user: User];
|
|
1220
|
-
voiceChannelEffectSend: [voiceEffect:
|
|
1230
|
+
voiceChannelEffectSend: [voiceEffect: VoiceChannelEffectSendEvent];
|
|
1221
1231
|
voiceStateUpdate: [voiceState: VoiceState];
|
|
1222
|
-
voiceServerUpdate: [voiceServer:
|
|
1232
|
+
voiceServerUpdate: [voiceServer: VoiceServerUpdateEvent];
|
|
1223
1233
|
webhooksUpdate: [channelId: snowflake, guildId: snowflake];
|
|
1224
|
-
messagePollVoteAdd: [vote:
|
|
1225
|
-
messagePollVoteRemove: [vote:
|
|
1234
|
+
messagePollVoteAdd: [vote: MessagePollVoteAddEvent];
|
|
1235
|
+
messagePollVoteRemove: [vote: MessagePollVoteRemoveEvent];
|
|
1226
1236
|
}
|
package/dist/lib/Client.js
CHANGED
|
@@ -18,6 +18,7 @@ class Client extends node_events_1.default {
|
|
|
18
18
|
intents;
|
|
19
19
|
shardsCount;
|
|
20
20
|
auth;
|
|
21
|
+
reconnect;
|
|
21
22
|
shards;
|
|
22
23
|
rest;
|
|
23
24
|
guildShardMap;
|
|
@@ -40,9 +41,10 @@ class Client extends node_events_1.default {
|
|
|
40
41
|
: 0;
|
|
41
42
|
this.shardsCount = options?.shardsCount ?? "auto";
|
|
42
43
|
this.auth = options?.auth ?? "Bot";
|
|
44
|
+
this.reconnect = options?.reconnect ?? true;
|
|
43
45
|
this.shards = new Map();
|
|
44
46
|
this.rest = new rest_1.RequestManager(token, this.auth);
|
|
45
|
-
this.guildShardMap =
|
|
47
|
+
this.guildShardMap = new Map();
|
|
46
48
|
this.user = null;
|
|
47
49
|
this.guilds = new Map();
|
|
48
50
|
this.application = null;
|
|
@@ -165,7 +167,7 @@ class Client extends node_events_1.default {
|
|
|
165
167
|
: this.shardsCount;
|
|
166
168
|
for (let i = 0; i < this.shardsCount; i++)
|
|
167
169
|
this.shards.set(i, new gateway_1.Shard(i, this));
|
|
168
|
-
this.shards.forEach((shard) => shard.connect(
|
|
170
|
+
this.shards.forEach((shard) => shard.connect());
|
|
169
171
|
}
|
|
170
172
|
/** https://discord.com/developers/docs/resources/entitlement#consume-an-entitlement */
|
|
171
173
|
consumeEntitlement(applicationId, entitlementId) {
|
|
@@ -242,7 +244,11 @@ class Client extends node_events_1.default {
|
|
|
242
244
|
target_type: options.targetType,
|
|
243
245
|
target_user_id: options.targetUserId,
|
|
244
246
|
target_application_id: options.targetApplicationId,
|
|
247
|
+
roles_ids: options.rolesIds,
|
|
245
248
|
},
|
|
249
|
+
files: options.targetUsersFile !== undefined
|
|
250
|
+
? [options.targetUsersFile]
|
|
251
|
+
: undefined,
|
|
246
252
|
reason,
|
|
247
253
|
});
|
|
248
254
|
return transformers_1.Invites.inviteFromRaw(response);
|
|
@@ -596,9 +602,9 @@ class Client extends node_events_1.default {
|
|
|
596
602
|
async createLobby(options) {
|
|
597
603
|
const response = await this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.lobbies(), {
|
|
598
604
|
json: {
|
|
599
|
-
metadata: options
|
|
600
|
-
members: options
|
|
601
|
-
idle_timeout_seconds: options
|
|
605
|
+
metadata: options?.metadata,
|
|
606
|
+
members: options?.members,
|
|
607
|
+
idle_timeout_seconds: options?.idleTimeoutSeconds,
|
|
602
608
|
},
|
|
603
609
|
});
|
|
604
610
|
return transformers_1.Lobbies.lobbyFromRaw(response);
|
|
@@ -876,7 +882,7 @@ class Client extends node_events_1.default {
|
|
|
876
882
|
}
|
|
877
883
|
/** https://discord.com/developers/docs/events/gateway#initiating-a-disconnect */
|
|
878
884
|
disconnect() {
|
|
879
|
-
this.shards.forEach((shard) => shard.disconnect());
|
|
885
|
+
this.shards.forEach((shard) => shard.disconnect(false));
|
|
880
886
|
}
|
|
881
887
|
/** https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule */
|
|
882
888
|
async editAutoModerationRule(guildId, autoModerationRuleId, options, reason) {
|
|
@@ -1835,7 +1841,7 @@ class Client extends node_events_1.default {
|
|
|
1835
1841
|
async getGlobalApplicationCommands(applicationId, options) {
|
|
1836
1842
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.applicationCommands(applicationId), {
|
|
1837
1843
|
query: {
|
|
1838
|
-
with_localizations: options
|
|
1844
|
+
with_localizations: options?.withLocalizations,
|
|
1839
1845
|
},
|
|
1840
1846
|
});
|
|
1841
1847
|
return response.map((applicationCommand) => transformers_1.ApplicationCommands.applicationCommandFromRaw(applicationCommand));
|
|
@@ -1941,8 +1947,8 @@ class Client extends node_events_1.default {
|
|
|
1941
1947
|
async getGuildMembers(guildId, options) {
|
|
1942
1948
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildMembers(guildId), {
|
|
1943
1949
|
query: {
|
|
1944
|
-
limit: options
|
|
1945
|
-
after: options
|
|
1950
|
+
limit: options?.limit,
|
|
1951
|
+
after: options?.after,
|
|
1946
1952
|
},
|
|
1947
1953
|
});
|
|
1948
1954
|
return response.map((guildMember) => transformers_1.Guilds.guildMemberFromRaw(guildMember));
|
|
@@ -2009,6 +2015,11 @@ class Client extends node_events_1.default {
|
|
|
2009
2015
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildRole(guildId, roleId));
|
|
2010
2016
|
return transformers_1.Roles.roleFromRaw(response);
|
|
2011
2017
|
}
|
|
2018
|
+
/** https://discord.com/developers/docs/resources/guild#get-guild-role-member-counts */
|
|
2019
|
+
async getGuildRoleMemberCounts(guildId) {
|
|
2020
|
+
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildRoleMemberCounts(guildId));
|
|
2021
|
+
return response;
|
|
2022
|
+
}
|
|
2012
2023
|
/** https://discord.com/developers/docs/resources/guild#get-guild-roles */
|
|
2013
2024
|
async getGuildRoles(guildId) {
|
|
2014
2025
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildRoles(guildId));
|
|
@@ -2156,6 +2167,21 @@ class Client extends node_events_1.default {
|
|
|
2156
2167
|
});
|
|
2157
2168
|
return transformers_1.Invites.inviteFromRaw(response);
|
|
2158
2169
|
}
|
|
2170
|
+
/** https://discord.com/developers/docs/resources/invite#get-target-users */
|
|
2171
|
+
getInviteTargetUser(inviteCode) {
|
|
2172
|
+
return this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.inviteTargetUsers(inviteCode));
|
|
2173
|
+
}
|
|
2174
|
+
async getInviteTargetUserJobStatus(inviteCode) {
|
|
2175
|
+
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.inviteTargetUsersJobStatus(inviteCode));
|
|
2176
|
+
return {
|
|
2177
|
+
status: response.status,
|
|
2178
|
+
totalUsers: response.total_users,
|
|
2179
|
+
processedUsers: response.processed_users,
|
|
2180
|
+
createdAt: response.created_at,
|
|
2181
|
+
completedAt: response.completed_at,
|
|
2182
|
+
errorMessage: response.error_message,
|
|
2183
|
+
};
|
|
2184
|
+
}
|
|
2159
2185
|
/** https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads */
|
|
2160
2186
|
async getJoinedPrivateArchivedThreads(channelId, options) {
|
|
2161
2187
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.channelThreads(channelId, "private", true), {
|
|
@@ -2195,10 +2221,10 @@ class Client extends node_events_1.default {
|
|
|
2195
2221
|
async getMessages(channelId, options) {
|
|
2196
2222
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.channelMessages(channelId), {
|
|
2197
2223
|
query: {
|
|
2198
|
-
around: options
|
|
2199
|
-
before: options
|
|
2200
|
-
after: options
|
|
2201
|
-
limit: options
|
|
2224
|
+
around: options?.around,
|
|
2225
|
+
before: options?.before,
|
|
2226
|
+
after: options?.after,
|
|
2227
|
+
limit: options?.limit,
|
|
2202
2228
|
},
|
|
2203
2229
|
});
|
|
2204
2230
|
return response.map((message) => transformers_1.Messages.messageFromRaw(message));
|
|
@@ -2259,10 +2285,10 @@ class Client extends node_events_1.default {
|
|
|
2259
2285
|
async getSKUSubscriptions(skuId, options) {
|
|
2260
2286
|
const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.skuSubscriptions(skuId), {
|
|
2261
2287
|
query: {
|
|
2262
|
-
before: options
|
|
2263
|
-
after: options
|
|
2264
|
-
limit: options
|
|
2265
|
-
user_id: options
|
|
2288
|
+
before: options?.before,
|
|
2289
|
+
after: options?.after,
|
|
2290
|
+
limit: options?.limit,
|
|
2291
|
+
user_id: options?.userId,
|
|
2266
2292
|
},
|
|
2267
2293
|
});
|
|
2268
2294
|
return response.map((subscription) => transformers_1.Subscriptions.subscriptionFromRaw(subscription));
|
|
@@ -2361,7 +2387,9 @@ class Client extends node_events_1.default {
|
|
|
2361
2387
|
}
|
|
2362
2388
|
/** https://discord.com/developers/docs/topics/gateway-events#update-voice-state */
|
|
2363
2389
|
joinVoiceChannel(guildId, channelId, options) {
|
|
2364
|
-
this.shards
|
|
2390
|
+
this.shards
|
|
2391
|
+
.get(this.guildShardMap.get(guildId))
|
|
2392
|
+
.transmitter.updateVoiceState({
|
|
2365
2393
|
guildId,
|
|
2366
2394
|
channelId,
|
|
2367
2395
|
selfMute: !!options?.selfMute,
|
|
@@ -2382,7 +2410,9 @@ class Client extends node_events_1.default {
|
|
|
2382
2410
|
}
|
|
2383
2411
|
/** https://discord.com/developers/docs/topics/gateway-events#update-voice-state */
|
|
2384
2412
|
leaveVoiceChannel(guildId) {
|
|
2385
|
-
this.shards
|
|
2413
|
+
this.shards
|
|
2414
|
+
.get(this.guildShardMap.get(guildId))
|
|
2415
|
+
.transmitter.updateVoiceState({
|
|
2386
2416
|
guildId,
|
|
2387
2417
|
channelId: null,
|
|
2388
2418
|
selfMute: false,
|
|
@@ -2455,7 +2485,7 @@ class Client extends node_events_1.default {
|
|
|
2455
2485
|
}
|
|
2456
2486
|
/** https://discord.com/developers/docs/topics/gateway-events#update-presence */
|
|
2457
2487
|
setPresence(options) {
|
|
2458
|
-
this.shards.forEach((shard) => shard.updatePresence(options));
|
|
2488
|
+
this.shards.forEach((shard) => shard.transmitter.updatePresence(options));
|
|
2459
2489
|
}
|
|
2460
2490
|
/** https://discord.com/developers/docs/resources/guild-template#sync-guild-template */
|
|
2461
2491
|
async syncGuildTemplate(guildId, code) {
|
|
@@ -2480,9 +2510,9 @@ class Client extends node_events_1.default {
|
|
|
2480
2510
|
async updateCurrentApplicationRoleConnection(applicationId, options) {
|
|
2481
2511
|
const response = await this.rest.request(rest_1.RESTMethods.Put, rest_1.Endpoints.userApplicationRoleConnection(applicationId), {
|
|
2482
2512
|
json: {
|
|
2483
|
-
platform_name: options
|
|
2484
|
-
platform_username: options
|
|
2485
|
-
metadata: options
|
|
2513
|
+
platform_name: options?.platformName,
|
|
2514
|
+
platform_username: options?.platformUsername,
|
|
2515
|
+
metadata: options?.metadata !== undefined
|
|
2486
2516
|
? transformers_1.ApplicationRoleConnectionMetadatas.applicationRoleConnectionMetadataToRaw(options.metadata)
|
|
2487
2517
|
: undefined,
|
|
2488
2518
|
},
|
|
@@ -2493,6 +2523,12 @@ class Client extends node_events_1.default {
|
|
|
2493
2523
|
metadata: transformers_1.ApplicationRoleConnectionMetadatas.applicationRoleConnectionMetadataFromRaw(response.metadata),
|
|
2494
2524
|
};
|
|
2495
2525
|
}
|
|
2526
|
+
/** https://discord.com/developers/docs/resources/invite#update-target-users */
|
|
2527
|
+
updateInviteTargetUser(inviteCode, targetUsersFile) {
|
|
2528
|
+
this.rest.request(rest_1.RESTMethods.Put, rest_1.Endpoints.inviteTargetUsers(inviteCode), {
|
|
2529
|
+
files: [targetUsersFile],
|
|
2530
|
+
});
|
|
2531
|
+
}
|
|
2496
2532
|
/** https://discord.com/developers/docs/resources/channel#unpin-message */
|
|
2497
2533
|
unpinMessage(channelId, messageId, reason) {
|
|
2498
2534
|
this.rest.request(rest_1.RESTMethods.Delete, rest_1.Endpoints.channelPin(channelId, messageId), {
|