djs-selfbot-v13 3.1.7 → 3.1.8

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 (149) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -45
  3. package/package.json +8 -37
  4. package/src/client/BaseClient.js +2 -3
  5. package/src/client/Client.js +187 -539
  6. package/src/client/actions/Action.js +18 -13
  7. package/src/client/actions/ActionsManager.js +7 -1
  8. package/src/client/actions/AutoModerationActionExecution.js +1 -0
  9. package/src/client/actions/AutoModerationRuleCreate.js +1 -0
  10. package/src/client/actions/AutoModerationRuleDelete.js +1 -0
  11. package/src/client/actions/AutoModerationRuleUpdate.js +1 -0
  12. package/src/client/actions/MessageCreate.js +0 -4
  13. package/src/client/actions/PresenceUpdate.js +17 -16
  14. package/src/client/websocket/WebSocketManager.js +11 -31
  15. package/src/client/websocket/WebSocketShard.js +39 -38
  16. package/src/client/websocket/handlers/CALL_CREATE.js +3 -3
  17. package/src/client/websocket/handlers/CALL_DELETE.js +2 -2
  18. package/src/client/websocket/handlers/CALL_UPDATE.js +2 -2
  19. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -13
  20. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +11 -11
  21. package/src/client/websocket/handlers/GUILD_CREATE.js +7 -0
  22. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +1 -0
  23. package/src/client/websocket/handlers/READY.js +47 -137
  24. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +7 -5
  25. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +6 -4
  26. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +32 -9
  27. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +2 -8
  28. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +1 -1
  29. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  30. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +1 -5
  31. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  32. package/src/client/websocket/handlers/index.js +15 -20
  33. package/src/errors/Messages.js +24 -69
  34. package/src/index.js +12 -43
  35. package/src/managers/ApplicationCommandManager.js +9 -12
  36. package/src/managers/ApplicationCommandPermissionsManager.js +3 -11
  37. package/src/managers/ChannelManager.js +3 -4
  38. package/src/managers/ClientUserSettingManager.js +161 -279
  39. package/src/managers/GuildBanManager.js +1 -1
  40. package/src/managers/GuildChannelManager.js +2 -0
  41. package/src/managers/GuildForumThreadManager.js +22 -28
  42. package/src/managers/GuildMemberManager.js +40 -216
  43. package/src/managers/GuildSettingManager.js +22 -15
  44. package/src/managers/MessageManager.js +42 -44
  45. package/src/managers/PermissionOverwriteManager.js +1 -1
  46. package/src/managers/ReactionUserManager.js +5 -5
  47. package/src/managers/RelationshipManager.js +81 -74
  48. package/src/managers/ThreadManager.js +12 -45
  49. package/src/managers/ThreadMemberManager.js +1 -1
  50. package/src/managers/UserManager.js +6 -10
  51. package/src/managers/UserNoteManager.js +53 -0
  52. package/src/rest/APIRequest.js +42 -20
  53. package/src/rest/DiscordAPIError.js +17 -16
  54. package/src/rest/RESTManager.js +1 -21
  55. package/src/rest/RequestHandler.js +35 -21
  56. package/src/structures/ApplicationCommand.js +19 -456
  57. package/src/structures/ApplicationRoleConnectionMetadata.js +3 -0
  58. package/src/structures/AutoModerationRule.js +5 -5
  59. package/src/structures/AutocompleteInteraction.js +1 -0
  60. package/src/structures/BaseGuildTextChannel.js +10 -12
  61. package/src/structures/BaseGuildVoiceChannel.js +16 -18
  62. package/src/structures/{Call.js → CallState.js} +17 -12
  63. package/src/structures/CategoryChannel.js +2 -0
  64. package/src/structures/Channel.js +2 -3
  65. package/src/structures/ClientPresence.js +12 -8
  66. package/src/structures/ClientUser.js +117 -336
  67. package/src/structures/ContextMenuInteraction.js +1 -1
  68. package/src/structures/DMChannel.js +29 -92
  69. package/src/structures/ForumChannel.js +0 -10
  70. package/src/structures/GroupDMChannel.js +387 -0
  71. package/src/structures/Guild.js +135 -271
  72. package/src/structures/GuildAuditLogs.js +0 -5
  73. package/src/structures/GuildChannel.js +16 -2
  74. package/src/structures/GuildMember.js +27 -145
  75. package/src/structures/Interaction.js +1 -62
  76. package/src/structures/Invite.js +35 -52
  77. package/src/structures/Message.js +228 -202
  78. package/src/structures/MessageAttachment.js +11 -0
  79. package/src/structures/MessageButton.js +1 -67
  80. package/src/structures/MessageEmbed.js +1 -1
  81. package/src/structures/MessageMentions.js +3 -2
  82. package/src/structures/MessagePayload.js +4 -46
  83. package/src/structures/MessageReaction.js +1 -1
  84. package/src/structures/MessageSelectMenu.js +1 -252
  85. package/src/structures/Modal.js +75 -180
  86. package/src/structures/Presence.js +2 -2
  87. package/src/structures/RichPresence.js +14 -34
  88. package/src/structures/Role.js +18 -2
  89. package/src/structures/SelectMenuInteraction.js +2 -151
  90. package/src/structures/Team.js +0 -49
  91. package/src/structures/TextInputComponent.js +0 -70
  92. package/src/structures/ThreadChannel.js +0 -19
  93. package/src/structures/User.js +117 -345
  94. package/src/structures/UserContextMenuInteraction.js +2 -2
  95. package/src/structures/VoiceState.js +74 -39
  96. package/src/structures/WebEmbed.js +38 -52
  97. package/src/structures/Webhook.js +17 -11
  98. package/src/structures/interfaces/Application.js +146 -23
  99. package/src/structures/interfaces/TextBasedChannel.js +411 -256
  100. package/src/util/ApplicationFlags.js +1 -1
  101. package/src/util/AttachmentFlags.js +38 -0
  102. package/src/util/Constants.js +106 -284
  103. package/src/util/Formatters.js +16 -2
  104. package/src/util/InviteFlags.js +29 -0
  105. package/src/util/LimitedCollection.js +1 -1
  106. package/src/util/Options.js +48 -68
  107. package/src/util/Permissions.js +5 -0
  108. package/src/util/PurchasedFlags.js +2 -0
  109. package/src/util/RemoteAuth.js +221 -356
  110. package/src/util/RoleFlags.js +37 -0
  111. package/src/util/Sweepers.js +1 -1
  112. package/src/util/Util.js +76 -36
  113. package/typings/enums.d.ts +18 -73
  114. package/typings/index.d.ts +873 -1225
  115. package/typings/rawDataTypes.d.ts +68 -9
  116. package/src/client/actions/InteractionCreate.js +0 -115
  117. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +0 -23
  118. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +0 -11
  119. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +0 -55
  120. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +0 -0
  121. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.js +0 -0
  122. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.js +0 -0
  123. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.js +0 -0
  124. package/src/client/websocket/handlers/INTERACTION_CREATE.js +0 -16
  125. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +0 -18
  126. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +0 -30
  127. package/src/client/websocket/handlers/MESSAGE_ACK.js +0 -16
  128. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.js +0 -0
  129. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +0 -0
  130. package/src/managers/DeveloperPortalManager.js +0 -104
  131. package/src/managers/GuildApplicationCommandManager.js +0 -28
  132. package/src/managers/GuildFolderManager.js +0 -24
  133. package/src/managers/SessionManager.js +0 -57
  134. package/src/rest/CaptchaSolver.js +0 -132
  135. package/src/structures/ClientApplication.js +0 -204
  136. package/src/structures/DeveloperPortalApplication.js +0 -520
  137. package/src/structures/GuildFolder.js +0 -75
  138. package/src/structures/InteractionResponse.js +0 -114
  139. package/src/structures/PartialGroupDMChannel.js +0 -433
  140. package/src/structures/Session.js +0 -81
  141. package/src/util/Voice.js +0 -1456
  142. package/src/util/arRPC/index.js +0 -229
  143. package/src/util/arRPC/process/detectable.json +0 -1
  144. package/src/util/arRPC/process/index.js +0 -102
  145. package/src/util/arRPC/process/native/index.js +0 -5
  146. package/src/util/arRPC/process/native/linux.js +0 -37
  147. package/src/util/arRPC/process/native/win32.js +0 -25
  148. package/src/util/arRPC/transports/ipc.js +0 -281
  149. package/src/util/arRPC/transports/websocket.js +0 -128
