discord-sb.js 1.0.7 → 1.0.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discord-sb.js",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "An unofficial discord.js fork for creating selfbots",
5
5
  "main": "./src/index.js",
6
6
  "types": "./typings/index.d.ts",
@@ -278,8 +278,11 @@ class QuestManager extends BaseManager {
278
278
  * @returns {Promise<void>}
279
279
  */
280
280
  async doingQuest(quest) {
281
- const questName = quest.config.messages?.quest_name || 'Unknown Quest';
281
+ if (!(quest instanceof Quest)) {
282
+ quest = new Quest(quest);
283
+ }
282
284
 
285
+ const questName = quest.config.messages?.quest_name || 'Unknown Quest';
283
286
  if (!quest.isEnrolledQuest()) await this.acceptQuest(quest.id);
284
287
 
285
288
  const taskConfig = quest.config.task_config;
@@ -364,7 +367,8 @@ class QuestManager extends BaseManager {
364
367
 
365
368
  /**
366
369
  * Get cache size
367
- * @returns {number}
370
+ * @type {number}
371
+ * @readonly
368
372
  */
369
373
  get size() {
370
374
  return this.cache.size;
@@ -7,6 +7,33 @@ const { Message } = require('../structures/Message');
7
7
  const ThreadMember = require('../structures/ThreadMember');
8
8
  const User = require('../structures/User');
9
9
 
10
+ const ALLOWED_CONNECTED_ACCOUNT_TYPES = new Set([
11
+ 'spotify',
12
+ 'twitter',
13
+ 'x',
14
+ 'github',
15
+ 'youtube',
16
+ 'twitch',
17
+ 'steam',
18
+ 'reddit',
19
+ 'facebook',
20
+ 'roblox',
21
+ 'tiktok',
22
+ 'domain',
23
+ 'bluesky',
24
+ 'amazonmusic',
25
+ 'battlenet',
26
+ 'bungeenet',
27
+ 'crunchyroll',
28
+ 'ebay',
29
+ 'epicgames',
30
+ 'lol',
31
+ 'paypal',
32
+ 'playstation',
33
+ 'riotgames',
34
+ 'xbox',
35
+ ]);
36
+
10
37
  /**
11
38
  * Manages API methods for users and stores their cache.
12
39
  * @extends {CachedManager}
@@ -118,6 +145,25 @@ class UserManager extends CachedManager {
118
145
  data.accent_color = profile.user_profile.accent_color;
119
146
  }
120
147
  }
148
+ if (profile) {
149
+ data.premiumSince = profile.premium_since ?? null;
150
+ data.premiumGuildSince = profile.premium_guild_since ?? null;
151
+ if (typeof profile.premium_type !== 'undefined') data.premiumType = profile.premium_type;
152
+ data.connectedAccounts = Array.isArray(profile.connected_accounts)
153
+ ? profile.connected_accounts.filter(ca => ALLOWED_CONNECTED_ACCOUNT_TYPES.has(ca?.type))
154
+ : null;
155
+ if (typeof profile.legacy_username !== 'undefined') data.legacyUsername = profile.legacy_username;
156
+ else if (typeof profile.user?.legacy_username !== 'undefined') data.legacyUsername = profile.user.legacy_username;
157
+ if (typeof profile.user?.premium_type !== 'undefined' && typeof data.premiumType === 'undefined') {
158
+ data.premiumType = profile.user.premium_type;
159
+ }
160
+ }
161
+ if (typeof data.premium_type !== 'undefined' && typeof data.premiumType === 'undefined') {
162
+ data.premiumType = data.premium_type;
163
+ }
164
+ data.mutualFriendsCount = profile?.mutual_friends_count ?? null;
165
+ data.mutualGuilds = profile?.mutual_guilds ?? null;
166
+ data.mutualGuildsCount = Array.isArray(data.mutualGuilds) ? data.mutualGuilds.length : null;
121
167
  return this._add(data, cache);
122
168
  }
123
169
 
@@ -30,6 +30,22 @@ class User extends Base {
30
30
 
31
31
  this.flags = null;
32
32
 
33
+ this.premiumSinceTimestamp = null;
34
+
35
+ this.premiumGuildSinceTimestamp = null;
36
+
37
+ this.premiumType = null;
38
+
39
+ this.legacyUsername = null;
40
+
41
+ this.connectedAccounts = null;
42
+
43
+ this.mutualFriendsCount = null;
44
+
45
+ this.mutualGuilds = null;
46
+
47
+ this.mutualGuildsCount = null;
48
+
33
49
  this._patch(data);
34
50
  }
35
51
 
@@ -136,6 +152,111 @@ class User extends Base {
136
152
  this.pronouns = data.pronouns;
137
153
  }
138
154
 
155
+ const premiumSince = 'premium_since' in data ? data.premium_since : data.premiumSince;
156
+ if (typeof premiumSince !== 'undefined') {
157
+ /**
158
+ * Timestamp the user started boosting Nitro
159
+ * @type {?number}
160
+ */
161
+ this.premiumSinceTimestamp = premiumSince ? new Date(premiumSince).getTime() : null;
162
+ } else {
163
+ this.premiumSinceTimestamp ??= null;
164
+ }
165
+
166
+ const premiumGuildSince = 'premium_guild_since' in data ? data.premium_guild_since : data.premiumGuildSince;
167
+ if (typeof premiumGuildSince !== 'undefined') {
168
+ /**
169
+ * Timestamp the user started boosting the mutual guild (if provided)
170
+ * @type {?number}
171
+ */
172
+ this.premiumGuildSinceTimestamp = premiumGuildSince ? new Date(premiumGuildSince).getTime() : null;
173
+ } else {
174
+ this.premiumGuildSinceTimestamp ??= null;
175
+ }
176
+
177
+ if ('premium_type' in data) {
178
+ /**
179
+ * Premium type level for this user
180
+ * @type {?number}
181
+ */
182
+ this.premiumType = data.premium_type ?? null;
183
+ } else if ('premiumType' in data) {
184
+ this.premiumType = data.premiumType ?? null;
185
+ } else {
186
+ this.premiumType ??= null;
187
+ }
188
+
189
+ if ('legacy_username' in data) {
190
+ /**
191
+ * Legacy username (pre-unique username migration)
192
+ * @type {?string}
193
+ */
194
+ this.legacyUsername = data.legacy_username ?? null;
195
+ } else if ('legacyUsername' in data) {
196
+ this.legacyUsername = data.legacyUsername ?? null;
197
+ } else {
198
+ this.legacyUsername ??= null;
199
+ }
200
+
201
+ /**
202
+ * @typedef {Object} ConnectedAccount
203
+ * @property {string} id The id of the connected account
204
+ * @property {string} name The name of the connected account
205
+ * @property {string} type The type of the connected account (ex: spotify, twitter, ...)
206
+ * @property {?boolean} [verified] Whether the connection is verified
207
+ * @property {?number} [visibility] Visibility of the connection
208
+ */
209
+
210
+ if ('connected_accounts' in data) {
211
+ /**
212
+ * Connected accounts for this user
213
+ * @type {?ConnectedAccount[]}
214
+ */
215
+ this.connectedAccounts = data.connected_accounts ?? null;
216
+ } else if ('connectedAccounts' in data) {
217
+ this.connectedAccounts = data.connectedAccounts ?? null;
218
+ } else {
219
+ this.connectedAccounts ??= null;
220
+ }
221
+
222
+ /**
223
+ * @typedef {Object} MutualGuild
224
+ * @property {Snowflake} id The id of the mutual guild
225
+ * @property {?string} nick The nickname of the user in the mutual guild
226
+ */
227
+
228
+ if ('mutualGuilds' in data) {
229
+ /**
230
+ * The guilds that this user shares with the client user
231
+ * @type {?MutualGuild[]}
232
+ */
233
+ this.mutualGuilds = data.mutualGuilds ?? null;
234
+ } else {
235
+ this.mutualGuilds ??= null;
236
+ }
237
+
238
+ if ('mutualGuildsCount' in data) {
239
+ /**
240
+ * The number of guilds that this user shares with the client user
241
+ * @type {?number}
242
+ */
243
+ this.mutualGuildsCount = data.mutualGuildsCount;
244
+ } else if (this.mutualGuildsCount == null && Array.isArray(this.mutualGuilds)) {
245
+ this.mutualGuildsCount = this.mutualGuilds.length;
246
+ } else {
247
+ this.mutualGuildsCount ??= null;
248
+ }
249
+
250
+ if ('mutualFriendsCount' in data) {
251
+ /**
252
+ * The number of friends that this user shares with the client user
253
+ * @type {?number}
254
+ */
255
+ this.mutualFriendsCount = data.mutualFriendsCount;
256
+ } else {
257
+ this.mutualFriendsCount ??= null;
258
+ }
259
+
139
260
  if ('system' in data) {
140
261
  /**
141
262
  * Whether the user is an Official Discord System user (part of the urgent message system)
@@ -303,6 +424,24 @@ class User extends Base {
303
424
  return new Date(this.createdTimestamp);
304
425
  }
305
426
 
427
+ /**
428
+ * The time the user started Nitro
429
+ * @type {?Date}
430
+ * @readonly
431
+ */
432
+ get premiumSince() {
433
+ return this.premiumSinceTimestamp ? new Date(this.premiumSinceTimestamp) : null;
434
+ }
435
+
436
+ /**
437
+ * The time the user started boosting the mutual guild (if provided)
438
+ * @type {?Date}
439
+ * @readonly
440
+ */
441
+ get premiumGuildSince() {
442
+ return this.premiumGuildSinceTimestamp ? new Date(this.premiumGuildSinceTimestamp) : null;
443
+ }
444
+
306
445
  /**
307
446
  * A link to the user's avatar.
308
447
  * @param {ImageURLOptions} [options={}] Options for the Image URL
@@ -457,6 +596,10 @@ class User extends Base {
457
596
  this.accentColor === user.accentColor &&
458
597
  this.bio === user.bio &&
459
598
  this.pronouns === user.pronouns &&
599
+ this.premiumSinceTimestamp === user.premiumSinceTimestamp &&
600
+ this.premiumGuildSinceTimestamp === user.premiumGuildSinceTimestamp &&
601
+ this.premiumType === user.premiumType &&
602
+ this.legacyUsername === user.legacyUsername &&
460
603
  this.avatarDecorationData?.asset === user.avatarDecorationData?.asset &&
461
604
  this.avatarDecorationData?.skuId === user.avatarDecorationData?.skuId &&
462
605
  this.collectibles?.nameplate?.skuId === user.collectibles?.nameplate?.skuId &&
@@ -434,104 +434,4 @@ export const enum ApplicationType {
434
434
  * A limited application used for creator monetization (e.g. role subscription) SKUs
435
435
  */
436
436
  CREATOR_MONETIZATION = 4,
437
- }
438
-
439
- export const enum ClientEvents {
440
- RateLimit = 'rateLimit',
441
- InvalidRequestWarning = 'invalidRequestWarning',
442
- ApiResponse = 'apiResponse',
443
- ApiRequest = 'apiRequest',
444
- ClientReady = 'ready',
445
- ApplicationCommandCreate = 'applicationCommandCreate',
446
- ApplicationCommandDelete = 'applicationCommandDelete',
447
- ApplicationCommandUpdate = 'applicationCommandUpdate',
448
- ApplicationCommandPermissionsUpdate = 'applicationCommandPermissionsUpdate',
449
- AutoModerationActionExecution = 'autoModerationActionExecution',
450
- AutoModerationRuleCreate = 'autoModerationRuleCreate',
451
- AutoModerationRuleDelete = 'autoModerationRuleDelete',
452
- AutoModerationRuleUpdate = 'autoModerationRuleUpdate',
453
- GuildAvailable = 'guildAvailable',
454
- GuildCreate = 'guildCreate',
455
- GuildDelete = 'guildDelete',
456
- GuildUpdate = 'guildUpdate',
457
- GuildUnavailable = 'guildUnavailable',
458
- GuildMemberAdd = 'guildMemberAdd',
459
- GuildMemberRemove = 'guildMemberRemove',
460
- GuildMemberUpdate = 'guildMemberUpdate',
461
- GuildMemberAvailable = 'guildMemberAvailable',
462
- GuildMembersChunk = 'guildMembersChunk',
463
- GuildIntegrationsUpdate = 'guildIntegrationsUpdate',
464
- GuildRoleCreate = 'roleCreate',
465
- GuildRoleDelete = 'roleDelete',
466
- InviteCreate = 'inviteCreate',
467
- InviteDelete = 'inviteDelete',
468
- GuildRoleUpdate = 'roleUpdate',
469
- GuildEmojiCreate = 'emojiCreate',
470
- GuildEmojiDelete = 'emojiDelete',
471
- GuildEmojiUpdate = 'emojiUpdate',
472
- GuildBanAdd = 'guildBanAdd',
473
- GuildBanRemove = 'guildBanRemove',
474
- ChannelCreate = 'channelCreate',
475
- ChannelDelete = 'channelDelete',
476
- ChannelUpdate = 'channelUpdate',
477
- ChannelPinsUpdate = 'channelPinsUpdate',
478
- MessageCreate = 'messageCreate',
479
- MessageDelete = 'messageDelete',
480
- MessageUpdate = 'messageUpdate',
481
- MessageBulkDelete = 'messageDeleteBulk',
482
- MessageReactionAdd = 'messageReactionAdd',
483
- MessageReactionRemove = 'messageReactionRemove',
484
- MessageReactionRemoveAll = 'messageReactionRemoveAll',
485
- MessageReactionRemoveEmoji = 'messageReactionRemoveEmoji',
486
- ThreadCreate = 'threadCreate',
487
- ThreadDelete = 'threadDelete',
488
- ThreadUpdate = 'threadUpdate',
489
- ThreadListSync = 'threadListSync',
490
- ThreadMemberUpdate = 'threadMemberUpdate',
491
- ThreadMembersUpdate = 'threadMembersUpdate',
492
- UserUpdate = 'userUpdate',
493
- PresenceUpdate = 'presenceUpdate',
494
- VoiceServerUpdate = 'voiceServerUpdate',
495
- VoiceStateUpdate = 'voiceStateUpdate',
496
- TypingStart = 'typingStart',
497
- WebhooksUpdate = 'webhookUpdate',
498
- Error = 'error',
499
- Warn = 'warn',
500
- Debug = 'debug',
501
- CacheSweep = 'cacheSweep',
502
- ShardDisconnect = 'shardDisconnect',
503
- ShardError = 'shardError',
504
- ShardReconnecting = 'shardReconnecting',
505
- ShardReady = 'shardReady',
506
- ShardResume = 'shardResume',
507
- Invalidated = 'invalidated',
508
- Raw = 'raw',
509
- StageInstanceCreate = 'stageInstanceCreate',
510
- StageInstanceUpdate = 'stageInstanceUpdate',
511
- StageInstanceDelete = 'stageInstanceDelete',
512
- GuildStickerCreate = 'stickerCreate',
513
- GuildStickerDelete = 'stickerDelete',
514
- GuildStickerUpdate = 'stickerUpdate',
515
- GuildScheduledEventCreate = 'guildScheduledEventCreate',
516
- GuildScheduledEventUpdate = 'guildScheduledEventUpdate',
517
- GuildScheduledEventDelete = 'guildScheduledEventDelete',
518
- GuildScheduledEventUserAdd = 'guildScheduledEventUserAdd',
519
- GuildScheduledEventUserRemove = 'guildScheduledEventUserRemove',
520
- GuildAuditLogEntryCreate = 'guildAuditLogEntryCreate',
521
- UnhandledPacket = 'unhandledPacket',
522
- RelationshipAdd = 'relationshipAdd',
523
- RelationshipUpdate = 'relationshipUpdate',
524
- RelationshipRemove = 'relationshipRemove',
525
- ChannelRecipientAdd = 'channelRecipientAdd',
526
- ChannelRecipientRemove = 'channelRecipientRemove',
527
- InteractionCreate = 'interactionCreate',
528
- InteractionModalCreate = 'interactionModalCreate',
529
- CallCreate = 'callCreate',
530
- CallUpdate = 'callUpdate',
531
- CallDelete = 'callDelete',
532
- MessagePollVoteAdd = 'messagePollVoteAdd',
533
- MessagePollVoteRemove = 'messagePollVoteRemove',
534
- VoiceChannelEffectSend = 'voiceChannelEffectSend',
535
- VoiceBroadcastSubscribe = 'subscribe',
536
- VoiceBroadcastUnsubscribe = 'unsubscribe',
537
- }
437
+ }
@@ -3860,6 +3860,50 @@ export interface UserPrimaryGuild {
3860
3860
  tag: string | null;
3861
3861
  }
3862
3862
 
3863
+ export interface MutualGuild {
3864
+ id: Snowflake;
3865
+ nick?: string | null;
3866
+ }
3867
+
3868
+ export type ConnectedAccountType =
3869
+ | 'spotify'
3870
+ | 'twitter'
3871
+ | 'x'
3872
+ | 'github'
3873
+ | 'youtube'
3874
+ | 'twitch'
3875
+ | 'steam'
3876
+ | 'reddit'
3877
+ | 'facebook'
3878
+ | 'roblox'
3879
+ | 'tiktok'
3880
+ | 'domain'
3881
+ | 'bluesky'
3882
+ | 'amazonmusic'
3883
+ | 'battlenet'
3884
+ | 'bungeenet'
3885
+ | 'crunchyroll'
3886
+ | 'ebay'
3887
+ | 'epicgames'
3888
+ | 'lol'
3889
+ | 'paypal'
3890
+ | 'playstation'
3891
+ | 'riotgames'
3892
+ | 'xbox';
3893
+
3894
+ export interface ConnectedAccount {
3895
+ id: string;
3896
+ name: string;
3897
+ type: ConnectedAccountType;
3898
+ verified?: boolean;
3899
+ visibility?: number;
3900
+ show_activity?: boolean;
3901
+ friend_sync?: boolean;
3902
+ two_way_link?: boolean;
3903
+ metadata_visibility?: number;
3904
+ metadata?: unknown;
3905
+ }
3906
+
3863
3907
  export interface AvatarDecorationData {
3864
3908
  asset: string;
3865
3909
  skuId: Snowflake;
@@ -4005,6 +4049,16 @@ export class User extends PartialTextBasedChannel(Base) {
4005
4049
  public collectibles: Collectibles | null;
4006
4050
  public discriminator: string;
4007
4051
  public pronouns?: string | null;
4052
+ public premiumSinceTimestamp: number | null;
4053
+ public readonly premiumSince: Date | null;
4054
+ public premiumGuildSinceTimestamp: number | null;
4055
+ public readonly premiumGuildSince: Date | null;
4056
+ public premiumType: number | null;
4057
+ public legacyUsername: string | null;
4058
+ public connectedAccounts: ConnectedAccount[] | null;
4059
+ public mutualFriendsCount: number | null;
4060
+ public mutualGuildsCount: number | null;
4061
+ public mutualGuilds: MutualGuild[] | null;
4008
4062
  public readonly displayName: string;
4009
4063
  public readonly defaultAvatarURL: string;
4010
4064
  public readonly dmChannel: DMChannel | null;