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
@@ -4,6 +4,7 @@ const process = require('node:process');
4
4
  const Base = require('./Base');
5
5
  const { Error } = require('../errors');
6
6
  const Permissions = require('../util/Permissions');
7
+ const RoleFlags = require('../util/RoleFlags');
7
8
  const SnowflakeUtil = require('../util/SnowflakeUtil');
8
9
 
9
10
  let deprecationEmittedForComparePositions = false;
@@ -142,6 +143,16 @@ class Role extends Base {
142
143
  this.tags.guildConnections = true;
143
144
  }
144
145
  }
146
+
147
+ if ('flags' in data) {
148
+ /**
149
+ * The flags of this role
150
+ * @type {Readonly<RoleFlags>}
151
+ */
152
+ this.flags = new RoleFlags(data.flags).freeze();
153
+ } else {
154
+ this.flags ??= new RoleFlags().freeze();
155
+ }
145
156
  }
146
157
 
147
158
  /**
@@ -228,8 +239,13 @@ class Role extends Base {
228
239
  * @readonly
229
240
  */
230
241
  get position() {
231
- const sorted = this.guild._sortedRoles();
232
- return [...sorted.values()].indexOf(sorted.get(this.id));
242
+ let count = 0;
243
+ for (const role of this.guild.roles.cache.values()) {
244
+ if (this.rawPosition > role.rawPosition) count++;
245
+ else if (this.rawPosition === role.rawPosition && BigInt(this.id) < BigInt(role.id)) count++;
246
+ }
247
+
248
+ return count;
233
249
  }
234
250
 
235
251
  /**
@@ -1,11 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const { Collection } = require('@discordjs/collection');
4
3
  const MessageComponentInteraction = require('./MessageComponentInteraction');
5
- const { Events } = require('../util/Constants');
6
4
 
7
5
  /**
8
- * Represents any select menu interaction.
6
+ * Represents a select menu interaction.
9
7
  * @extends {MessageComponentInteraction}
10
8
  */
11
9
  class SelectMenuInteraction extends MessageComponentInteraction {
@@ -20,151 +18,4 @@ class SelectMenuInteraction extends MessageComponentInteraction {
20
18
  }
21
19
  }
22
20
 