@@ -1,105 +1,14 @@
1
1
  'use strict';
2
2
 
3
- let ClientUser;
4
- const { VoiceConnection } = require('@discordjs/voice');
5
- const chalk = require('chalk');
6
- const { Events, Opcodes } = require('../../../util/Constants');
7
- const { VoiceConnection: VoiceConnection_patch } = require('../../../util/Voice');
8
- let firstReady = false;
9
-
10
- function patchVoice(client) {
11
- try {
12
- /* eslint-disable */
13
- VoiceConnection.prototype.configureNetworking = VoiceConnection_patch.prototype.configureNetworking;
14
- client.emit(
15
- 'debug',
16
- `${chalk.greenBright('[OK]')} Patched ${chalk.cyanBright(
17
- 'VoiceConnection.prototype.configureNetworking',
18
- )} [${chalk.bgMagentaBright('@discordjs/voice')} - ${chalk.redBright('v0.16.0')}]`,
19
- );
20
- /* eslint-enable */
21
- } catch (e) {
22
- client.emit(
23
- 'debug',
24
- `${chalk.redBright('[Fail]')} Patched ${chalk.cyanBright(
25
- 'VoiceConnection.prototype.configureNetworking',
26
- )} [${chalk.bgMagentaBright('@discordjs/voice')} - ${chalk.redBright('v0.16.0')}]\n${e.stack}`,
27
- );
28
- client.emit(
29
- Events.ERROR,
30
- `${chalk.redBright('[Fail]')} Patched ${chalk.cyanBright(
31
- 'VoiceConnection.prototype.configureNetworking',
32
- )} [${chalk.bgMagentaBright('@discordjs/voice')} - ${chalk.redBright('v0.16.0')}]`,
33
- );
34
- client.emit(
35
- Events.ERROR,
36
- `${chalk.redBright('[Error]')} Please install ${chalk.bgMagentaBright(
37
- '@discordjs/voice',
38
- )} version ${chalk.redBright('v0.16.0')}`,
39
- );
40
- }
41
- }
42
-
43
- module.exports = async (client, { d: data }, shard) => {
44
- if (!firstReady) {
45
- if (client.options.checkUpdate) {
46
- client.once('update', (currentVersion, newVersion) => {
47
- if (!newVersion) {
48
- console.log(`
49
- ${chalk.redBright('[WARNING]')} Cannot check new djs-selfbot-v13 version.
50
- Current: ${chalk.blueBright(currentVersion)}
51
-
52
- If you don't want to show this message, set ${chalk.cyanBright('checkUpdate')} to false
53
-
54
- const client = new Client({
55
- checkUpdate: false,
56
- });
57
-
58
- and using event update
59
- https://discordjs-self-v13.netlify.app/#/docs/docs/main/class/Client?scrollTo=e-update\n`);
60
- } else if (currentVersion !== newVersion && !currentVersion.includes('-')) {
61
- console.log(`
62
- ${chalk.yellowBright('[WARNING]')} New djs-selfbot-v13 version.
63
- Current: ${chalk.redBright(currentVersion)} => Latest: ${chalk.greenBright(newVersion)}
64
-
65
- If you don't want to show this message, set ${chalk.cyanBright('checkUpdate')} to false
66
-
67
- const client = new Client({
68
- checkUpdate: false,
69
- });
70
-
71
- and using event update
72
- https://discordjs-self-v13.netlify.app/#/docs/docs/main/class/Client?scrollTo=e-update\n`);
73
- } else {
74
- console.log(
75
- `
76
- ${chalk.greenBright('[OK]')} djs-selfbot-v13 is up to date. Current: ${chalk.blueBright(currentVersion)}
77
-
78
- If you don't want to show this message, set ${chalk.cyanBright('checkUpdate')} to false
79
-
80
- const client = new Client({
81
- checkUpdate: false,
82
- });
83
-
84
- and using event update
85
- https://discordjs-self-v13.netlify.app/#/docs/docs/main/class/Client?scrollTo=e-update\n`,
86
- );
87
- }
88
- });
89
- client.checkUpdate();
90
- }
3
+ const USER_REQUIRED_ACTION = require('./USER_REQUIRED_ACTION_UPDATE');
4
+ const { Opcodes } = require('../../../util/Constants');
91
5
 
92
- if (client.options.patchVoice) {
93
- patchVoice(client);
94
- }
6
+ let ClientUser;
95
7
 
96
- if (client.options.syncStatus) {
97
- client.customStatusAuto(client);
98
- }
99
- firstReady = true;
100
- }
8
+ module.exports = (client, { d: data }, shard) => {
9
+ // Check
10
+ USER_REQUIRED_ACTION(client, { d: data });
101
11
 
102
- client.session_id = data.session_id;
103
12
  if (client.user) {
104
13
  client.user._patch(data.user);
105
14
  } else {
@@ -108,31 +17,8 @@ module.exports = async (client, { d: data }, shard) => {
108
17
  client.users.cache.set(client.user.id, client.user);
109
18
  }
110
19
 
111
- client.settings._patch(data.user_settings);
112
-
113
- client.user.connectedAccounts = data.connected_accounts ?? [];
114
-
115
- client.relationships._setup(data.relationships);
116
-
117
- client.user._patchNote(data.notes);
118
-
119
- const syncTime = Date.now();
120
20
  for (const private_channel of data.private_channels) {
121
- const channel = client.channels._add(private_channel);
122
- // Rate limit warning
123
- if (client.options.DMSync) {
124
- client.ws.broadcast({
125
- op: Opcodes.DM_UPDATE,
126
- d: {
127
- channel_id: channel.id,
128
- },
129
- });
130
- }
131
- }
132
- if (client.options.DMSync) {
133
- console.warn(
134
- `Gateway Rate Limit Warning: Sending ${data.private_channels.length} Requests / ${Date.now() - syncTime || 1} ms`,
135
- );
21
+ client.channels._add(private_channel);
136
22
  }
137
23
 
138
24
  for (const guild of data.guilds) {
@@ -140,31 +26,55 @@ module.exports = async (client, { d: data }, shard) => {
140
26
  client.guilds._add(guild);
141
27
  }
142
28
 
29
+ const largeGuilds = data.guilds.filter(g => g.large);
30
+ client.emit('debug', `[READY] Received ${data.guilds.length} guilds, ${largeGuilds.length} large guilds`);
31
+
32
+ // User Notes
33
+ client.notes._reload(data.notes);
34
+
35
+ // Relationship
36
+ client.relationships._setup(data.relationships);
37
+
38
+ // ClientSetting
39
+ client.settings._patch(data.user_settings);
40
+
41
+ // GuildSetting
143
42
  for (const gSetting of Array.isArray(data.user_guild_settings) ? data.user_guild_settings : []) {
144
43
  const guild = client.guilds.cache.get(gSetting.guild_id);
145
44
  if (guild) guild.settings._patch(gSetting);
146
45
  }
46
+ // Todo: data.auth_session_id_hash
147
47
 
148
- const largeGuilds = data.guilds.filter(g => g.large);
149
-
150
- client.emit('debug', `[READY] Received ${data.guilds.length} guilds, ${largeGuilds.length} large guilds`);
151
-
152
- // Receive messages in large guilds
153
- for (const guild of largeGuilds) {
154
- await client.sleep(client.options.messageCreateEventGuildTimeout);
48
+ if (largeGuilds.length) {
155
49
  client.ws.broadcast({
156
- op: Opcodes.GUILD_SUBSCRIPTIONS,
50
+ op: Opcodes.GUILD_SUBSCRIPTIONS_BULK,
157
51
  d: {
158
- guild_id: guild.id,
159
- typing: true,
160
- threads: true,
161
- activities: true,
162
- thread_member_lists: [],
163
- members: [],
164
- channels: {},
52
+ subscriptions: largeGuilds.reduce((accumulator, guild) => {
53
+ accumulator[guild.id] = {
54
+ typing: true,
55
+ threads: true,
56
+ activities: true,
57
+ member_updates: true,
58
+ thread_member_lists: [],
59
+ members: [],
60
+ channels: {},
61
+ };
62
+ return accumulator;
63
+ }, {}),
165
64
  },
166
65
  });
167
66
  }
168
67
 
169
- shard.checkReady();
68
+ Promise.all(
69
+ data.private_channels.map(async (c, index) => {
70
+ if (client.options.DMChannelVoiceStatusSync < 1) return;
71
+ client.ws.broadcast({
72
+ op: Opcodes.DM_UPDATE,
73
+ d: {
74
+ channel_id: c.id,
75
+ },
76
+ });
77
+ await client.sleep(client.options.DMChannelVoiceStatusSync * index);
78
+ }),
79
+ ).then(() => shard.checkReady());
170
80
  };
@@ -1,17 +1,19 @@
1
1
  'use strict';
2
2
 
3
- const { Events, RelationshipTypes } = require('../../../util/Constants');
3
+ const { Events } = require('../../../util/Constants');
4
4
 
5
5
  module.exports = (client, { d: data }) => {
6
6
  if (data.user) {
7
7
  client.users._add(data.user);
8
8
  }
9
9
  client.relationships.cache.set(data.id, data.type);
10
+ client.relationships.friendNicknames.set(data.id, data.nickname);
11
+ client.relationships.sinceCache.set(data.id, new Date(data.since || 0));
10
12
  /**
11
- * Emitted whenever a relationship is updated.
13
+ * Emitted when a relationship is created, relevant to the current user.
12
14
  * @event Client#relationshipAdd
13
- * @param {Snowflake} user The userID that was updated
14
- * @param {RelationshipTypes} type The new relationship type
15
+ * @param {Snowflake} user Target userId
16
+ * @param {boolean} shouldNotify Whether the client should notify the user of this relationship's creation
15
17
  */
16
- client.emit(Events.RELATIONSHIP_ADD, data.id, RelationshipTypes[data.type]);
18
+ client.emit(Events.RELATIONSHIP_ADD, data.id, Boolean(data.should_notify));
17
19
  };
@@ -1,15 +1,17 @@
1
1
  'use strict';
2
2
 
3
- const { Events, RelationshipTypes } = require('../../../util/Constants');
3
+ const { Events } = require('../../../util/Constants');
4
4
 
5
5
  module.exports = (client, { d: data }) => {
6
6
  client.relationships.cache.delete(data.id);
7
- client.user.friendNicknames.delete(data.id);
7
+ client.relationships.friendNicknames.delete(data.id);
8
+ client.relationships.sinceCache.delete(data.id);
8
9
  /**
9
- * Emitted whenever a relationship is delete.
10
+ * Emitted when a relationship is removed, relevant to the current user.
10
11
  * @event Client#relationshipRemove
11
12
  * @param {Snowflake} user The userID that was updated
12
13
  * @param {RelationshipTypes} type The type of the old relationship
14
+ * @param {string | null} nickname The nickname of the user in this relationship (1-32 characters)
13
15
  */
14
- client.emit(Events.RELATIONSHIP_REMOVE, data.id, RelationshipTypes[data.type]);
16
+ client.emit(Events.RELATIONSHIP_REMOVE, data.id, data.type, data.nickname);
15
17
  };
@@ -1,18 +1,41 @@
1
1
  'use strict';
2
2
 
3
- const { Events, RelationshipTypes } = require('../../../util/Constants');
3
+ const { Events } = require('../../../util/Constants');
4
4
 
5
5
  module.exports = (client, { d: data }) => {
6
- client.relationships.cache.set(data.id, data.type);
7
6
  /**
8
- * Emitted whenever a relationship is updated.
7
+ * @typedef {Object} RelationshipUpdateObject
8
+ * @property {RelationshipTypes} type The type of relationship
9
+ * @property {Date} since When the user requested a relationship
10
+ * @property {string | null} nickname The nickname of the user in this relationship (1-32 characters)
11
+ */
12
+ /**
13
+ * Emitted when a relationship is updated, relevant to the current user (e.g. friend nickname changed).
14
+ * <info>This is not sent when the type of a relationship changes; see {@link Client#relationshipAdd} and {@link Client#relationshipRemove} for that.</info>
9
15
  * @event Client#relationshipUpdate
10
16
  * @param {Snowflake} user The userID that was updated
11
- * @param {RelationshipTypes} type The new relationship type
12
- * @param {Object} data The raw data
17
+ * @param {RelationshipUpdateObject} oldData Old data
18
+ * @param {RelationshipUpdateObject} newData New data
13
19
  */
14
- if ('nickname' in data) {
15
- client.user.friendNicknames.set(data.id, data.nickname);
16
- }
17
- client.emit(Events.RELATIONSHIP_UPDATE, data.id, RelationshipTypes[data.type], data);
20
+ const oldType = client.relationships.cache.get(data.id);
21
+ const oldSince = client.relationships.sinceCache.get(data.id);
22
+ const oldNickname = client.relationships.friendNicknames.get(data.id);
23
+ // Update
24
+ if (data.type) client.relationships.cache.set(data.id, data.type);
25
+ if (data.nickname) client.relationships.friendNicknames.set(data.id, data.nickname);
26
+ if (data.since) client.relationships.sinceCache.set(data.id, new Date(data.since || 0));
27
+ client.emit(
28
+ Events.RELATIONSHIP_UPDATE,
29
+ data.id,
30
+ {
31
+ type: oldType,
32
+ nickname: oldNickname,
33
+ since: oldSince,
34
+ },
35
+ {
36
+ type: data.type,
37
+ nickname: data.nickname,
38
+ since: new Date(data.since || 0),
39
+ },
40
+ );
18
41
  };
@@ -1,12 +1,6 @@
1
1
  'use strict';
2
- const { Events } = require('../../../util/Constants');
2
+
3
3
  module.exports = (client, { d: data }) => {
4
4
  const guild = client.guilds.cache.get(data.guild_id);
5
- guild?.settings._patch(data);
6
- /**
7
- * Emitted whenever guild settings are updated
8
- * @event Client#userGuildSettingsUpdate
9
- * @param {Guild} guild Guild
10
- */
11
- return client.emit(Events.USER_GUILD_SETTINGS_UPDATE, guild);
5
+ if (guild) guild?.settings._patch(data);
12
6
  };
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports = (client, { d: data }) => {
4
- client.user.notes.set(data.id, data.note);
4
+ client.notes.cache.set(data.id, data.note);
5
5
  };
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, { d: data }) => {
4
+ let msg;
5
+ switch (data.required_action) {
6
+ case undefined:
7
+ case null: {
8
+ msg = 'All required actions have been completed.';
9
+ break;
10
+ }
11
+ case 'AGREEMENTS': {
12
+ msg = 'You need to accept the new Terms of Service and Privacy Policy.';
13
+ // https://discord.com/api/v9/users/@me/agreements
14
+ client.api
15
+ .users('@me')
16
+ .agreements.patch({
17
+ data: {
18
+ terms: true,
19
+ privacy: true,
20
+ },
21
+ })
22
+ .then(() => {
23
+ client.emit(
24
+ 'debug',
25
+ '[USER_REQUIRED_ACTION] Successfully accepted the new Terms of Service and Privacy Policy.',
26
+ );
27
+ })
28
+ .catch(e => {
29
+ client.emit(
30
+ 'debug',
31
+ `[USER_REQUIRED_ACTION] Failed to accept the new Terms of Service and Privacy Policy: ${e}`,
32
+ );
33
+ });
34
+ break;
35
+ }
36
+ case 'REQUIRE_CAPTCHA': {
37
+ msg = 'You need to complete a captcha.';
38
+ break;
39
+ }
40
+ case 'REQUIRE_VERIFIED_EMAIL': {
41
+ msg = 'You need to verify your email.';
42
+ break;
43
+ }
44
+ case 'REQUIRE_REVERIFIED_EMAIL': {
45
+ msg = 'You need to reverify your email.';
46
+ break;
47
+ }
48
+ case 'REQUIRE_VERIFIED_PHONE': {
49
+ msg = 'You need to verify your phone number.';
50
+ break;
51
+ }
52
+ case 'REQUIRE_REVERIFIED_PHONE': {
53
+ msg = 'You need to reverify your phone number.';
54
+ break;
55
+ }
56
+ case 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE': {
57
+ msg = 'You need to verify your email or verify your phone number.';
58
+ break;
59
+ }
60
+ case 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE': {
61
+ msg = 'You need to reverify your email or verify your phone number.';
62
+ break;
63
+ }
64
+ case 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE': {
65
+ msg = 'You need to verify your email or reverify your phone number.';
66
+ break;
67
+ }
68
+ case 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE': {
69
+ msg = 'You need to reverify your email or reverify your phone number.';
70
+ break;
71
+ }
72
+ default: {
73
+ msg = `Unknown required action: ${data.required_action}`;
74
+ break;
75
+ }
76
+ }
77
+ client.emit('debug', `[USER_REQUIRED_ACTION] ${msg}`);
78
+ };
@@ -1,9 +1,5 @@
1
1
  'use strict';
