djs-selfbot-v13 3.1.6 → 3.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +31 -16
  2. package/package.json +15 -8
  3. package/src/client/BaseClient.js +3 -2
  4. package/src/client/Client.js +539 -187
  5. package/src/client/actions/Action.js +13 -18
  6. package/src/client/actions/ActionsManager.js +1 -7
  7. package/src/client/actions/AutoModerationActionExecution.js +0 -1
  8. package/src/client/actions/AutoModerationRuleCreate.js +0 -1
  9. package/src/client/actions/AutoModerationRuleDelete.js +0 -1
  10. package/src/client/actions/AutoModerationRuleUpdate.js +0 -1
  11. package/src/client/actions/InteractionCreate.js +115 -0
  12. package/src/client/actions/MessageCreate.js +4 -0
  13. package/src/client/actions/PresenceUpdate.js +16 -17
  14. package/src/client/websocket/WebSocketManager.js +31 -11
  15. package/src/client/websocket/WebSocketShard.js +38 -39
  16. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -0
  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 +13 -16
  21. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +11 -11
  22. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +11 -0
  23. package/src/client/websocket/handlers/GUILD_CREATE.js +0 -7
  24. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +55 -0
  25. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +0 -0
  26. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.js +0 -0
  27. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.js +0 -0
  28. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.js +0 -0
  29. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  30. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  31. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +0 -1
  32. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  33. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  34. package/src/client/websocket/handlers/READY.js +137 -47
  35. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +5 -7
  36. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +4 -6
  37. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +9 -32
  38. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.js +0 -0
  39. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +8 -2
  40. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +1 -1
  41. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -1
  42. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +0 -0
  43. package/src/client/websocket/handlers/index.js +20 -15
  44. package/src/errors/Messages.js +69 -24
  45. package/src/index.js +43 -12
  46. package/src/managers/ApplicationCommandManager.js +12 -9
  47. package/src/managers/ApplicationCommandPermissionsManager.js +11 -3
  48. package/src/managers/ChannelManager.js +4 -2
  49. package/src/managers/ClientUserSettingManager.js +279 -161
  50. package/src/managers/DeveloperPortalManager.js +104 -0
  51. package/src/managers/GuildApplicationCommandManager.js +28 -0
  52. package/src/managers/GuildBanManager.js +1 -1
  53. package/src/managers/GuildChannelManager.js +0 -2
  54. package/src/managers/GuildFolderManager.js +24 -0
  55. package/src/managers/GuildForumThreadManager.js +28 -22
  56. package/src/managers/GuildMemberManager.js +216 -40
  57. package/src/managers/GuildSettingManager.js +15 -22
  58. package/src/managers/MessageManager.js +44 -42
  59. package/src/managers/PermissionOverwriteManager.js +1 -1
  60. package/src/managers/ReactionUserManager.js +5 -5
  61. package/src/managers/RelationshipManager.js +74 -81
  62. package/src/managers/SessionManager.js +57 -0
  63. package/src/managers/ThreadManager.js +45 -12
  64. package/src/managers/ThreadMemberManager.js +1 -1
  65. package/src/managers/UserManager.js +10 -6
  66. package/src/rest/APIRequest.js +20 -42
  67. package/src/rest/CaptchaSolver.js +132 -0
  68. package/src/rest/DiscordAPIError.js +16 -17
  69. package/src/rest/RESTManager.js +21 -1
  70. package/src/rest/RequestHandler.js +21 -35
  71. package/src/structures/ApplicationCommand.js +456 -19
  72. package/src/structures/ApplicationRoleConnectionMetadata.js +0 -3
  73. package/src/structures/AutoModerationRule.js +5 -5
  74. package/src/structures/AutocompleteInteraction.js +0 -1
  75. package/src/structures/BaseGuildTextChannel.js +12 -10
  76. package/src/structures/BaseGuildVoiceChannel.js +18 -16
  77. package/src/structures/{CallState.js → Call.js} +12 -17
  78. package/src/structures/CategoryChannel.js +0 -2
  79. package/src/structures/Channel.js +3 -2
  80. package/src/structures/ClientApplication.js +204 -0
  81. package/src/structures/ClientPresence.js +8 -12
  82. package/src/structures/ClientUser.js +336 -117
  83. package/src/structures/ContextMenuInteraction.js +1 -1
  84. package/src/structures/DMChannel.js +92 -29
  85. package/src/structures/DeveloperPortalApplication.js +520 -0
  86. package/src/structures/ForumChannel.js +10 -0
  87. package/src/structures/Guild.js +271 -135
  88. package/src/structures/GuildAuditLogs.js +5 -0
  89. package/src/structures/GuildChannel.js +2 -16
  90. package/src/structures/GuildFolder.js +75 -0
  91. package/src/structures/GuildMember.js +145 -27
  92. package/src/structures/Interaction.js +62 -1
  93. package/src/structures/InteractionResponse.js +114 -0
  94. package/src/structures/Invite.js +52 -35
  95. package/src/structures/Message.js +202 -222
  96. package/src/structures/MessageAttachment.js +0 -11
  97. package/src/structures/MessageButton.js +67 -1
  98. package/src/structures/MessageEmbed.js +1 -1
  99. package/src/structures/MessageMentions.js +2 -3
  100. package/src/structures/MessagePayload.js +46 -4
  101. package/src/structures/MessageReaction.js +1 -1
  102. package/src/structures/MessageSelectMenu.js +252 -1
  103. package/src/structures/Modal.js +180 -75
  104. package/src/structures/PartialGroupDMChannel.js +433 -0
  105. package/src/structures/Presence.js +2 -2
  106. package/src/structures/RichPresence.js +34 -14
  107. package/src/structures/Role.js +2 -18
  108. package/src/structures/SelectMenuInteraction.js +151 -2
  109. package/src/structures/Session.js +81 -0
  110. package/src/structures/Team.js +49 -0
  111. package/src/structures/TextInputComponent.js +70 -0
  112. package/src/structures/ThreadChannel.js +19 -0
  113. package/src/structures/User.js +345 -117
  114. package/src/structures/UserContextMenuInteraction.js +2 -2
  115. package/src/structures/VoiceState.js +39 -74
  116. package/src/structures/WebEmbed.js +52 -38
  117. package/src/structures/Webhook.js +11 -17
  118. package/src/structures/interfaces/Application.js +23 -146
  119. package/src/structures/interfaces/TextBasedChannel.js +256 -411
  120. package/src/util/ApplicationFlags.js +1 -1
  121. package/src/util/Constants.js +284 -106
  122. package/src/util/Formatters.js +2 -16
  123. package/src/util/LimitedCollection.js +1 -1
  124. package/src/util/Options.js +68 -48
  125. package/src/util/Permissions.js +0 -5
  126. package/src/util/PurchasedFlags.js +0 -2
  127. package/src/util/RemoteAuth.js +356 -221
  128. package/src/util/Sweepers.js +1 -1
  129. package/src/util/Util.js +36 -76
  130. package/src/util/Voice.js +1456 -0
  131. package/src/util/arRPC/index.js +229 -0
  132. package/src/util/arRPC/process/detectable.json +1 -0
  133. package/src/util/arRPC/process/index.js +102 -0
  134. package/src/util/arRPC/process/native/index.js +5 -0
  135. package/src/util/arRPC/process/native/linux.js +37 -0
  136. package/src/util/arRPC/process/native/win32.js +25 -0
  137. package/src/util/arRPC/transports/ipc.js +281 -0
  138. package/src/util/arRPC/transports/websocket.js +128 -0
  139. package/typings/enums.d.ts +73 -18
  140. package/typings/index.d.ts +1249 -897
  141. package/typings/rawDataTypes.d.ts +9 -68
  142. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +0 -78
  143. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +0 -12
  144. package/src/managers/UserNoteManager.js +0 -53
  145. package/src/structures/GroupDMChannel.js +0 -387
  146. package/src/util/AttachmentFlags.js +0 -38
  147. package/src/util/InviteFlags.js +0 -29
  148. package/src/util/RoleFlags.js +0 -37