23
- module.exports.SelectMenuInteraction = SelectMenuInteraction;
24
-
25
- /**
26
- * Represents a CHANNEL_SELECT interaction.
27
- * @extends {SelectMenuInteraction}
28
- */
29
- class ChannelSelectInteraction extends SelectMenuInteraction {
30
- constructor(client, data) {
31
- super(client, data);
32
-
33
- const { channels } = data.data.resolved ?? {};
34
-
35
- /**
36
- * Collection of the selected channels
37
- * @type {Collection<Snowflake, Channel|APIChannel>}
38
- */
39
- this.channels = new Collection();
40
- for (const channel of Object.values(channels)) {
41
- this.channel.set(channel.id, this.client.channels._add(channel));
42
- }
43
- }
44
- }
45
-
46
- module.exports.ChannelSelectInteraction = ChannelSelectInteraction;
47
-
48
- /**
49
- * Represents a ROLE_SELECT interaction.
50
- * @extends {SelectMenuInteraction}
51
- */
52
- class RoleSelectInteraction extends SelectMenuInteraction {
53
- constructor(client, data) {
54
- super(client, data);
55
-
56
- const { roles } = data.data.resolved ?? {};
57
-
58
- /**
59
- * Collection of the selected roles
60
- * @type {Collection<Snowflake, Role|APIRole>}
61
- */
62
- this.roles = new Collection();
63
- for (const role of Object.values(roles)) {
64
- this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
65
- }
66
- }
67
- }
68
-
69
- module.exports.RoleSelectInteraction = RoleSelectInteraction;
70
-
71
- /**
72
- * Represents a USER_SELECT interaction.
73
- * @extends {SelectMenuInteraction}
74
- */
75
- class UserSelectInteraction extends SelectMenuInteraction {
76
- constructor(client, data) {
77
- super(client, data);
78
-
79
- const { members, users } = data.data.resolved ?? {};
80
-
81
- /**
82
- * Collection of the selected users
83
- * @type {Collection<Snowflake, User>}
84
- */
85
- this.users = new Collection();
86
- for (const user of Object.values(users)) {
87
- this.users.set(user.id, this.client.users._add(user));
88
- }
89
-
90
- if (members) {
91
- /**
92
- * Collection of the selected members
93
- * @type {Collection<Snowflake, GuildMember|APIGuildMember>}
94
- */
95
- this.members = new Collection();
96
- for (const [id, member] of Object.entries(members)) {
97
- const user = users[id];
98
- if (!user) {
99
- this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`);
100
- continue;
101
- }
102
- this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
103
- }
104
- }
105
- }
106
- }
107
-
108
- module.exports.UserSelectInteraction = UserSelectInteraction;
109
-
110
- /**
111
- * Represents a MENTIONABLE_SELECT interaction.
112
- * @extends {SelectMenuInteraction}
113
- */
114
- class MentionableSelectInteraction extends SelectMenuInteraction {
115
- constructor(client, data) {
116
- super(client, data);
117
-
118
- const { members, users, roles, channels } = data.data.resolved ?? {};
119
-
120
- if (channels) {
121
- /**
122
- * Collection of the selected channels
123
- * @type {Collection<Snowflake, Channel|APIChannel>}
124
- */
125
- this.channels = new Collection();
126
- for (const channel of Object.values(channels)) {
127
- this.channels.set(channel.id, this.client?.channels._add(channel) ?? channel);
128
- }
129
- }
130
-
131
- if (members) {
132
- /**
133
- * Collection of the selected members
134
- * @type {Collection<Snowflake, GuildMember|APIGuildMember>}
135
- */
136
- this.members = new Collection();
137
- for (const [id, member] of Object.entries(members)) {
138
- const user = users[id];
139
- if (!user) {
140
- this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`);
141
- continue;
142
- }
143
- this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
144
- }
145
- }
146
-
147
- if (roles) {
148
- /**
149
- * Collection of the selected roles
150
- * @type {Collection<Snowflake, Role|APIRole>}
151
- */
152
- this.roles = new Collection();
153
- for (const role of Object.values(roles)) {
154
- this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
155
- }
156
- }
157
-
158
- if (users) {
159
- /**
160
- * Collection of the selected users
161
- * @type {Collection<Snowflake, User>}
162
- */
163
- this.users = new Collection();
164
- for (const user of Object.values(users)) {
165
- this.users.set(user.id, this.client.users._add(user));
166
- }
167
- }
168
- }
169
- }
170
- module.exports.MentionableSelectInteraction = MentionableSelectInteraction;
21
+ module.exports = SelectMenuInteraction;
@@ -3,8 +3,6 @@
3
3
  const { Collection } = require('@discordjs/collection');
4
4
  const Base = require('./Base');
5
5
  const TeamMember = require('./TeamMember');
6
- const User = require('./User');
7
- const { Error } = require('../errors');
8
6
  const SnowflakeUtil = require('../util/SnowflakeUtil');
9
7
 