2
- const { Events } = require('../../../util/Constants');
2
+
3
3
  module.exports = (client, { d: data }) => {
4
4
  client.settings._patch(data);
5
- if (('status' in data || 'custom_status' in data) && client.options.syncStatus) {
6
- client.customStatusAuto(client);
7
- }
8
- return client.emit(Events.USER_SETTINGS_UPDATE, data);
9
5
  };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, { d: data }) => {
6
+ const channel = client.channels.cache.get(data.id);
7
+ if (channel) {
8
+ const old = channel._clone();
9
+ channel.status = data.status;
10
+ client.emit(Events.CHANNEL_UPDATE, old, channel);
11
+ }
12
+ };
@@ -3,10 +3,6 @@
3
3
  const handlers = Object.fromEntries([
4
4
  ['READY', require('./READY')],
5
5
  ['RESUMED', require('./RESUMED')],
6
- ['RELATIONSHIP_ADD', require('./RELATIONSHIP_ADD')],
7
- ['RELATIONSHIP_REMOVE', require('./RELATIONSHIP_REMOVE')],
8
- ['RELATIONSHIP_UPDATE', require('./RELATIONSHIP_UPDATE')],
9
- ['APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE', require('./APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE')],
10
6
  ['APPLICATION_COMMAND_CREATE', require('./APPLICATION_COMMAND_CREATE')],
11
7
  ['APPLICATION_COMMAND_DELETE', require('./APPLICATION_COMMAND_DELETE')],
12
8
  ['APPLICATION_COMMAND_UPDATE', require('./APPLICATION_COMMAND_UPDATE')],
@@ -15,9 +11,6 @@ const handlers = Object.fromEntries([
15
11
  ['AUTO_MODERATION_RULE_CREATE', require('./AUTO_MODERATION_RULE_CREATE')],
16
12
  ['AUTO_MODERATION_RULE_DELETE', require('./AUTO_MODERATION_RULE_DELETE')],
17
13
  ['AUTO_MODERATION_RULE_UPDATE', require('./AUTO_MODERATION_RULE_UPDATE')],
18
- ['CALL_CREATE', require('./CALL_CREATE')],
19
- ['CALL_UPDATE', require('./CALL_UPDATE')],
20
- ['CALL_DELETE', require('./CALL_DELETE')],
21
14
  ['GUILD_CREATE', require('./GUILD_CREATE')],
22
15
  ['GUILD_DELETE', require('./GUILD_DELETE')],
23
16
  ['GUILD_UPDATE', require('./GUILD_UPDATE')],
@@ -27,8 +20,6 @@ const handlers = Object.fromEntries([
27
20
  ['GUILD_MEMBER_REMOVE', require('./GUILD_MEMBER_REMOVE')],
28
21
  ['GUILD_MEMBER_UPDATE', require('./GUILD_MEMBER_UPDATE')],
29
22
  ['GUILD_MEMBERS_CHUNK', require('./GUILD_MEMBERS_CHUNK')],
30
- ['GUILD_MEMBER_LIST_UPDATE', require('./GUILD_MEMBER_LIST_UPDATE.js')],
31
- ['GUILD_APPLICATION_COMMANDS_UPDATE', require('./GUILD_APPLICATION_COMMANDS_UPDATE.js')],
32
23
  ['GUILD_INTEGRATIONS_UPDATE', require('./GUILD_INTEGRATIONS_UPDATE')],
33
24
  ['GUILD_ROLE_CREATE', require('./GUILD_ROLE_CREATE')],
34
25
  ['GUILD_ROLE_DELETE', require('./GUILD_ROLE_DELETE')],
@@ -40,9 +31,6 @@ const handlers = Object.fromEntries([
40
31
  ['CHANNEL_DELETE', require('./CHANNEL_DELETE')],
41
32
  ['CHANNEL_UPDATE', require('./CHANNEL_UPDATE')],
42
33
  ['CHANNEL_PINS_UPDATE', require('./CHANNEL_PINS_UPDATE')],
43
- ['CHANNEL_RECIPIENT_ADD', require('./CHANNEL_RECIPIENT_ADD')],
44
- ['CHANNEL_RECIPIENT_REMOVE', require('./CHANNEL_RECIPIENT_REMOVE')],
45
- ['MESSAGE_ACK', require('./MESSAGE_ACK')],
46
34
  ['MESSAGE_CREATE', require('./MESSAGE_CREATE')],
47
35
  ['MESSAGE_DELETE', require('./MESSAGE_DELETE')],
48
36
  ['MESSAGE_UPDATE', require('./MESSAGE_UPDATE')],
@@ -57,20 +45,12 @@ const handlers = Object.fromEntries([
57
45
  ['THREAD_LIST_SYNC', require('./THREAD_LIST_SYNC')],
58
46
  ['THREAD_MEMBER_UPDATE', require('./THREAD_MEMBER_UPDATE')],
59
47
  ['THREAD_MEMBERS_UPDATE', require('./THREAD_MEMBERS_UPDATE')],
60
- ['USER_SETTINGS_UPDATE', require('./USER_SETTINGS_UPDATE')], // Opcode 0
61
- ['USER_GUILD_SETTINGS_UPDATE', require('./USER_GUILD_SETTINGS_UPDATE')],
62
- // USER_SETTINGS_PROTO_UPDATE // opcode 0
63
- ['USER_NOTE_UPDATE', require('./USER_NOTE_UPDATE')],
64
48
  ['USER_UPDATE', require('./USER_UPDATE')],
65
49
  ['PRESENCE_UPDATE', require('./PRESENCE_UPDATE')],
66
50
  ['TYPING_START', require('./TYPING_START')],
67
51
  ['VOICE_STATE_UPDATE', require('./VOICE_STATE_UPDATE')],
68
52
  ['VOICE_SERVER_UPDATE', require('./VOICE_SERVER_UPDATE')],
69
53
  ['WEBHOOKS_UPDATE', require('./WEBHOOKS_UPDATE')],
70
- ['INTERACTION_CREATE', require('./INTERACTION_CREATE')],
71
- ['INTERACTION_SUCCESS', require('./INTERACTION_SUCCESS')],
72
- ['INTERACTION_MODAL_CREATE', require('./INTERACTION_MODAL_CREATE')],
73
- ['INTERACTION_FAILURE', require('./INTERACTION_FAILURE')],
74
54
  ['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')],
75
55
  ['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],
76
56
  ['STAGE_INSTANCE_DELETE', require('./STAGE_INSTANCE_DELETE')],
@@ -81,6 +61,21 @@ const handlers = Object.fromEntries([
81
61
  ['GUILD_SCHEDULED_EVENT_USER_ADD', require('./GUILD_SCHEDULED_EVENT_USER_ADD')],
82
62
  ['GUILD_SCHEDULED_EVENT_USER_REMOVE', require('./GUILD_SCHEDULED_EVENT_USER_REMOVE')],
83
63
  ['GUILD_AUDIT_LOG_ENTRY_CREATE', require('./GUILD_AUDIT_LOG_ENTRY_CREATE')],
64
+ // Selfbot
65
+ ['RELATIONSHIP_ADD', require('./RELATIONSHIP_ADD')],
66
+ ['RELATIONSHIP_REMOVE', require('./RELATIONSHIP_REMOVE')],
67
+ ['RELATIONSHIP_UPDATE', require('./RELATIONSHIP_UPDATE')],
68
+ ['USER_NOTE_UPDATE', require('./USER_NOTE_UPDATE')],
69
+ ['CHANNEL_RECIPIENT_ADD', require('./CHANNEL_RECIPIENT_ADD')],
70
+ ['CHANNEL_RECIPIENT_REMOVE', require('./CHANNEL_RECIPIENT_REMOVE')],
71
+ ['INTERACTION_MODAL_CREATE', require('./INTERACTION_MODAL_CREATE')],
72
+ ['USER_REQUIRED_ACTION_UPDATE', require('./USER_REQUIRED_ACTION_UPDATE')],
73
+ ['CALL_CREATE', require('./CALL_CREATE')],
74
+ ['CALL_UPDATE', require('./CALL_UPDATE')],
75
+ ['CALL_DELETE', require('./CALL_DELETE')],
76
+ ['USER_SETTINGS_UPDATE', require('./USER_SETTINGS_UPDATE')],
77
+ ['USER_GUILD_SETTINGS_UPDATE', require('./USER_GUILD_SETTINGS_UPDATE')],
78
+ ['VOICE_CHANNEL_STATUS_UPDATE', require('./VOICE_CHANNEL_STATUS_UPDATE')],
84
79
  ]);
85
80
 
86
81
  module.exports = handlers;