djs-selfbot-v13 3.1.7 → 3.2.2

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 (155) hide show
  1. package/README.md +18 -35
  2. package/package.json +85 -100
  3. package/src/client/BaseClient.js +3 -4
  4. package/src/client/Client.js +249 -530
  5. package/src/client/actions/Action.js +18 -13
  6. package/src/client/actions/ActionsManager.js +7 -1
  7. package/src/client/actions/AutoModerationActionExecution.js +1 -0
  8. package/src/client/actions/AutoModerationRuleCreate.js +1 -0
  9. package/src/client/actions/AutoModerationRuleDelete.js +1 -0
  10. package/src/client/actions/AutoModerationRuleUpdate.js +1 -0
  11. package/src/client/actions/GuildMemberRemove.js +0 -1
  12. package/src/client/actions/GuildMemberUpdate.js +0 -1
  13. package/src/client/actions/MessageCreate.js +0 -4
  14. package/src/client/actions/PresenceUpdate.js +17 -16
  15. package/src/client/websocket/WebSocketManager.js +11 -31
  16. package/src/client/websocket/WebSocketShard.js +39 -38
  17. package/src/client/websocket/handlers/CALL_CREATE.js +3 -3
  18. package/src/client/websocket/handlers/CALL_DELETE.js +2 -2
  19. package/src/client/websocket/handlers/CALL_UPDATE.js +2 -2
  20. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -13
  21. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +11 -11
  22. package/src/client/websocket/handlers/GUILD_CREATE.js +19 -13
  23. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +0 -1
  24. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +1 -0
  25. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +22 -0
  26. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +12 -0
  27. package/src/client/websocket/handlers/READY.js +90 -140
  28. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +7 -5
  29. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +7 -5
  30. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +32 -9
  31. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +2 -8
  32. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +1 -1
  33. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  34. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +1 -5
  35. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  36. package/src/client/websocket/handlers/index.js +17 -20
  37. package/src/errors/Messages.js +25 -69
  38. package/src/index.js +13 -43
  39. package/src/managers/ApplicationCommandManager.js +9 -12
  40. package/src/managers/ApplicationCommandPermissionsManager.js +3 -11
  41. package/src/managers/ChannelManager.js +2 -3
  42. package/src/managers/ClientUserSettingManager.js +162 -280
  43. package/src/managers/GuildBanManager.js +47 -1
  44. package/src/managers/GuildChannelManager.js +2 -16
  45. package/src/managers/GuildForumThreadManager.js +24 -30
  46. package/src/managers/GuildManager.js +1 -1
  47. package/src/managers/GuildMemberManager.js +50 -222
  48. package/src/managers/GuildSettingManager.js +22 -15
  49. package/src/managers/MessageManager.js +42 -44
  50. package/src/managers/PermissionOverwriteManager.js +1 -1
  51. package/src/managers/ReactionUserManager.js +5 -5
  52. package/src/managers/RelationshipManager.js +83 -76
  53. package/src/managers/ThreadManager.js +12 -45
  54. package/src/managers/ThreadMemberManager.js +1 -1
  55. package/src/managers/UserManager.js +6 -10
  56. package/src/managers/UserNoteManager.js +53 -0
  57. package/src/rest/APIRequest.js +48 -20
  58. package/src/rest/DiscordAPIError.js +17 -16
  59. package/src/rest/RESTManager.js +1 -21
  60. package/src/rest/RequestHandler.js +35 -21
  61. package/src/structures/ApplicationCommand.js +19 -456
  62. package/src/structures/ApplicationRoleConnectionMetadata.js +3 -0
  63. package/src/structures/AutoModerationRule.js +5 -5
  64. package/src/structures/AutocompleteInteraction.js +1 -0
  65. package/src/structures/BaseGuildTextChannel.js +10 -12
  66. package/src/structures/BaseGuildVoiceChannel.js +16 -18
  67. package/src/structures/{Call.js → CallState.js} +17 -12
  68. package/src/structures/CategoryChannel.js +2 -0
  69. package/src/structures/Channel.js +2 -3
  70. package/src/structures/ClientPresence.js +20 -19
  71. package/src/structures/ClientUser.js +117 -338
  72. package/src/structures/ContextMenuInteraction.js +1 -1
  73. package/src/structures/DMChannel.js +29 -92
  74. package/src/structures/ForumChannel.js +0 -10
  75. package/src/structures/GroupDMChannel.js +387 -0
  76. package/src/structures/Guild.js +135 -271
  77. package/src/structures/GuildAuditLogs.js +0 -5
  78. package/src/structures/GuildChannel.js +16 -2
  79. package/src/structures/GuildMember.js +27 -145
  80. package/src/structures/Interaction.js +1 -62
  81. package/src/structures/Invite.js +35 -52
  82. package/src/structures/Message.js +220 -203
  83. package/src/structures/MessageAttachment.js +11 -0
  84. package/src/structures/MessageButton.js +1 -67
  85. package/src/structures/MessageEmbed.js +1 -1
  86. package/src/structures/MessageMentions.js +3 -2
  87. package/src/structures/MessagePayload.js +6 -46
  88. package/src/structures/MessagePoll.js +238 -0
  89. package/src/structures/MessageReaction.js +1 -1
  90. package/src/structures/MessageSelectMenu.js +1 -252
  91. package/src/structures/Modal.js +70 -188
  92. package/src/structures/Presence.js +787 -129
  93. package/src/structures/Role.js +18 -2
  94. package/src/structures/SelectMenuInteraction.js +2 -151
  95. package/src/structures/Team.js +0 -49
  96. package/src/structures/TextInputComponent.js +0 -70
  97. package/src/structures/ThreadChannel.js +0 -19
  98. package/src/structures/User.js +145 -339
  99. package/src/structures/UserContextMenuInteraction.js +2 -2
  100. package/src/structures/VoiceState.js +74 -39
  101. package/src/structures/WebEmbed.js +38 -52
  102. package/src/structures/Webhook.js +17 -11
  103. package/src/structures/interfaces/Application.js +146 -23
  104. package/src/structures/interfaces/TextBasedChannel.js +409 -256
  105. package/src/util/ApplicationFlags.js +1 -1
  106. package/src/util/AttachmentFlags.js +38 -0
  107. package/src/util/Constants.js +120 -285
  108. package/src/util/Formatters.js +16 -2
  109. package/src/util/InviteFlags.js +29 -0
  110. package/src/util/LimitedCollection.js +1 -1
  111. package/src/util/Options.js +48 -74
  112. package/src/util/Permissions.js +15 -0
  113. package/src/util/PurchasedFlags.js +2 -0
  114. package/src/util/RemoteAuth.js +221 -356
  115. package/src/util/RoleFlags.js +37 -0
  116. package/src/util/Sweepers.js +1 -1
  117. package/src/util/Util.js +158 -32
  118. package/typings/enums.d.ts +24 -73
  119. package/typings/index.d.ts +978 -1288
  120. package/typings/rawDataTypes.d.ts +68 -9
  121. package/src/client/actions/InteractionCreate.js +0 -115
  122. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +0 -23
  123. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +0 -11
  124. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +0 -55
  125. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +0 -0
  126. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.js +0 -0
  127. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.js +0 -0
  128. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.js +0 -0
  129. package/src/client/websocket/handlers/INTERACTION_CREATE.js +0 -16
  130. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +0 -18
  131. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +0 -30
  132. package/src/client/websocket/handlers/MESSAGE_ACK.js +0 -16
  133. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.js +0 -0
  134. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +0 -0
  135. package/src/managers/DeveloperPortalManager.js +0 -104
  136. package/src/managers/GuildApplicationCommandManager.js +0 -28
  137. package/src/managers/GuildFolderManager.js +0 -24
  138. package/src/managers/SessionManager.js +0 -57
  139. package/src/rest/CaptchaSolver.js +0 -132
  140. package/src/structures/ClientApplication.js +0 -204
  141. package/src/structures/DeveloperPortalApplication.js +0 -520
  142. package/src/structures/GuildFolder.js +0 -75
  143. package/src/structures/InteractionResponse.js +0 -114
  144. package/src/structures/PartialGroupDMChannel.js +0 -433
  145. package/src/structures/RichPresence.js +0 -722
  146. package/src/structures/Session.js +0 -81
  147. package/src/util/Voice.js +0 -1456
  148. package/src/util/arRPC/index.js +0 -229
  149. package/src/util/arRPC/process/detectable.json +0 -1
  150. package/src/util/arRPC/process/index.js +0 -102
  151. package/src/util/arRPC/process/native/index.js +0 -5
  152. package/src/util/arRPC/process/native/linux.js +0 -37
  153. package/src/util/arRPC/process/native/win32.js +0 -25
  154. package/src/util/arRPC/transports/ipc.js +0 -281
  155. package/src/util/arRPC/transports/websocket.js +0 -128