@@ -0,0 +1,229 @@
1
+ 'use strict';
2
+
3
+ const { EventEmitter } = require('node:events');
4
+ const ProcessServer = require('./process/index.js');
5
+ const IPCServer = require('./transports/ipc.js');
6
+ const WSServer = require('./transports/websocket.js');
7
+ const { RichPresence } = require('../../structures/RichPresence.js');
8
+ const { NitroType } = require('../Constants.js');
9
+
10
+ // eslint-disable-next-line no-useless-escape
11
+ const checkUrl = url => /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/.test(url);
12
+
13
+ let socketId = 0;
14
+ module.exports = class RPCServer extends EventEmitter {
15
+ constructor(client, debug = false) {
16
+ super();
17
+ Object.defineProperty(this, 'client', { value: client });
18
+ return (async () => {
19
+ this.debug = debug;
20
+ this.onConnection = this.onConnection.bind(this);
21
+ this.onMessage = this.onMessage.bind(this);
22
+ this.onClose = this.onClose.bind(this);
23
+
24
+ const handlers = {
25
+ connection: this.onConnection,
26
+ message: this.onMessage,
27
+ close: this.onClose,
28
+ };
29
+
30
+ this.ipc = await new IPCServer(handlers, this.debug);
31
+ this.ws = await new WSServer(handlers, this.debug);
32
+ this.process = await new ProcessServer(handlers, this.debug);
33
+
34
+ return this;
35
+ })();
36
+ }
37
+
38
+ onConnection(socket) {
39
+ socket.send({
40
+ cmd: 'DISPATCH',
41
+ evt: 'READY',
42
+
43
+ data: {
44
+ v: 1,
45
+ // Needed otherwise some stuff errors out parsing json strictly
46
+ user: {
47
+ // Mock user data using arRPC app/bot
48
+ id: this.client?.user?.id ?? '1045800378228281345',
49
+ username: this.client?.user?.username ?? 'arRPC',
50
+ discriminator: this.client?.user?.discriminator ?? '0000',
51
+ avatar: this.client?.user?.avatar,
52
+ flags: this.client?.user?.flags?.bitfield ?? 0,
53
+ premium_type: this.client?.user?.nitroType ? NitroType[this.client?.user?.nitroType] : 0,
54
+ },
55
+ config: {
56
+ api_endpoint: '//discord.com/api',
57
+ cdn_host: 'cdn.discordapp.com',
58
+ environment: 'production',
59
+ },
60
+ },
61
+ });
62
+
63
+ socket.socketId = socketId++;
64
+
65
+ this.emit('connection', socket);
66
+ }
67
+
68
+ onClose(socket) {
69
+ this.emit('activity', {
70
+ activity: null,
71
+ pid: socket.lastPid,
72
+ socketId: socket.socketId.toString(),
73
+ });
74
+
75
+ this.emit('close', socket);
76
+ }
77
+
78
+ async onMessage(socket, { cmd, args, nonce }) {
79
+ this.emit('message', { socket, cmd, args, nonce });
80
+
81
+ switch (cmd) {
82
+ case 'SET_ACTIVITY':
83
+ if (!socket.clientInfo || !socket.clientAssets) {
84
+ // https://discord.com/api/v9/oauth2/applications/:id/rpc
85
+ socket.clientInfo = await this.client.api.oauth2.applications(socket.clientId).rpc.get();
86
+ socket.clientAssets = await this.client.api.oauth2.applications(socket.clientId).assets.get();
87
+ }
88
+ // eslint-disable-next-line no-case-declarations
89
+ const { activity, pid } = args; // Translate given parameters into what discord dispatch expects
90
+
91
+ if (!activity) {
92
+ return this.emit('activity', {
93
+ activity: null,
94
+ pid,
95
+ socketId: socket.socketId.toString(),
96
+ });
97
+ }
98
+ // eslint-disable-next-line no-case-declarations
99
+ const { buttons, timestamps, instance, assets } = activity;
100
+
101
+ socket.lastPid = pid ?? socket.lastPid;
102
+
103
+ // eslint-disable-next-line no-case-declarations
104
+ const metadata = {};
105
+ // eslint-disable-next-line no-case-declarations
106
+ const extra = {};
107
+ if (buttons) {
108
+ // Map buttons into expected metadata
109
+ metadata.button_urls = buttons.map(x => x.url);
110
+ extra.buttons = buttons.map(x => x.label);
111
+ }
112
+
113
+ if (assets?.large_image) {
114
+ if (checkUrl(assets.large_image)) {
115
+ assets.large_image = assets.large_image
116
+ .replace('https://cdn.discordapp.com/', 'mp:')
117
+ .replace('http://cdn.discordapp.com/', 'mp:')
118
+ .replace('https://media.discordapp.net/', 'mp:')
119
+ .replace('http://media.discordapp.net/', 'mp:');
120
+ if (!assets.large_image.startsWith('mp:')) {
121
+ // Fetch
122
+ const data = await RichPresence.getExternal(this.client, socket.clientId, assets.large_image);
123
+ assets.large_image = data[0].external_asset_path;
124
+ }
125
+ }
126
+ if (/^[0-9]{17,19}$/.test(assets.large_image)) {
127
+ // ID Assets
128
+ }
129
+ if (
130
+ assets.large_image.startsWith('mp:') ||
131
+ assets.large_image.startsWith('youtube:') ||
132
+ assets.large_image.startsWith('spotify:')
133
+ ) {
134
+ // Image
135
+ }
136
+ if (assets.large_image.startsWith('external/')) {
137
+ assets.large_image = `mp:${assets.large_image}`;
138
+ } else {
139
+ const l = socket.clientAssets.find(o => o.name == assets.large_image);
140
+ if (l) assets.large_image = l.id;
141
+ }
142
+ }
143
+
144
+ if (assets?.small_image) {
145
+ if (checkUrl(assets.small_image)) {
146
+ assets.small_image = assets.small_image
147
+ .replace('https://cdn.discordapp.com/', 'mp:')
148
+ .replace('http://cdn.discordapp.com/', 'mp:')
149
+ .replace('https://media.discordapp.net/', 'mp:')
150
+ .replace('http://media.discordapp.net/', 'mp:');
151
+ if (!assets.small_image.startsWith('mp:')) {
152
+ // Fetch
153
+ const data = await RichPresence.getExternal(this.client, socket.clientId, assets.small_image);
154
+ assets.small_image = data[0].external_asset_path;
155
+ }
156
+ }
157
+ if (/^[0-9]{17,19}$/.test(assets.small_image)) {
158
+ // ID Assets
159
+ }
160
+ if (
161
+ assets.small_image.startsWith('mp:') ||
162
+ assets.small_image.startsWith('youtube:') ||
163
+ assets.small_image.startsWith('spotify:')
164
+ ) {
165
+ // Image
166
+ }
167
+ if (assets.small_image.startsWith('external/')) {
168
+ assets.small_image = `mp:${assets.small_image}`;
169
+ } else {
170
+ const l = socket.clientAssets.find(o => o.name == assets.small_image);
171
+ if (l) assets.small_image = l.id;
172
+ }
173
+ }
174
+
175
+ if (timestamps) {
176
+ for (const x in timestamps) {
177
+ // Translate s -> ms timestamps
178
+ if (Date.now().toString().length - timestamps[x].toString().length > 2) {
179
+ timestamps[x] = Math.floor(1000 * timestamps[x]);
180
+ }
181
+ }
182
+ }
183
+
184
+ this.emit('activity', {
185
+ activity: {
186
+ application_id: socket.clientId,
187
+ type: 0,
188
+ name: socket.clientInfo.name,
189
+ metadata,
190
+ assets,
191
+ flags: instance ? 1 << 0 : 0,
192
+ ...activity,
193
+ ...extra,
194
+ },
195
+ pid,
196
+ socketId: socket.socketId.toString(),
197
+ });
198
+
199
+ socket.send?.({
200
+ cmd,
201
+ data: null,
202
+ evt: null,
203
+ nonce,
204
+ });
205
+
206
+ break;
207
+
208
+ case 'GUILD_TEMPLATE_BROWSER':
209
+ case 'INVITE_BROWSER':
210
+ // eslint-disable-next-line no-case-declarations
211
+ const { code } = args;
212
+ socket.send({
213
+ cmd,
214
+ data: {
215
+ code,
216
+ },
217
+ nonce,
218
+ });
219
+
220
+ this.emit(cmd === 'INVITE_BROWSER' ? 'invite' : 'guild-template', code);
221
+ break;
222
+
223
+ case 'DEEP_LINK':
224
+ this.emit('link', args.params);
225
+ break;
226
+ }
227
+ return 0;
228
+ }
229
+ };