10
8
  /**
@@ -100,53 +98,6 @@ class Team extends Base {
100
98
  return this.client.rest.cdn.TeamIcon(this.id, this.icon, { format, size });
101
99
  }
102
100
 
103
- /**
104
- * Invite a team member to the team
105
- * @param {User} user The user to invite to the team
106
- * @param {number} MFACode The mfa code
107
- * @returns {Promise<TeamMember>}
108
- */
109
- async inviteMember(user, MFACode) {
110
- if (!(user instanceof User)) return new Error('TEAM_MEMBER_FORMAT');
111
- const regex = /([0-9]{6})/g;
112
-
113
- const payload = {
114
- username: user.username,
115
- discriminator: user.discriminator,
116
- };
117
- if (MFACode && !regex.test(MFACode)) return new Error('MFA_INVALID');
118
- if (MFACode) payload.code = MFACode;
119
-
120
- const member = await this.client.api.teams(this.id).members.post({
121
- data: payload,
122
- });
123
-
124
- this.members.set(member.user.id, new TeamMember(this, member));
125
- return this.members.get(member.user.id);
126
- }
127
-
128
- /**
129
- * Remove a member from the team
130
- * @param {Snowflake} userID The ID of the user you want to remove
131
- * @returns {boolean}
132
- */
133
- async removeMember(userID) {
134
- await this.client.api.teams[this.id].members[userID].delete();
135
- return this.members.delete(userID);
136
- }
137
-
138
- /**
139
- * Delete this team
140
- * @param {number} MFACode The 2fa code
141
- * @returns {Promise<boolean>}
142
- */
143
- async delete(MFACode) {
144
- const regex = /([0-9]{6})/g;
145
- if (!regex.test(MFACode)) return new Error('MFA_INVALID');
146
- await this.client.api.teams[this.id].delete({ data: { code: MFACode } });
147
- return this.client.developerPortal.teams.delete(this.id);
148
- }
149
-
150
101
  /**
151
102
  * When concatenated with a string, this automatically returns the Team's name instead of the
152
103
  * Team object.
@@ -82,76 +82,6 @@ class TextInputComponent extends BaseMessageComponent {
82
82
  this.value = data.value ?? null;
83
83
  }
84
84
 
85
- /**
86
- * Sets the custom id of this text input component
87
- * @param {string} customId A unique string to be sent in the interaction when submitted
88
- * @returns {TextInputComponent}
89
- */
90
- setCustomId(customId) {
91
- this.customId = Util.verifyString(customId, RangeError, 'TEXT_INPUT_CUSTOM_ID');
92
- return this;
93
- }
94
-
95
- /**
96
- * Sets the label of this text input component
97
- * @param {string} label The text to be displayed above this text input component
98
- * @returns {TextInputComponent}
99
- */
100
- setLabel(label) {
101
- this.label = Util.verifyString(label, RangeError, 'TEXT_INPUT_LABEL');
102
- return this;
103
- }
104
-
105
- /**
106
- * Sets the text input component to be required for modal submission
107
- * @param {boolean} [required=true] Whether this text input component is required
108
- * @returns {TextInputComponent}
109
- */
110
- setRequired(required = true) {
111
- this.required = required;
112
- return this;
113
- }
114
-
115
- /**
116
- * Sets the maximum length of text input required in this text input component
117
- * @param {number} maxLength Maximum length of text to be required
118
- * @returns {TextInputComponent}
119
- */
120
- setMaxLength(maxLength) {
121
- this.maxLength = maxLength;
122
- return this;
123
- }
124
-
125
- /**
126
- * Sets the minimum length of text input required in this text input component
127
- * @param {number} minLength Minimum length of text to be required
128
- * @returns {TextInputComponent}
129
- */
130
- setMinLength(minLength) {
131
- this.minLength = minLength;
132
- return this;
133
- }
134
-
135
- /**
136
- * Sets the placeholder of this text input component
137
- * @param {string} placeholder Custom placeholder text to display when no text is entered
138
- * @returns {TextInputComponent}
139
- */
140
- setPlaceholder(placeholder) {
141
- this.placeholder = Util.verifyString(placeholder, RangeError, 'TEXT_INPUT_PLACEHOLDER');
142
- return this;
143
- }
144
-
145
- /**
146
- * Sets the style of this text input component
147
- * @param {TextInputStyleResolvable} style The style of this text input component
148
- * @returns {TextInputComponent}
149
- */
150
- setStyle(style) {
151
- this.style = TextInputComponent.resolveStyle(style);
152
- return this;
153
- }
154
-
155
85
  /**
156
86
  * Sets the value of this text input component
157
87
  * @param {string} value Value of this text input component
@@ -3,7 +3,6 @@
3
3
  const { Channel } = require('./Channel');
4
4
  const TextBasedChannel = require('./interfaces/TextBasedChannel');
5
5
  const { RangeError } = require('../errors');
6
- const InteractionManager = require('../managers/InteractionManager');
7
6
  const MessageManager = require('../managers/MessageManager');
8
7
  const ThreadMemberManager = require('../managers/ThreadMemberManager');
9
8
  const ChannelFlags = require('../util/ChannelFlags');
@@ -42,24 +41,9 @@ class ThreadChannel extends Channel {
42
41
  * @type {ThreadMemberManager}
43
42
  */
44
43
  this.members = new ThreadMemberManager(this);
45
-
46
- /**
47
- * A manager of the interactions sent to this channel
48
- * @type {InteractionManager}
49
- */
50
- this.interactions = new InteractionManager(this);
51
44
  if (data) this._patch(data);
52
45
  }
53
46
 
54
- /**
55
- * First message in the thread
56
- * @type {?Message}
57
- * @readonly
58
- */
59
- get firstMessage() {
60
- return this.messages.cache.get(this.id);
61
- }
62
-
63
47
  _patch(data, partial = false) {
64
48
  super._patch(data);
65
49
 
@@ -614,9 +598,6 @@ class ThreadChannel extends Channel {
614
598
  sendTyping() {}
615
599
  createMessageCollector() {}
616
600
  awaitMessages() {}
617
- createMessageComponentCollector() {}
618
- awaitMessageComponent() {}
619
- bulkDelete() {}
620
601
  // Doesn't work on Thread channels; setRateLimitPerUser() {}
621
602
  // Doesn't work on Thread channels; setNSFW() {}
622
603
  }