@@ -3,7 +3,6 @@
3
3
  const { Collection } = require('@discordjs/collection');
4
4
  const GuildChannel = require('./GuildChannel');
5
5
  const TextBasedChannel = require('./interfaces/TextBasedChannel');
6
- const InteractionManager = require('../managers/InteractionManager');
7
6
  const MessageManager = require('../managers/MessageManager');
8
7
  const { VideoQualityModes } = require('../util/Constants');
9
8
  const Permissions = require('../util/Permissions');
@@ -28,12 +27,6 @@ class BaseGuildVoiceChannel extends GuildChannel {
28
27
  */
29
28
  this.nsfw = Boolean(data.nsfw);
30
29
 
31
- /**
32
- * A manager of the interactions sent to this channel
33
- * @type {InteractionManager}
34
- */
35
- this.interactions = new InteractionManager(this);
36
-
37
30
  this._patch(data);
38
31
  }
39
32
 
@@ -95,7 +88,15 @@ class BaseGuildVoiceChannel extends GuildChannel {
95
88
  }
96
89
 
97
90
  if ('nsfw' in data) {
98
- this.nsfw = Boolean(data.nsfw);
91
+ this.nsfw = data.nsfw;
92
+ }
93
+
94
+ if ('status' in data) {
95
+ /**
96
+ * The status of the voice channel (max 500 characters)
97
+ * @type {?string}
98
+ */
99
+ this.status = data.status;
99
100
  }
100
101
  }
101
102
 
@@ -170,11 +171,11 @@ class BaseGuildVoiceChannel extends GuildChannel {
170
171
  * Sets the bitrate of the channel.
171
172
  * @param {number} bitrate The new bitrate
172
173
  * @param {string} [reason] Reason for changing the channel's bitrate
173
- * @returns {Promise<VoiceChannel>}
174
+ * @returns {Promise<BaseGuildVoiceChannel>}
174
175
  * @example
175
176
  * // Set the bitrate of a voice channel
176
- * voiceChannel.setBitrate(48_000)
177
- * .then(vc => console.log(`Set bitrate to ${vc.bitrate}bps for ${vc.name}`))
177
+ * channel.setBitrate(48_000)
178
+ * .then(channel => console.log(`Set bitrate to ${channel.bitrate}bps for ${channel.name}`))
178
179
  * .catch(console.error);
179
180
  */
180
181
  setBitrate(bitrate, reason) {
@@ -201,11 +202,11 @@ class BaseGuildVoiceChannel extends GuildChannel {
201
202
  * Sets the user limit of the channel.
202
203
  * @param {number} userLimit The new user limit
203
204
  * @param {string} [reason] Reason for changing the user limit
204
- * @returns {Promise<VoiceChannel>}
205
+ * @returns {Promise<BaseGuildVoiceChannel>}
205
206
  * @example
206
207
  * // Set the user limit of a voice channel
207
- * voiceChannel.setUserLimit(42)
208
- * .then(vc => console.log(`Set user limit to ${vc.userLimit} for ${vc.name}`))
208
+ * channel.setUserLimit(42)
209
+ * .then(channel => console.log(`Set user limit to ${channel.userLimit} for ${channel.name}`))
209
210
  * .catch(console.error);
210
211
  */
211
212
  setUserLimit(userLimit, reason) {
@@ -216,7 +217,7 @@ class BaseGuildVoiceChannel extends GuildChannel {
216
217
  * Sets the camera video quality mode of the channel.
217
218
  * @param {VideoQualityMode|number} videoQualityMode The new camera video quality mode.
218
219
  * @param {string} [reason] Reason for changing the camera video quality mode.
219
- * @returns {Promise<VoiceChannel>}
220
+ * @returns {Promise<BaseGuildVoiceChannel>}
220
221
  */
221
222
  setVideoQualityMode(videoQualityMode, reason) {
222
223
  return this.edit({ videoQualityMode }, reason);
@@ -229,9 +230,6 @@ class BaseGuildVoiceChannel extends GuildChannel {
229
230
  sendTyping() {}
230
231
  createMessageCollector() {}
231
232
  awaitMessages() {}
232
- createMessageComponentCollector() {}
233
- awaitMessageComponent() {}
234
- bulkDelete() {}
235
233
  fetchWebhooks() {}
236
234
  createWebhook() {}
237
235
  setRateLimitPerUser() {}
@@ -7,7 +7,7 @@ const Base = require('./Base');
7
7
  * Represents a call
8
8
  * @extends {Base}
9
9
  */
10
- class Call extends Base {
10
+ class CallState extends Base {
11
11
  constructor(client, data) {
12
12
  super(client);
13
13
  /**
@@ -16,14 +16,11 @@ class Call extends Base {
16
16
  */
17
17
  this.channelId = data.channel_id;
18
18
 
19
- /**
20
- * The list of user ID who is ringing
21
- * @type {Collection<Snowflake, User>}
22
- */
23
- this.ringing = new Collection();
19
+ this._ringing = [];
24
20
 
25
21
  this._patch(data);
26
22
  }
23
+
27
24
  _patch(data) {
28
25
  if ('region' in data) {
29
26
  /**
@@ -33,26 +30,34 @@ class Call extends Base {
33
30
  this.region = data.region;
34
31
  }
35
32
  if ('ringing' in data) {
36
- for (const userId of data.ringing) {
37
- this.ringing.set(userId, this.client.users.cache.get(userId));
38
- }
33
+ this._ringing = data.ringing;
39
34
  }
40
35
  }
36
+
41
37
  /**
42
38
  * The channel of the call
43
- * @type {?DMChannel|PartialGroupDMChannel}
39
+ * @type {?DMChannel|GroupDMChannel}
44
40
  */
45
41
  get channel() {
46
42
  return this.client.channels.cache.get(this.channelId);
47
43
  }
44
+
48
45
  /**
49
46
  * Sets the voice region of the call
50
47
  * @param {string} region Region of the call
51
48
  * @returns {Promise<void>}
52
49
  */
53
- setVoiceRegion(region) {
50
+ setRTCRegion(region) {
54
51
  return this.client.api.channels(this.channelId).call.patch({ data: { region } });
55
52
  }
53
+
54
+ /**
55
+ * The list of user ID who is ringing
56
+ * @type {Collection<Snowflake, User>}
57
+ */
58
+ get ringing() {
59
+ return new Collection(this._ringing.map(id => [id, this.client.users.cache.get(id)]));
60
+ }
56
61
  }
57
62
 
58
- module.exports = Call;
63
+ module.exports = CallState;
@@ -62,6 +62,8 @@ class CategoryChannel extends GuildChannel {
62
62
  * @property {?DefaultReactionEmoji} [defaultReactionEmoji] The emoji to set as the default reaction emoji
63
63
  * @property {number} [defaultThreadRateLimitPerUser] The rate limit per user (slowmode) to set on forum posts
64
64
  * @property {?SortOrderType} [defaultSortOrder] The default sort order mode to set on the new channel
65
+ * @property {number} [defaultThreadRateLimitPerUser] The initial rate limit per user (slowmode)
66
+ * to set on newly created threads in a channel.
65
67
  * @property {string} [reason] Reason for creating the new channel
66
68
  */
67
69
 
@@ -53,7 +53,6 @@ class Channel extends Base {
53
53
  if ('flags' in data) {
54
54
  /**
55
55
  * The flags that are applied to the channel.
56
- * <info>This is only `null` in a {@link PartialGroupDMChannel}. In all other cases, it is not `null`.</info>
57
56
  * @type {?Readonly<ChannelFlags>}
58
57
  */
59
58
  this.flags = new ChannelFlags(data.flags).freeze();
@@ -203,8 +202,8 @@ class Channel extends Base {
203
202
  if ((data.recipients && data.type !== ChannelTypes.GROUP_DM) || data.type === ChannelTypes.DM) {
204
203
  channel = new DMChannel(client, data);
205
204
  } else if (data.type === ChannelTypes.GROUP_DM) {
206
- const PartialGroupDMChannel = require('./PartialGroupDMChannel');
207
- channel = new PartialGroupDMChannel(client, data);
205
+ const GroupDMChannel = require('./GroupDMChannel');
206
+ channel = new GroupDMChannel(client, data);
208
207
  }
209
208
  } else {
210
209
  guild ??= client.guilds.cache.get(data.guild_id);
@@ -2,7 +2,9 @@
2
2
 
3
3
  const { Presence } = require('./Presence');
4
4
  const { TypeError } = require('../errors');
5
- const { Opcodes, ActivityTypes } = require('../util/Constants');
5
+ const { ActivityTypes, Opcodes } = require('../util/Constants');
6
+
7
+ const CustomStatusActivityTypes = [ActivityTypes.CUSTOM, ActivityTypes[ActivityTypes.CUSTOM]];
6
8
 
7
9
  /**
8
10
  * Represents the client's presence.
@@ -20,8 +22,8 @@ class ClientPresence extends Presence {
20
22
  */
21
23
  set(presence) {
22
24
  const packet = this._parse(presence);
23
- // Parse with custom class
24
- this._patch(packet, true);
25
+ this._patch(packet);
26
+ packet.activities = this.activities.map(a => a.toJSON());
25
27
  if (typeof presence.shardId === 'undefined') {
26
28
  this.client.ws.broadcast({ op: Opcodes.STATUS_UPDATE, d: packet });
27
29
  } else if (Array.isArray(presence.shardId)) {
@@ -31,8 +33,6 @@ class ClientPresence extends Presence {
31
33
  } else {
32
34
  this.client.ws.shards.get(presence.shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });
33
35
  }
34
- // Parse with default class
35
- // this._patch(packet, false);
36
36
  return this;
37
37
  }
38
38
 
@@ -46,28 +46,29 @@ class ClientPresence extends Presence {
46
46
  const data = {
47
47
  activities: [],
48
48
  afk: typeof afk === 'boolean' ? afk : false,
49
- since: 0,
49
+ since: typeof since === 'number' && !Number.isNaN(since) ? since : 0,
50
50
  status: status ?? this.status,
51
51
  };
52
52
  if (activities?.length) {
53
53
  for (const [i, activity] of activities.entries()) {
54
- if (![ActivityTypes.CUSTOM, 'CUSTOM'].includes(activity.type) && typeof activity.name !== 'string') {
55
- throw new TypeError('INVALID_TYPE', `activities[${i}].name`, 'string');
54
+ if (typeof activity.name !== 'string') throw new TypeError('INVALID_TYPE', `activities[${i}].name`, 'string');
55
+
56
+ activity.type ??= ActivityTypes.PLAYING;
57
+ if (typeof activity.type === 'string') activity.type = ActivityTypes[activity.type];
58
+
59
+ if (CustomStatusActivityTypes.includes(activity.type) && !activity.state) {
60
+ activity.state = activity.name;
61
+ activity.name = 'Custom Status';
56
62
  }
57
- activity.type ??= 0;
58
- data.activities.push(
59
- Object.assign(activity, {
60
- type: typeof activity.type === 'number' ? activity.type : ActivityTypes[activity.type],
61
- }),
62
- );
63
+
64
+ data.activities.push(activity);
63
65
  }
64
66
  } else if (!activities && (status || afk || since) && this.activities.length) {
65
67
  data.activities.push(
66
- ...this.activities.map(a =>
67
- Object.assign(a, {
68
- type: typeof a.type === 'number' ? a.type : ActivityTypes[a.type],
69
- }),
70
- ),
68
+ ...this.activities.map(a => {
69
+ if (typeof a.type === 'string') a.type = ActivityTypes[a.type];
70
+ return a;
71
+ }),
71
72
  );
72
73
  }
73
74