@discordeno/bot 19.0.0-next.fda9ef2 → 19.0.0-next.fe00a6f

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 (145) hide show
  1. package/dist/bot.d.ts +6 -2
  2. package/dist/bot.d.ts.map +1 -1
  3. package/dist/bot.js +7 -4
  4. package/dist/bot.js.map +1 -1
  5. package/dist/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -1
  6. package/dist/handlers/channels/CHANNEL_CREATE.js +3 -1
  7. package/dist/handlers/channels/CHANNEL_CREATE.js.map +1 -1
  8. package/dist/handlers/channels/index.d.ts +1 -0
  9. package/dist/handlers/channels/index.d.ts.map +1 -1
  10. package/dist/handlers/channels/index.js +1 -0
  11. package/dist/handlers/channels/index.js.map +1 -1
  12. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js +1 -1
  13. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js.map +1 -1
  14. package/dist/handlers/guilds/GUILD_DELETE.d.ts.map +1 -1
  15. package/dist/handlers/guilds/GUILD_DELETE.js +4 -0
  16. package/dist/handlers/guilds/GUILD_DELETE.js.map +1 -1
  17. package/dist/handlers.js +1 -1
  18. package/dist/handlers.js.map +1 -1
  19. package/dist/helpers.d.ts +205 -0
  20. package/dist/helpers.d.ts.map +1 -0
  21. package/dist/helpers.js +553 -0
  22. package/dist/helpers.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +6 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/transformers/activity.d.ts +15 -15
  28. package/dist/transformers/application.d.ts +37 -5
  29. package/dist/transformers/application.d.ts.map +1 -1
  30. package/dist/transformers/applicationCommand.d.ts +36 -4
  31. package/dist/transformers/applicationCommand.d.ts.map +1 -1
  32. package/dist/transformers/applicationCommandPermission.d.ts +1 -1
  33. package/dist/transformers/attachment.d.ts +3 -3
  34. package/dist/transformers/auditLogEntry.d.ts +6 -6
  35. package/dist/transformers/automodActionExecution.d.ts +6 -6
  36. package/dist/transformers/automodRule.d.ts +3 -2
  37. package/dist/transformers/automodRule.d.ts.map +1 -1
  38. package/dist/transformers/automodRule.js +1 -0
  39. package/dist/transformers/automodRule.js.map +1 -1
  40. package/dist/transformers/channel.d.ts +99 -36
  41. package/dist/transformers/channel.d.ts.map +1 -1
  42. package/dist/transformers/channel.js +74 -37
  43. package/dist/transformers/channel.js.map +1 -1
  44. package/dist/transformers/component.d.ts +3 -1
  45. package/dist/transformers/component.d.ts.map +1 -1
  46. package/dist/transformers/component.js +1 -0
  47. package/dist/transformers/component.js.map +1 -1
  48. package/dist/transformers/embed.d.ts +3 -3
  49. package/dist/transformers/emoji.d.ts +37 -5
  50. package/dist/transformers/emoji.d.ts.map +1 -1
  51. package/dist/transformers/guild.d.ts +3 -3
  52. package/dist/transformers/guild.d.ts.map +1 -1
  53. package/dist/transformers/guild.js +4 -1
  54. package/dist/transformers/guild.js.map +1 -1
  55. package/dist/transformers/index.d.ts +2 -0
  56. package/dist/transformers/index.d.ts.map +1 -1
  57. package/dist/transformers/index.js +2 -0
  58. package/dist/transformers/index.js.map +1 -1
  59. package/dist/transformers/integration.d.ts +73 -9
  60. package/dist/transformers/integration.d.ts.map +1 -1
  61. package/dist/transformers/interaction.d.ts +81 -377
  62. package/dist/transformers/interaction.d.ts.map +1 -1
  63. package/dist/transformers/interaction.js +77 -27
  64. package/dist/transformers/interaction.js.map +1 -1
  65. package/dist/transformers/invite.d.ts +113 -17
  66. package/dist/transformers/invite.d.ts.map +1 -1
  67. package/dist/transformers/member.d.ts +31 -37
  68. package/dist/transformers/member.d.ts.map +1 -1
  69. package/dist/transformers/member.js +28 -32
  70. package/dist/transformers/member.js.map +1 -1
  71. package/dist/transformers/message.d.ts +2 -1
  72. package/dist/transformers/message.d.ts.map +1 -1
  73. package/dist/transformers/message.js +3 -4
  74. package/dist/transformers/message.js.map +1 -1
  75. package/dist/transformers/presence.d.ts +2 -14
  76. package/dist/transformers/presence.d.ts.map +1 -1
  77. package/dist/transformers/presence.js +1 -14
  78. package/dist/transformers/presence.js.map +1 -1
  79. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts +2 -2
  80. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts.map +1 -1
  81. package/dist/transformers/reverse/applicationCommandOptionChoice.js.map +1 -1
  82. package/dist/transformers/reverse/component.d.ts.map +1 -1
  83. package/dist/transformers/reverse/component.js +1 -0
  84. package/dist/transformers/reverse/component.js.map +1 -1
  85. package/dist/transformers/reverse/createApplicationCommand.d.ts.map +1 -1
  86. package/dist/transformers/reverse/createApplicationCommand.js.map +1 -1
  87. package/dist/transformers/reverse/index.d.ts +3 -0
  88. package/dist/transformers/reverse/index.d.ts.map +1 -1
  89. package/dist/transformers/reverse/index.js +3 -0
  90. package/dist/transformers/reverse/index.js.map +1 -1
  91. package/dist/transformers/reverse/member.d.ts +2 -1
  92. package/dist/transformers/reverse/member.d.ts.map +1 -1
  93. package/dist/transformers/reverse/member.js +10 -9
  94. package/dist/transformers/reverse/member.js.map +1 -1
  95. package/dist/transformers/role.d.ts +67 -13
  96. package/dist/transformers/role.d.ts.map +1 -1
  97. package/dist/transformers/role.js +51 -15
  98. package/dist/transformers/role.js.map +1 -1
  99. package/dist/transformers/scheduledEvent.d.ts +38 -6
  100. package/dist/transformers/scheduledEvent.d.ts.map +1 -1
  101. package/dist/transformers/sticker.d.ts +38 -6
  102. package/dist/transformers/sticker.d.ts.map +1 -1
  103. package/dist/transformers/team.d.ts +1 -1
  104. package/dist/transformers/template.d.ts +109 -114
  105. package/dist/transformers/template.d.ts.map +1 -1
  106. package/dist/transformers/toggles/Permissions.d.ts +9 -0
  107. package/dist/transformers/toggles/Permissions.d.ts.map +1 -0
  108. package/dist/transformers/toggles/Permissions.js +18 -0
  109. package/dist/transformers/toggles/Permissions.js.map +1 -0
  110. package/dist/transformers/toggles/ToggleBitfield.d.ts +1 -0
  111. package/dist/transformers/toggles/ToggleBitfield.d.ts.map +1 -1
  112. package/dist/transformers/toggles/ToggleBitfield.js +3 -0
  113. package/dist/transformers/toggles/ToggleBitfield.js.map +1 -1
  114. package/dist/transformers/toggles/channel.d.ts +33 -0
  115. package/dist/transformers/toggles/channel.d.ts.map +1 -0
  116. package/dist/transformers/toggles/channel.js +50 -0
  117. package/dist/transformers/toggles/channel.js.map +1 -0
  118. package/dist/transformers/toggles/guild.d.ts +0 -4
  119. package/dist/transformers/toggles/guild.d.ts.map +1 -1
  120. package/dist/transformers/toggles/guild.js +0 -6
  121. package/dist/transformers/toggles/guild.js.map +1 -1
  122. package/dist/transformers/toggles/index.d.ts +2 -0
  123. package/dist/transformers/toggles/index.d.ts.map +1 -1
  124. package/dist/transformers/toggles/index.js +2 -0
  125. package/dist/transformers/toggles/index.js.map +1 -1
  126. package/dist/transformers/toggles/role.d.ts +4 -0
  127. package/dist/transformers/toggles/role.d.ts.map +1 -1
  128. package/dist/transformers/toggles/role.js +6 -0
  129. package/dist/transformers/toggles/role.js.map +1 -1
  130. package/dist/transformers/user.d.ts +44 -0
  131. package/dist/transformers/user.d.ts.map +1 -0
  132. package/dist/transformers/user.js +42 -0
  133. package/dist/transformers/user.js.map +1 -0
  134. package/dist/transformers/voiceRegion.d.ts +1 -1
  135. package/dist/transformers/voiceState.d.ts +3 -3
  136. package/dist/transformers/webhook.d.ts +39 -7
  137. package/dist/transformers/webhook.d.ts.map +1 -1
  138. package/dist/transformers.d.ts +54 -5
  139. package/dist/transformers.d.ts.map +1 -1
  140. package/dist/transformers.js +60 -3
  141. package/dist/transformers.js.map +1 -1
  142. package/dist/typings.d.ts +4 -1
  143. package/dist/typings.d.ts.map +1 -1
  144. package/dist/typings.js.map +1 -1
  145. package/package.json +5 -5
@@ -1,44 +1,107 @@
1
- import type { DiscordChannel } from '@discordeno/types';
2
- import type { Bot } from '../index.js';
1
+ import type { BigString, ChannelTypes, DiscordChannel, DiscordThreadMember, OverwriteReadable, VideoQualityModes } from '@discordeno/types';
2
+ import { type Bot } from '../index.js';
3
+ import { Permissions } from './toggles/Permissions.js';
4
+ import { ChannelToggles } from './toggles/channel.js';
3
5
  export declare function packOverwrites(allow: string, deny: string, id: string, type: number): bigint;
4
6
  export declare function separateOverwrites(v: bigint): [number, bigint, bigint, bigint];
7
+ export declare const baseChannel: Partial<Channel> & BaseChannel;
5
8
  export declare function transformChannel(bot: Bot, payload: {
6
9
  channel: DiscordChannel;
7
10
  } & {
8
- guildId?: bigint;
9
- }): {
10
- name?: string | undefined;
11
- applicationId?: bigint | undefined;
12
- flags?: import("@discordeno/types").ChannelFlags | undefined;
13
- permissions?: bigint | undefined;
14
- topic?: string | undefined;
15
- position?: number | undefined;
16
- bitrate?: number | undefined;
17
- nsfw?: boolean | undefined;
18
- archived?: boolean | undefined;
19
- locked?: boolean | undefined;
20
- invitable?: boolean | undefined;
21
- managed?: boolean | undefined;
22
- userLimit?: number | undefined;
23
- rateLimitPerUser?: number | undefined;
24
- rtcRegion?: string | undefined;
25
- videoQualityMode?: import("@discordeno/types").VideoQualityModes | undefined;
26
- lastPinTimestamp?: number | undefined;
27
- lastMessageId?: bigint | undefined;
28
- ownerId?: bigint | undefined;
29
- parentId?: bigint | undefined;
30
- memberCount?: number | undefined;
31
- messageCount?: number | undefined;
32
- archiveTimestamp?: number | undefined;
33
- autoArchiveDuration?: 60 | 1440 | 4320 | 10080 | undefined;
34
- createTimestamp?: number | undefined;
35
- newlyCreated?: boolean | undefined;
11
+ guildId?: BigString;
12
+ }): Channel;
13
+ export interface BaseChannel {
14
+ /** Whether the channel is nsfw */
15
+ nsfw: boolean;
16
+ /** Thread-specific fields not needed by other channels */
17
+ threadMetadata?: {
18
+ /** Timestamp when the thread's archive status was last changed, used for calculating recent activity */
19
+ archiveTimestamp?: number;
20
+ /** Timestamp when the thread was created; only populated for threads created after 2022-01-09 */
21
+ createTimestamp?: number;
22
+ /** Duration in minutes to automatically archive the thread after recent activity */
23
+ autoArchiveDuration?: 60 | 1440 | 4320 | 10080;
24
+ /** When a thread is locked, only users with `MANAGE_THREADS` can unarchive it */
25
+ locked: boolean;
26
+ /** whether non-moderators can add other non-moderators to a thread; only available on private threads */
27
+ invitable: boolean;
28
+ /** Whether the thread is archived */
29
+ archived: boolean;
30
+ };
31
+ /** When a thread is created this will be true on that channel payload for the thread. */
32
+ newlyCreated: boolean;
33
+ /** When a thread is locked, only users with `MANAGE_THREADS` can unarchive it */
34
+ locked: boolean;
35
+ /** whether non-moderators can add other non-moderators to a thread; only available on private threads */
36
+ invitable: boolean;
37
+ /** Whether the thread is archived */
38
+ archived: boolean;
39
+ /** Explicit permission overwrites for members and roles. */
40
+ permissionOverwrites: OverwriteReadable[];
41
+ }
42
+ export interface Channel extends BaseChannel {
43
+ /** The id of the channel */
36
44
  id: bigint;
37
- type: import("@discordeno/types").ChannelTypes;
38
- guildId: bigint;
39
- permissionOverwrites: bigint[];
40
- botIsMember: boolean;
41
- };
42
- export interface Channel extends ReturnType<typeof transformChannel> {
45
+ /** The compressed form of all the boolean values on this channel. */
46
+ toggles: ChannelToggles;
47
+ /** The type of channel */
48
+ type: ChannelTypes;
49
+ /** The id of the guild */
50
+ guildId?: bigint;
51
+ /** Sorting position of the channel */
52
+ position?: number;
53
+ /** The name of the channel (1-100 characters) */
54
+ name?: string;
55
+ /** The channel topic (0-4096 characters for GUILD_FORUM channels, 0-1024 characters for all others) */
56
+ topic?: string;
57
+ /** The id of the last message sent in this channel (may not point to an existing or valid message) */
58
+ lastMessageId?: bigint;
59
+ /** The bitrate (in bits) of the voice or stage channel */
60
+ bitrate?: number;
61
+ /** The user limit of the voice or stage channel */
62
+ userLimit?: number;
63
+ /** Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected */
64
+ rateLimitPerUser?: number;
65
+ /** Id of the creator of the thread */
66
+ ownerId?: bigint;
67
+ /** For guild channels: Id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created */
68
+ parentId?: bigint;
69
+ /** When the last pinned message was pinned. This may be null in events such as GUILD_CREATE when a message is not pinned. */
70
+ lastPinTimestamp?: string;
71
+ /** Voice region id for the voice or stage channel, automatic when set to null */
72
+ rtcRegion?: string;
73
+ /** The camera video quality mode of the voice channel, 1 when not present */
74
+ videoQualityMode?: VideoQualityModes;
75
+ /** An approximate count of messages in a thread, stops counting at 50 */
76
+ messageCount?: number;
77
+ /** An approximate count of users in a thread, stops counting at 50 */
78
+ memberCount?: number;
79
+ /**
80
+ * Thread-specific fields not needed by other channels.
81
+ * @deprecated Use channel.threadMetadata
82
+ * @private This field is an internal field, subject to breaking changes.
83
+ */
84
+ internalThreadMetadata?: {
85
+ /** Timestamp when the thread's archive status was last changed, used for calculating recent activity */
86
+ archiveTimestamp: number;
87
+ /** Timestamp when the thread was created; only populated for threads created after 2022-01-09 */
88
+ createTimestamp?: number;
89
+ /** Duration in minutes to automatically archive the thread after recent activity */
90
+ autoArchiveDuration: 60 | 1440 | 4320 | 10080;
91
+ };
92
+ /** Thread member object for the current user, if they have joined the thread, only included on certain API endpoints */
93
+ member?: DiscordThreadMember;
94
+ /** Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 */
95
+ default_auto_archive_duration?: number;
96
+ /** computed permissions for the invoking user in the channel, including overwrites, only included when part of the resolved data received on a application command interaction */
97
+ permissions?: Permissions;
98
+ /** The flags of the channel */
99
+ flags?: number;
100
+ /**
101
+ * Explicit permission overwrites for members and roles
102
+ * @deprecated Use channel.permissionOverwrites
103
+ * @private This is for internal use only, and prone to breaking changes.
104
+ */
105
+ internalOverwrites?: bigint[];
43
106
  }
44
107
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/transformers/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAKtC,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5F;AASD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE9E;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCrG;AAED,MAAM,WAAW,OAAQ,SAAQ,UAAU,CAAC,OAAO,gBAAgB,CAAC;CAAG"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/transformers/channel.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { calculatePermissions } from '../index.js';
2
+ import { Permissions } from './toggles/Permissions.js';
3
+ import { ChannelToggles } from './toggles/channel.js';
1
4
  const Mask = (1n << 64n) - 1n;
2
5
  export function packOverwrites(allow, deny, id, type) {
3
6
  return pack64(allow, 0) | pack64(deny, 1) | pack64(id, 2) | pack64(type, 3);
@@ -18,44 +21,78 @@ export function separateOverwrites(v) {
18
21
  unpack64(v, 1)
19
22
  ];
20
23
  }
21
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
24
+ export const baseChannel = {
25
+ get archived () {
26
+ return !!this.toggles?.archived;
27
+ },
28
+ get invitable () {
29
+ return !!this.toggles?.invitable;
30
+ },
31
+ get locked () {
32
+ return !!this.toggles?.locked;
33
+ },
34
+ get nsfw () {
35
+ return !!this.toggles?.nsfw;
36
+ },
37
+ get newlyCreated () {
38
+ return !!this.toggles?.newlyCreated;
39
+ },
40
+ get permissionOverwrites () {
41
+ return this.internalOverwrites?.map((overwrite)=>{
42
+ const [type, id, allow, deny] = separateOverwrites(overwrite);
43
+ return {
44
+ type,
45
+ id,
46
+ allow: calculatePermissions(allow),
47
+ deny: calculatePermissions(deny)
48
+ };
49
+ }) ?? [];
50
+ },
51
+ get threadMetadata () {
52
+ return {
53
+ archiveTimestamp: this.internalThreadMetadata?.archiveTimestamp,
54
+ createTimestamp: this.internalThreadMetadata?.createTimestamp,
55
+ autoArchiveDuration: this.internalThreadMetadata?.autoArchiveDuration,
56
+ locked: this.locked,
57
+ invitable: this.invitable,
58
+ archived: this.archived
59
+ };
60
+ }
61
+ };
22
62
  export function transformChannel(bot, payload) {
23
- const channel = {
24
- // UNTRANSFORMED STUFF HERE
25
- type: payload.channel.type,
26
- position: payload.channel.position,
27
- name: payload.channel.name,
28
- topic: payload.channel.topic ?? undefined,
29
- nsfw: payload.channel.nsfw,
30
- bitrate: payload.channel.bitrate,
31
- userLimit: payload.channel.user_limit,
32
- rateLimitPerUser: payload.channel.rate_limit_per_user,
33
- // recipients: payload.channel.recipients?.map((r) => bot.transformers.user(bot, r)),
34
- rtcRegion: payload.channel.rtc_region ?? undefined,
35
- videoQualityMode: payload.channel.video_quality_mode,
36
- guildId: payload.guildId ?? (payload.channel.guild_id ? bot.transformers.snowflake(payload.channel.guild_id) : 0n),
37
- lastPinTimestamp: payload.channel.last_pin_timestamp ? Date.parse(payload.channel.last_pin_timestamp) : undefined,
38
- permissionOverwrites: payload.channel.permission_overwrites ? payload.channel.permission_overwrites.map((o)=>packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type)) : [],
39
- id: bot.transformers.snowflake(payload.channel.id),
40
- permissions: payload.channel.permissions ? bot.transformers.snowflake(payload.channel.permissions) : undefined,
41
- lastMessageId: payload.channel.last_message_id ? bot.transformers.snowflake(payload.channel.last_message_id) : undefined,
42
- ownerId: payload.channel.owner_id ? bot.transformers.snowflake(payload.channel.owner_id) : undefined,
43
- applicationId: payload.channel.application_id ? bot.transformers.snowflake(payload.channel.application_id) : undefined,
44
- managed: payload.channel.managed,
45
- parentId: payload.channel.parent_id ? bot.transformers.snowflake(payload.channel.parent_id) : undefined,
46
- memberCount: payload.channel.member_count,
47
- messageCount: payload.channel.message_count,
48
- archiveTimestamp: payload.channel.thread_metadata?.archive_timestamp ? Date.parse(payload.channel.thread_metadata.archive_timestamp) : undefined,
49
- autoArchiveDuration: payload.channel.thread_metadata?.auto_archive_duration,
50
- botIsMember: Boolean(payload.channel.member),
51
- archived: payload.channel.thread_metadata?.archived,
52
- locked: payload.channel.thread_metadata?.locked,
53
- invitable: payload.channel.thread_metadata?.invitable,
54
- createTimestamp: payload.channel.thread_metadata?.create_timestamp ? Date.parse(payload.channel.thread_metadata.create_timestamp) : undefined,
55
- newlyCreated: payload.channel.newly_created,
56
- flags: payload.channel.flags
57
- };
58
- return channel;
63
+ const channel = Object.create(baseChannel);
64
+ const props = bot.transformers.desiredProperties.channel;
65
+ channel.toggles = new ChannelToggles(payload.channel);
66
+ if (payload.channel.id && props.id) channel.id = bot.transformers.snowflake(payload.channel.id);
67
+ if ((payload.guildId ?? payload.channel.guild_id) && props.guildId) channel.guildId = payload.guildId ?? bot.transformers.snowflake(payload.channel.guild_id);
68
+ if (props.type) channel.type = payload.channel.type;
69
+ if (props.position) channel.position = payload.channel.position;
70
+ if (payload.channel.name && props.name) channel.name = payload.channel.name;
71
+ if (payload.channel.topic && props.topic) channel.topic = payload.channel.topic;
72
+ if (payload.channel.last_message_id && props.lastMessageId) channel.lastMessageId = bot.transformers.snowflake(payload.channel.last_message_id);
73
+ if (payload.channel.bitrate && props.bitrate) channel.bitrate = props.bitrate;
74
+ if (props.userLimit) channel.userLimit = payload.channel.user_limit;
75
+ if (props.rateLimitPerUser) channel.rateLimitPerUser = payload.channel.rate_limit_per_user;
76
+ if (payload.channel.owner_id && props.ownerId) channel.ownerId = bot.transformers.snowflake(payload.channel.owner_id);
77
+ if (payload.channel.last_pin_timestamp && props.lastPinTimestamp) channel.lastPinTimestamp = Date.parse(payload.channel.last_pin_timestamp);
78
+ if (payload.channel.rtc_region && props.rtcRegion) channel.rtcRegion = payload.channel.rtc_region;
79
+ if (payload.channel.video_quality_mode && props.videoQualityMode) channel.videoQualityMode = payload.channel.video_quality_mode;
80
+ if (payload.channel.message_count && props.messageCount) channel.messageCount = payload.channel.message_count;
81
+ if (payload.channel.member_count && props.memberCount) channel.memberCount = payload.channel.member_count;
82
+ if (props.archiveTimestamp || props.createTimestamp || props.autoArchiveDuration) {
83
+ channel.internalThreadMetadata = {};
84
+ if (payload.channel.thread_metadata?.archive_timestamp && props.archiveTimestamp) channel.internalThreadMetadata.archiveTimestamp = Date.parse(payload.channel.thread_metadata.archive_timestamp);
85
+ if (payload.channel.thread_metadata?.create_timestamp && props.createTimestamp) channel.internalThreadMetadata.createTimestamp = Date.parse(payload.channel.thread_metadata.create_timestamp);
86
+ if (payload.channel.thread_metadata?.auto_archive_duration && props.autoArchiveDuration) channel.internalThreadMetadata.autoArchiveDuration = payload.channel.thread_metadata.auto_archive_duration;
87
+ }
88
+ if (payload.channel.default_auto_archive_duration && props.autoArchiveDuration) channel.autoArchiveDuration = payload.channel.default_auto_archive_duration;
89
+ if (payload.channel.permissions && props.permissions) channel.permissions = new Permissions(payload.channel.permissions);
90
+ if (payload.channel.flags && props.flags) channel.flags = payload.channel.flags;
91
+ if (payload.channel.permission_overwrites && props.permissionOverwrites) {
92
+ channel.internalOverwrites = payload.channel.permission_overwrites.map((o)=>packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type));
93
+ }
94
+ if (props.parentId && payload.channel.parent_id) channel.parentId = bot.transformers.snowflake(payload.channel.parent_id);
95
+ return bot.transformers.customizers.channel(bot, payload.channel, channel);
59
96
  }
60
97
 
61
98
  //# sourceMappingURL=channel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transformers/channel.ts"],"sourcesContent":["import type { DiscordChannel } from '@discordeno/types'\nimport type { Bot } from '../index.js'\nimport type { Optionalize } from '../optionalize.js'\n\nconst Mask = (1n << 64n) - 1n\n\nexport function packOverwrites(allow: string, deny: string, id: string, type: number): bigint {\n return pack64(allow, 0) | pack64(deny, 1) | pack64(id, 2) | pack64(type, 3)\n}\nfunction unpack64(v: bigint, shift: number): bigint {\n return (v >> BigInt(shift * 64)) & Mask\n}\nfunction pack64(v: string | number, shift: number): bigint {\n const b = BigInt(v)\n if (b < 0 || b > Mask) throw new Error('should have been a 64 bit unsigned integer: ' + v.toString())\n return b << BigInt(shift * 64)\n}\nexport function separateOverwrites(v: bigint): [number, bigint, bigint, bigint] {\n return [Number(unpack64(v, 3)), unpack64(v, 2), unpack64(v, 0), unpack64(v, 1)] as [number, bigint, bigint, bigint]\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function transformChannel(bot: Bot, payload: { channel: DiscordChannel } & { guildId?: bigint }) {\n const channel = {\n // UNTRANSFORMED STUFF HERE\n type: payload.channel.type,\n position: payload.channel.position,\n name: payload.channel.name,\n topic: payload.channel.topic ?? undefined,\n nsfw: payload.channel.nsfw,\n bitrate: payload.channel.bitrate,\n userLimit: payload.channel.user_limit,\n rateLimitPerUser: payload.channel.rate_limit_per_user,\n // recipients: payload.channel.recipients?.map((r) => bot.transformers.user(bot, r)),\n rtcRegion: payload.channel.rtc_region ?? undefined,\n videoQualityMode: payload.channel.video_quality_mode,\n guildId: payload.guildId ?? (payload.channel.guild_id ? bot.transformers.snowflake(payload.channel.guild_id) : 0n),\n lastPinTimestamp: payload.channel.last_pin_timestamp ? Date.parse(payload.channel.last_pin_timestamp) : undefined,\n permissionOverwrites: payload.channel.permission_overwrites\n ? payload.channel.permission_overwrites.map((o) => packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type))\n : [],\n\n id: bot.transformers.snowflake(payload.channel.id),\n permissions: payload.channel.permissions ? bot.transformers.snowflake(payload.channel.permissions) : undefined,\n lastMessageId: payload.channel.last_message_id ? bot.transformers.snowflake(payload.channel.last_message_id) : undefined,\n ownerId: payload.channel.owner_id ? bot.transformers.snowflake(payload.channel.owner_id) : undefined,\n applicationId: payload.channel.application_id ? bot.transformers.snowflake(payload.channel.application_id) : undefined,\n managed: payload.channel.managed,\n parentId: payload.channel.parent_id ? bot.transformers.snowflake(payload.channel.parent_id) : undefined,\n memberCount: payload.channel.member_count,\n messageCount: payload.channel.message_count,\n archiveTimestamp: payload.channel.thread_metadata?.archive_timestamp ? Date.parse(payload.channel.thread_metadata.archive_timestamp) : undefined,\n autoArchiveDuration: payload.channel.thread_metadata?.auto_archive_duration,\n botIsMember: Boolean(payload.channel.member),\n archived: payload.channel.thread_metadata?.archived,\n locked: payload.channel.thread_metadata?.locked,\n invitable: payload.channel.thread_metadata?.invitable,\n createTimestamp: payload.channel.thread_metadata?.create_timestamp ? Date.parse(payload.channel.thread_metadata.create_timestamp) : undefined,\n newlyCreated: payload.channel.newly_created,\n flags: payload.channel.flags,\n }\n\n return channel as Optionalize<typeof channel>\n}\n\nexport interface Channel extends ReturnType<typeof transformChannel> {}\n"],"names":["Mask","packOverwrites","allow","deny","id","type","pack64","unpack64","v","shift","BigInt","b","Error","toString","separateOverwrites","Number","transformChannel","bot","payload","channel","position","name","topic","undefined","nsfw","bitrate","userLimit","user_limit","rateLimitPerUser","rate_limit_per_user","rtcRegion","rtc_region","videoQualityMode","video_quality_mode","guildId","guild_id","transformers","snowflake","lastPinTimestamp","last_pin_timestamp","Date","parse","permissionOverwrites","permission_overwrites","map","o","permissions","lastMessageId","last_message_id","ownerId","owner_id","applicationId","application_id","managed","parentId","parent_id","memberCount","member_count","messageCount","message_count","archiveTimestamp","thread_metadata","archive_timestamp","autoArchiveDuration","auto_archive_duration","botIsMember","Boolean","member","archived","locked","invitable","createTimestamp","create_timestamp","newlyCreated","newly_created","flags"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/transformers/channel.ts"],"sourcesContent":["import type { BigString, ChannelTypes, DiscordChannel, DiscordThreadMember, OverwriteReadable, VideoQualityModes } from '@discordeno/types'\nimport { calculatePermissions, type Bot } from '../index.js'\nimport { Permissions } from './toggles/Permissions.js'\nimport { ChannelToggles } from './toggles/channel.js'\n\nconst Mask = (1n << 64n) - 1n\n\nexport function packOverwrites(allow: string, deny: string, id: string, type: number): bigint {\n return pack64(allow, 0) | pack64(deny, 1) | pack64(id, 2) | pack64(type, 3)\n}\nfunction unpack64(v: bigint, shift: number): bigint {\n return (v >> BigInt(shift * 64)) & Mask\n}\nfunction pack64(v: string | number, shift: number): bigint {\n const b = BigInt(v)\n if (b < 0 || b > Mask) throw new Error('should have been a 64 bit unsigned integer: ' + v.toString())\n return b << BigInt(shift * 64)\n}\nexport function separateOverwrites(v: bigint): [number, bigint, bigint, bigint] {\n return [Number(unpack64(v, 3)), unpack64(v, 2), unpack64(v, 0), unpack64(v, 1)] as [number, bigint, bigint, bigint]\n}\n\nexport const baseChannel: Partial<Channel> & BaseChannel = {\n get archived() {\n return !!this.toggles?.archived\n },\n get invitable() {\n return !!this.toggles?.invitable\n },\n get locked() {\n return !!this.toggles?.locked\n },\n get nsfw() {\n return !!this.toggles?.nsfw\n },\n get newlyCreated() {\n return !!this.toggles?.newlyCreated\n },\n get permissionOverwrites() {\n return (\n this.internalOverwrites?.map((overwrite) => {\n const [type, id, allow, deny] = separateOverwrites(overwrite)\n return {\n type,\n id,\n allow: calculatePermissions(allow),\n deny: calculatePermissions(deny),\n }\n }) ?? []\n )\n },\n get threadMetadata() {\n return {\n archiveTimestamp: this.internalThreadMetadata?.archiveTimestamp,\n createTimestamp: this.internalThreadMetadata?.createTimestamp,\n autoArchiveDuration: this.internalThreadMetadata?.autoArchiveDuration,\n locked: this.locked,\n invitable: this.invitable,\n archived: this.archived,\n }\n },\n}\n\nexport function transformChannel(bot: Bot, payload: { channel: DiscordChannel } & { guildId?: BigString }): Channel {\n const channel = Object.create(baseChannel)\n const props = bot.transformers.desiredProperties.channel\n channel.toggles = new ChannelToggles(payload.channel)\n\n if (payload.channel.id && props.id) channel.id = bot.transformers.snowflake(payload.channel.id)\n if ((payload.guildId ?? payload.channel.guild_id) && props.guildId) channel.guildId = payload.guildId ?? bot.transformers.snowflake(payload.channel.guild_id!)\n if (props.type) channel.type = payload.channel.type\n if (props.position) channel.position = payload.channel.position\n if (payload.channel.name && props.name) channel.name = payload.channel.name\n if (payload.channel.topic && props.topic) channel.topic = payload.channel.topic\n if (payload.channel.last_message_id && props.lastMessageId) channel.lastMessageId = bot.transformers.snowflake(payload.channel.last_message_id)\n if (payload.channel.bitrate && props.bitrate) channel.bitrate = props.bitrate\n if (props.userLimit) channel.userLimit = payload.channel.user_limit\n if (props.rateLimitPerUser) channel.rateLimitPerUser = payload.channel.rate_limit_per_user\n if (payload.channel.owner_id && props.ownerId) channel.ownerId = bot.transformers.snowflake(payload.channel.owner_id)\n if (payload.channel.last_pin_timestamp && props.lastPinTimestamp) channel.lastPinTimestamp = Date.parse(payload.channel.last_pin_timestamp)\n if (payload.channel.rtc_region && props.rtcRegion) channel.rtcRegion = payload.channel.rtc_region\n if (payload.channel.video_quality_mode && props.videoQualityMode) channel.videoQualityMode = payload.channel.video_quality_mode\n if (payload.channel.message_count && props.messageCount) channel.messageCount = payload.channel.message_count\n if (payload.channel.member_count && props.memberCount) channel.memberCount = payload.channel.member_count\n if (props.archiveTimestamp || props.createTimestamp || props.autoArchiveDuration) {\n channel.internalThreadMetadata = {}\n if (payload.channel.thread_metadata?.archive_timestamp && props.archiveTimestamp)\n channel.internalThreadMetadata.archiveTimestamp = Date.parse(payload.channel.thread_metadata.archive_timestamp)\n if (payload.channel.thread_metadata?.create_timestamp && props.createTimestamp)\n channel.internalThreadMetadata.createTimestamp = Date.parse(payload.channel.thread_metadata.create_timestamp)\n if (payload.channel.thread_metadata?.auto_archive_duration && props.autoArchiveDuration)\n channel.internalThreadMetadata.autoArchiveDuration = payload.channel.thread_metadata.auto_archive_duration\n }\n if (payload.channel.default_auto_archive_duration && props.autoArchiveDuration)\n channel.autoArchiveDuration = payload.channel.default_auto_archive_duration\n if (payload.channel.permissions && props.permissions) channel.permissions = new Permissions(payload.channel.permissions)\n if (payload.channel.flags && props.flags) channel.flags = payload.channel.flags\n if (payload.channel.permission_overwrites && props.permissionOverwrites) {\n channel.internalOverwrites = payload.channel.permission_overwrites.map((o) => packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type))\n }\n if (props.parentId && payload.channel.parent_id) channel.parentId = bot.transformers.snowflake(payload.channel.parent_id);\n\n return bot.transformers.customizers.channel(bot, payload.channel, channel);\n}\n\nexport interface BaseChannel {\n /** Whether the channel is nsfw */\n nsfw: boolean\n /** Thread-specific fields not needed by other channels */\n threadMetadata?: {\n /** Timestamp when the thread's archive status was last changed, used for calculating recent activity */\n archiveTimestamp?: number\n /** Timestamp when the thread was created; only populated for threads created after 2022-01-09 */\n createTimestamp?: number\n /** Duration in minutes to automatically archive the thread after recent activity */\n autoArchiveDuration?: 60 | 1440 | 4320 | 10080\n /** When a thread is locked, only users with `MANAGE_THREADS` can unarchive it */\n locked: boolean\n /** whether non-moderators can add other non-moderators to a thread; only available on private threads */\n invitable: boolean\n /** Whether the thread is archived */\n archived: boolean\n }\n /** When a thread is created this will be true on that channel payload for the thread. */\n newlyCreated: boolean\n /** When a thread is locked, only users with `MANAGE_THREADS` can unarchive it */\n locked: boolean\n /** whether non-moderators can add other non-moderators to a thread; only available on private threads */\n invitable: boolean\n /** Whether the thread is archived */\n archived: boolean\n /** Explicit permission overwrites for members and roles. */\n permissionOverwrites: OverwriteReadable[]\n}\n\nexport interface Channel extends BaseChannel {\n /** The id of the channel */\n id: bigint\n /** The compressed form of all the boolean values on this channel. */\n toggles: ChannelToggles\n /** The type of channel */\n type: ChannelTypes\n /** The id of the guild */\n guildId?: bigint\n /** Sorting position of the channel */\n position?: number\n /** The name of the channel (1-100 characters) */\n name?: string\n /** The channel topic (0-4096 characters for GUILD_FORUM channels, 0-1024 characters for all others) */\n topic?: string\n /** The id of the last message sent in this channel (may not point to an existing or valid message) */\n lastMessageId?: bigint\n /** The bitrate (in bits) of the voice or stage channel */\n bitrate?: number\n /** The user limit of the voice or stage channel */\n userLimit?: number\n /** Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected */\n rateLimitPerUser?: number\n /** Id of the creator of the thread */\n ownerId?: bigint\n /** For guild channels: Id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created */\n parentId?: bigint\n /** When the last pinned message was pinned. This may be null in events such as GUILD_CREATE when a message is not pinned. */\n lastPinTimestamp?: string\n /** Voice region id for the voice or stage channel, automatic when set to null */\n rtcRegion?: string\n /** The camera video quality mode of the voice channel, 1 when not present */\n videoQualityMode?: VideoQualityModes\n /** An approximate count of messages in a thread, stops counting at 50 */\n messageCount?: number\n /** An approximate count of users in a thread, stops counting at 50 */\n memberCount?: number\n /**\n * Thread-specific fields not needed by other channels.\n * @deprecated Use channel.threadMetadata\n * @private This field is an internal field, subject to breaking changes.\n */\n internalThreadMetadata?: {\n /** Timestamp when the thread's archive status was last changed, used for calculating recent activity */\n archiveTimestamp: number\n /** Timestamp when the thread was created; only populated for threads created after 2022-01-09 */\n createTimestamp?: number\n /** Duration in minutes to automatically archive the thread after recent activity */\n autoArchiveDuration: 60 | 1440 | 4320 | 10080\n }\n /** Thread member object for the current user, if they have joined the thread, only included on certain API endpoints */\n member?: DiscordThreadMember\n /** Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 */\n default_auto_archive_duration?: number\n /** computed permissions for the invoking user in the channel, including overwrites, only included when part of the resolved data received on a application command interaction */\n permissions?: Permissions\n /** The flags of the channel */\n flags?: number\n /**\n * Explicit permission overwrites for members and roles\n * @deprecated Use channel.permissionOverwrites\n * @private This is for internal use only, and prone to breaking changes.\n */\n internalOverwrites?: bigint[]\n}\n"],"names":["calculatePermissions","Permissions","ChannelToggles","Mask","packOverwrites","allow","deny","id","type","pack64","unpack64","v","shift","BigInt","b","Error","toString","separateOverwrites","Number","baseChannel","archived","toggles","invitable","locked","nsfw","newlyCreated","permissionOverwrites","internalOverwrites","map","overwrite","threadMetadata","archiveTimestamp","internalThreadMetadata","createTimestamp","autoArchiveDuration","transformChannel","bot","payload","channel","Object","create","props","transformers","desiredProperties","snowflake","guildId","guild_id","position","name","topic","last_message_id","lastMessageId","bitrate","userLimit","user_limit","rateLimitPerUser","rate_limit_per_user","owner_id","ownerId","last_pin_timestamp","lastPinTimestamp","Date","parse","rtc_region","rtcRegion","video_quality_mode","videoQualityMode","message_count","messageCount","member_count","memberCount","thread_metadata","archive_timestamp","create_timestamp","auto_archive_duration","default_auto_archive_duration","permissions","flags","permission_overwrites","o","parentId","parent_id","customizers"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ButtonStyles, MessageComponentTypes, SelectOption, TextStyles } from '@discordeno/types';
1
+ import type { ButtonStyles, ChannelTypes, MessageComponentTypes, SelectOption, TextStyles } from '@discordeno/types';
2
2
  import type { Bot } from '../index.js';
3
3
  import type { DiscordComponent } from '../typings.js';
4
4
  export declare function transformComponent(bot: Bot, payload: DiscordComponent): Component;
@@ -28,6 +28,8 @@ export interface Component {
28
28
  };
29
29
  /** optional url for link-style buttons that can navigate a user to the web. Only type 5 Link buttons can have a url */
30
30
  url?: string;
31
+ /** List of channel types to include in a channel select menu options list */
32
+ channelTypes?: ChannelTypes[];
31
33
  /** The choices! Maximum of 25 items. */
32
34
  options?: SelectOption[];
33
35
  /** A custom placeholder text if nothing is selected. Maximum 150 characters. */
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/transformers/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACtG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAoCjF;AAID,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACjC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wGAAwG;IACxG,KAAK,CAAC,EAAE;QACN,eAAe;QACf,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,iBAAiB;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,qCAAqC;QACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,uHAAuH;IACvH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iCAAiC;IACjC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;CACzB"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/transformers/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAqCjF;AAID,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACjC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wGAAwG;IACxG,KAAK,CAAC,EAAE;QACN,eAAe;QACf,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,iBAAiB;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,qCAAqC;QACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,uHAAuH;IACvH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,wCAAwC;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iCAAiC;IACjC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;CACzB"}
@@ -11,6 +11,7 @@ export function transformComponent(bot, payload) {
11
11
  animated: payload.emoji.animated
12
12
  } : undefined,
13
13
  url: payload.url,
14
+ channelTypes: payload.channel_types,
14
15
  options: payload.options?.map((option)=>({
15
16
  label: option.label,
16
17
  value: option.value,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transformers/component.ts"],"sourcesContent":["import type { ButtonStyles, MessageComponentTypes, SelectOption, TextStyles } from '@discordeno/types'\nimport type { Bot } from '../index.js'\nimport type { DiscordComponent } from '../typings.js'\n\nexport function transformComponent(bot: Bot, payload: DiscordComponent): Component {\n return {\n type: payload.type,\n customId: payload.custom_id,\n disabled: payload.disabled,\n style: payload.style,\n label: payload.label,\n emoji: payload.emoji\n ? {\n id: payload.emoji.id ? bot.transformers.snowflake(payload.emoji.id) : undefined,\n name: payload.emoji.name,\n animated: payload.emoji.animated,\n }\n : undefined,\n url: payload.url,\n options: payload.options?.map((option) => ({\n label: option.label,\n value: option.value,\n description: option.description,\n emoji: option.emoji\n ? {\n id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,\n name: option.emoji.name,\n animated: option.emoji.animated,\n }\n : undefined,\n default: option.default,\n })),\n placeholder: payload.placeholder,\n minValues: payload.min_values,\n maxValues: payload.max_values,\n minLength: payload.min_length,\n maxLength: payload.max_length,\n value: payload.value,\n components: payload.components?.map((component) => bot.transformers.component(bot, component)),\n }\n}\n\n// THIS TRANSFORMER HAS A CIRCULAR REFERENCE TO CALL ITSELF FOR COMPONENTS SO AN AUTOMATED TYPE CAN NOT BE CREATED!\n\nexport interface Component {\n /** component type */\n type: MessageComponentTypes\n /** a developer-defined identifier for the component, max 100 characters */\n customId?: string\n /** whether this component is required to be filled, default true */\n required?: boolean\n /** whether the component is disabled, default false */\n disabled?: boolean\n /** For different styles/colors of the buttons */\n style?: ButtonStyles | TextStyles\n /** text that appears on the button (max 80 characters) */\n label?: string\n /** the dev-define value of the option, max 100 characters for select or 4000 for input. */\n value?: string\n /** Emoji object that includes fields of name, id, and animated supporting unicode and custom emojis. */\n emoji?: {\n /** Emoji id */\n id?: bigint\n /** Emoji name */\n name?: string\n /** Whether this emoji is animated */\n animated?: boolean\n }\n /** optional url for link-style buttons that can navigate a user to the web. Only type 5 Link buttons can have a url */\n url?: string\n /** The choices! Maximum of 25 items. */\n options?: SelectOption[]\n /** A custom placeholder text if nothing is selected. Maximum 150 characters. */\n placeholder?: string\n /** The minimum number of items that must be selected. Default 1. Between 1-25. */\n minValues?: number\n /** The maximum number of items that can be selected. Default 1. Between 1-25. */\n maxValues?: number\n /** The minimum input length for a text input. Between 0-4000. */\n minLength?: number\n /** The maximum input length for a text input. Between 1-4000. */\n maxLength?: number\n /** a list of child components */\n components?: Component[]\n}\n"],"names":["transformComponent","bot","payload","type","customId","custom_id","disabled","style","label","emoji","id","transformers","snowflake","undefined","name","animated","url","options","map","option","value","description","default","placeholder","minValues","min_values","maxValues","max_values","minLength","min_length","maxLength","max_length","components","component"],"mappings":"AAIA,OAAO,SAASA,mBAAmBC,GAAQ,EAAEC,OAAyB,EAAa;IACjF,OAAO;QACLC,MAAMD,QAAQC,IAAI;QAClBC,UAAUF,QAAQG,SAAS;QAC3BC,UAAUJ,QAAQI,QAAQ;QAC1BC,OAAOL,QAAQK,KAAK;QACpBC,OAAON,QAAQM,KAAK;QACpBC,OAAOP,QAAQO,KAAK,GAChB;YACEC,IAAIR,QAAQO,KAAK,CAACC,EAAE,GAAGT,IAAIU,YAAY,CAACC,SAAS,CAACV,QAAQO,KAAK,CAACC,EAAE,IAAIG,SAAS;YAC/EC,MAAMZ,QAAQO,KAAK,CAACK,IAAI;YACxBC,UAAUb,QAAQO,KAAK,CAACM,QAAQ;QAClC,IACAF,SAAS;QACbG,KAAKd,QAAQc,GAAG;QAChBC,SAASf,QAAQe,OAAO,EAAEC,IAAI,CAACC,SAAY,CAAA;gBACzCX,OAAOW,OAAOX,KAAK;gBACnBY,OAAOD,OAAOC,KAAK;gBACnBC,aAAaF,OAAOE,WAAW;gBAC/BZ,OAAOU,OAAOV,KAAK,GACf;oBACEC,IAAIS,OAAOV,KAAK,CAACC,EAAE,GAAGT,IAAIU,YAAY,CAACC,SAAS,CAACO,OAAOV,KAAK,CAACC,EAAE,IAAIG,SAAS;oBAC7EC,MAAMK,OAAOV,KAAK,CAACK,IAAI;oBACvBC,UAAUI,OAAOV,KAAK,CAACM,QAAQ;gBACjC,IACAF,SAAS;gBACbS,SAASH,OAAOG,OAAO;YACzB,CAAA;QACAC,aAAarB,QAAQqB,WAAW;QAChCC,WAAWtB,QAAQuB,UAAU;QAC7BC,WAAWxB,QAAQyB,UAAU;QAC7BC,WAAW1B,QAAQ2B,UAAU;QAC7BC,WAAW5B,QAAQ6B,UAAU;QAC7BX,OAAOlB,QAAQkB,KAAK;QACpBY,YAAY9B,QAAQ8B,UAAU,EAAEd,IAAI,CAACe,YAAchC,IAAIU,YAAY,CAACsB,SAAS,CAAChC,KAAKgC;IACrF;AACF,CAAC"}
1
+ {"version":3,"sources":["../../src/transformers/component.ts"],"sourcesContent":["import type { ButtonStyles, ChannelTypes, MessageComponentTypes, SelectOption, TextStyles } from '@discordeno/types'\nimport type { Bot } from '../index.js'\nimport type { DiscordComponent } from '../typings.js'\n\nexport function transformComponent(bot: Bot, payload: DiscordComponent): Component {\n return {\n type: payload.type,\n customId: payload.custom_id,\n disabled: payload.disabled,\n style: payload.style,\n label: payload.label,\n emoji: payload.emoji\n ? {\n id: payload.emoji.id ? bot.transformers.snowflake(payload.emoji.id) : undefined,\n name: payload.emoji.name,\n animated: payload.emoji.animated,\n }\n : undefined,\n url: payload.url,\n channelTypes: payload.channel_types,\n options: payload.options?.map((option) => ({\n label: option.label,\n value: option.value,\n description: option.description,\n emoji: option.emoji\n ? {\n id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,\n name: option.emoji.name,\n animated: option.emoji.animated,\n }\n : undefined,\n default: option.default,\n })),\n placeholder: payload.placeholder,\n minValues: payload.min_values,\n maxValues: payload.max_values,\n minLength: payload.min_length,\n maxLength: payload.max_length,\n value: payload.value,\n components: payload.components?.map((component) => bot.transformers.component(bot, component)),\n }\n}\n\n// THIS TRANSFORMER HAS A CIRCULAR REFERENCE TO CALL ITSELF FOR COMPONENTS SO AN AUTOMATED TYPE CAN NOT BE CREATED!\n\nexport interface Component {\n /** component type */\n type: MessageComponentTypes\n /** a developer-defined identifier for the component, max 100 characters */\n customId?: string\n /** whether this component is required to be filled, default true */\n required?: boolean\n /** whether the component is disabled, default false */\n disabled?: boolean\n /** For different styles/colors of the buttons */\n style?: ButtonStyles | TextStyles\n /** text that appears on the button (max 80 characters) */\n label?: string\n /** the dev-define value of the option, max 100 characters for select or 4000 for input. */\n value?: string\n /** Emoji object that includes fields of name, id, and animated supporting unicode and custom emojis. */\n emoji?: {\n /** Emoji id */\n id?: bigint\n /** Emoji name */\n name?: string\n /** Whether this emoji is animated */\n animated?: boolean\n }\n /** optional url for link-style buttons that can navigate a user to the web. Only type 5 Link buttons can have a url */\n url?: string\n /** List of channel types to include in a channel select menu options list */\n channelTypes?: ChannelTypes[]\n /** The choices! Maximum of 25 items. */\n options?: SelectOption[]\n /** A custom placeholder text if nothing is selected. Maximum 150 characters. */\n placeholder?: string\n /** The minimum number of items that must be selected. Default 1. Between 1-25. */\n minValues?: number\n /** The maximum number of items that can be selected. Default 1. Between 1-25. */\n maxValues?: number\n /** The minimum input length for a text input. Between 0-4000. */\n minLength?: number\n /** The maximum input length for a text input. Between 1-4000. */\n maxLength?: number\n /** a list of child components */\n components?: Component[]\n}\n"],"names":["transformComponent","bot","payload","type","customId","custom_id","disabled","style","label","emoji","id","transformers","snowflake","undefined","name","animated","url","channelTypes","channel_types","options","map","option","value","description","default","placeholder","minValues","min_values","maxValues","max_values","minLength","min_length","maxLength","max_length","components","component"],"mappings":"AAIA,OAAO,SAASA,mBAAmBC,GAAQ,EAAEC,OAAyB,EAAa;IACjF,OAAO;QACLC,MAAMD,QAAQC,IAAI;QAClBC,UAAUF,QAAQG,SAAS;QAC3BC,UAAUJ,QAAQI,QAAQ;QAC1BC,OAAOL,QAAQK,KAAK;QACpBC,OAAON,QAAQM,KAAK;QACpBC,OAAOP,QAAQO,KAAK,GAChB;YACEC,IAAIR,QAAQO,KAAK,CAACC,EAAE,GAAGT,IAAIU,YAAY,CAACC,SAAS,CAACV,QAAQO,KAAK,CAACC,EAAE,IAAIG,SAAS;YAC/EC,MAAMZ,QAAQO,KAAK,CAACK,IAAI;YACxBC,UAAUb,QAAQO,KAAK,CAACM,QAAQ;QAClC,IACAF,SAAS;QACbG,KAAKd,QAAQc,GAAG;QAChBC,cAAcf,QAAQgB,aAAa;QACnCC,SAASjB,QAAQiB,OAAO,EAAEC,IAAI,CAACC,SAAY,CAAA;gBACzCb,OAAOa,OAAOb,KAAK;gBACnBc,OAAOD,OAAOC,KAAK;gBACnBC,aAAaF,OAAOE,WAAW;gBAC/Bd,OAAOY,OAAOZ,KAAK,GACf;oBACEC,IAAIW,OAAOZ,KAAK,CAACC,EAAE,GAAGT,IAAIU,YAAY,CAACC,SAAS,CAACS,OAAOZ,KAAK,CAACC,EAAE,IAAIG,SAAS;oBAC7EC,MAAMO,OAAOZ,KAAK,CAACK,IAAI;oBACvBC,UAAUM,OAAOZ,KAAK,CAACM,QAAQ;gBACjC,IACAF,SAAS;gBACbW,SAASH,OAAOG,OAAO;YACzB,CAAA;QACAC,aAAavB,QAAQuB,WAAW;QAChCC,WAAWxB,QAAQyB,UAAU;QAC7BC,WAAW1B,QAAQ2B,UAAU;QAC7BC,WAAW5B,QAAQ6B,UAAU;QAC7BC,WAAW9B,QAAQ+B,UAAU;QAC7BX,OAAOpB,QAAQoB,KAAK;QACpBY,YAAYhC,QAAQgC,UAAU,EAAEd,IAAI,CAACe,YAAclC,IAAIU,YAAY,CAACwB,SAAS,CAAClC,KAAKkC;IACrF;AACF,CAAC"}
@@ -1,10 +1,8 @@
1
1
  import type { DiscordEmbed } from '@discordeno/types';
2
2
  import type { Bot } from '../index.js';
3
3
  export declare function transformEmbed(bot: Bot, payload: DiscordEmbed): {
4
- type?: import("@discordeno/types").EmbedTypes | undefined;
5
- url?: string | undefined;
6
4
  description?: string | undefined;
7
- color?: number | undefined;
5
+ type?: import("@discordeno/types").EmbedTypes | undefined;
8
6
  image?: {
9
7
  proxyUrl?: string | undefined;
10
8
  height?: number | undefined;
@@ -18,7 +16,9 @@ export declare function transformEmbed(bot: Bot, payload: DiscordEmbed): {
18
16
  width?: number | undefined;
19
17
  } | undefined;
20
18
  title?: string | undefined;
19
+ url?: string | undefined;
21
20
  timestamp?: number | undefined;
21
+ color?: number | undefined;
22
22
  footer?: {
23
23
  iconUrl?: string | undefined;
24
24
  proxyIconUrl?: string | undefined;
@@ -4,19 +4,51 @@ import { EmojiToggles } from './toggles/emoji.js';
4
4
  export declare function transformEmoji(bot: Bot, payload: DiscordEmoji): {
5
5
  id?: bigint | undefined;
6
6
  name?: string | undefined;
7
+ roles?: bigint[] | undefined;
7
8
  user?: {
8
- flags?: import("@discordeno/types").UserFlags | undefined;
9
9
  locale?: string | undefined;
10
+ flags?: {
11
+ bitfield: number;
12
+ contains: (bits: number) => boolean;
13
+ add: (bits: number) => import("./toggles/ToggleBitfield.js").ToggleBitfield;
14
+ remove: (bits: number) => import("./toggles/ToggleBitfield.js").ToggleBitfield;
15
+ toJSON: () => number;
16
+ } | undefined;
10
17
  avatar?: bigint | undefined;
11
18
  email?: string | undefined;
19
+ banner?: bigint | undefined;
20
+ toggles?: {
21
+ bot: boolean;
22
+ system: boolean;
23
+ verified: boolean;
24
+ mfaEnabled: boolean;
25
+ bitfield: number;
26
+ list: () => Record<"bot" | "system" | "verified" | "mfaEnabled", boolean>;
27
+ has: (permissions: "bot" | "system" | "verified" | "mfaEnabled" | ("bot" | "system" | "verified" | "mfaEnabled")[]) => boolean;
28
+ contains: (bits: number) => boolean;
29
+ add: (bits: number) => import("./toggles/user.js").UserToggles;
30
+ remove: (bits: number) => import("./toggles/user.js").UserToggles;
31
+ toJSON: () => number;
32
+ } | undefined;
33
+ globalName?: string | undefined;
12
34
  premiumType?: import("@discordeno/types").PremiumTypes | undefined;
13
- publicFlags?: import("@discordeno/types").UserFlags | undefined;
14
- id: bigint;
35
+ publicFlags?: {
36
+ bitfield: number;
37
+ contains: (bits: number) => boolean;
38
+ add: (bits: number) => import("./toggles/ToggleBitfield.js").ToggleBitfield;
39
+ remove: (bits: number) => import("./toggles/ToggleBitfield.js").ToggleBitfield;
40
+ toJSON: () => number;
41
+ } | undefined;
42
+ accentColor?: number | undefined;
15
43
  username: string;
44
+ id: bigint;
16
45
  discriminator: string;
17
- toggles: import("./index.js").UserToggles;
46
+ bot: boolean;
47
+ system: boolean;
48
+ verified: boolean;
49
+ tag: string;
50
+ mfaEnabled: boolean;
18
51
  } | undefined;
19
- roles?: bigint[] | undefined;
20
52
  toggles: EmojiToggles;
21
53
  };
22
54
  export interface Emoji extends ReturnType<typeof transformEmoji> {
@@ -1 +1 @@
1
- {"version":3,"file":"emoji.d.ts","sourceRoot":"","sources":["../../src/transformers/emoji.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY;;;;;;;;;;;;;;;;;EAU7D;AAED,MAAM,WAAW,KAAM,SAAQ,UAAU,CAAC,OAAO,cAAc,CAAC;CAAG"}
1
+ {"version":3,"file":"emoji.d.ts","sourceRoot":"","sources":["../../src/transformers/emoji.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7D;AAED,MAAM,WAAW,KAAM,SAAQ,UAAU,CAAC,OAAO,cAAc,CAAC;CAAG"}
@@ -8,11 +8,10 @@ export declare function transformGuild(bot: Bot, payload: {
8
8
  } & {
9
9
  shardId: number;
10
10
  }): {
11
- applicationId?: bigint | undefined;
12
11
  banner?: bigint | undefined;
13
12
  icon?: bigint | undefined;
14
13
  description?: string | null | undefined;
15
- joinedAt?: number | undefined;
14
+ applicationId?: bigint | undefined;
16
15
  approximateMemberCount?: number | undefined;
17
16
  approximatePresenceCount?: number | undefined;
18
17
  maxMembers?: number | undefined;
@@ -37,6 +36,7 @@ export declare function transformGuild(bot: Bot, payload: {
37
36
  }[];
38
37
  } | undefined;
39
38
  discoverySplash?: bigint | undefined;
39
+ joinedAt?: number | undefined;
40
40
  splash?: bigint | undefined;
41
41
  afkChannelId?: bigint | undefined;
42
42
  widgetChannelId?: bigint | undefined;
@@ -45,8 +45,8 @@ export declare function transformGuild(bot: Bot, payload: {
45
45
  publicUpdatesChannelId?: bigint | undefined;
46
46
  id: bigint;
47
47
  name: string;
48
- toggles: GuildToggles;
49
48
  members: Collection<bigint, import("./member.js").Member>;
49
+ toggles: GuildToggles;
50
50
  permissions: bigint;
51
51
  ownerId: bigint;
52
52
  memberCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"guild.d.ts","sourceRoot":"","sources":["../../src/transformers/guild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+F9F;AAED,MAAM,WAAW,KAAM,SAAQ,UAAU,CAAC,OAAO,cAAc,CAAC;CAAG"}
1
+ {"version":3,"file":"guild.d.ts","sourceRoot":"","sources":["../../src/transformers/guild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8F9F;AAED,MAAM,WAAW,KAAM,SAAQ,UAAU,CAAC,OAAO,cAAc,CAAC;CAAG"}
@@ -46,7 +46,10 @@ export function transformGuild(bot, payload) {
46
46
  icon: payload.guild.icon ? iconHashToBigInt(payload.guild.icon) : undefined,
47
47
  banner: payload.guild.banner ? iconHashToBigInt(payload.guild.banner) : undefined,
48
48
  splash: payload.guild.splash ? iconHashToBigInt(payload.guild.splash) : undefined,
49
- channels: new Collection(payload.guild.channels?.map((channel)=>{
49
+ channels: new Collection([
50
+ ...payload.guild.channels ?? [],
51
+ ...payload.guild.threads ?? []
52
+ ].map((channel)=>{
50
53
  const result = bot.transformers.channel(bot, {
51
54
  channel,
52
55
  guildId
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transformers/guild.ts"],"sourcesContent":["import type { DiscordGuild } from '@discordeno/types'\nimport { Collection, iconHashToBigInt } from '@discordeno/utils'\nimport type { Bot } from '../index.js'\nimport type { Optionalize } from '../optionalize.js'\nimport type { Emoji } from '../transformers/emoji.js'\nimport { GuildToggles } from './toggles/guild.js'\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { shardId: number }) {\n const guildId = bot.transformers.snowflake(payload.guild.id)\n\n const guild = {\n afkTimeout: payload.guild.afk_timeout,\n approximateMemberCount: payload.guild.approximate_member_count,\n approximatePresenceCount: payload.guild.approximate_presence_count,\n defaultMessageNotifications: payload.guild.default_message_notifications,\n description: payload.guild.description,\n explicitContentFilter: payload.guild.explicit_content_filter,\n toggles: new GuildToggles(payload.guild),\n maxMembers: payload.guild.max_members,\n maxPresences: payload.guild.max_presences ?? undefined,\n maxVideoChannelUsers: payload.guild.max_video_channel_users,\n maxStageVideoChannelUsers: payload.guild.max_stage_video_channel_users,\n mfaLevel: payload.guild.mfa_level,\n name: payload.guild.name,\n nsfwLevel: payload.guild.nsfw_level,\n preferredLocale: payload.guild.preferred_locale,\n premiumSubscriptionCount: payload.guild.premium_subscription_count,\n premiumTier: payload.guild.premium_tier,\n stageInstances: payload.guild.stage_instances?.map((si) => ({\n /** The id of this Stage instance */\n id: bot.transformers.snowflake(si.id),\n /** The guild id of the associated Stage channel */\n guildId,\n /** The id of the associated Stage channel */\n channelId: bot.transformers.snowflake(si.channel_id),\n /** The topic of the Stage instance (1-120 characters) */\n topic: si.topic,\n })),\n systemChannelFlags: payload.guild.system_channel_flags,\n vanityUrlCode: payload.guild.vanity_url_code,\n verificationLevel: payload.guild.verification_level,\n welcomeScreen: payload.guild.welcome_screen\n ? {\n description: payload.guild.welcome_screen.description ?? undefined,\n welcomeChannels: payload.guild.welcome_screen.welcome_channels.map((wc) => ({\n channelId: bot.transformers.snowflake(wc.channel_id),\n description: wc.description,\n emojiId: wc.emoji_id ? bot.transformers.snowflake(wc.emoji_id) : undefined,\n emojiName: wc.emoji_name ?? undefined,\n })),\n }\n : undefined,\n discoverySplash: payload.guild.discovery_splash ? iconHashToBigInt(payload.guild.discovery_splash) : undefined,\n\n joinedAt: payload.guild.joined_at ? Date.parse(payload.guild.joined_at) : undefined,\n memberCount: payload.guild.member_count ?? 0,\n shardId: payload.shardId,\n icon: payload.guild.icon ? iconHashToBigInt(payload.guild.icon) : undefined,\n banner: payload.guild.banner ? iconHashToBigInt(payload.guild.banner) : undefined,\n splash: payload.guild.splash ? iconHashToBigInt(payload.guild.splash) : undefined,\n channels: new Collection(\n payload.guild.channels?.map((channel) => {\n const result = bot.transformers.channel(bot, { channel, guildId })\n return [result.id, result]\n }),\n ),\n members: new Collection(\n payload.guild.members?.map((member) => {\n const result = bot.transformers.member(bot, member, guildId, bot.transformers.snowflake(member.user!.id))\n return [result.id, result]\n }),\n ),\n roles: new Collection(\n payload.guild.roles?.map((role) => {\n const result = bot.transformers.role(bot, { role, guildId })\n return [result.id, result]\n }),\n ),\n emojis: new Collection(\n (payload.guild.emojis || []).map((emoji) => {\n const em: Emoji = bot.transformers.emoji(bot, emoji)\n return [em.id!, em]\n }),\n ),\n voiceStates: new Collection(\n (payload.guild.voice_states ?? []).map((vs) => bot.transformers.voiceState(bot, { voiceState: vs, guildId })).map((vs) => [vs.userId, vs]),\n ),\n\n id: guildId,\n // WEIRD EDGE CASE WITH BOT CREATED SERVERS\n ownerId: payload.guild.owner_id ? bot.transformers.snowflake(payload.guild.owner_id) : 0n,\n permissions: payload.guild.permissions ? bot.transformers.snowflake(payload.guild.permissions) : 0n,\n afkChannelId: payload.guild.afk_channel_id ? bot.transformers.snowflake(payload.guild.afk_channel_id) : undefined,\n widgetChannelId: payload.guild.widget_channel_id ? bot.transformers.snowflake(payload.guild.widget_channel_id) : undefined,\n applicationId: payload.guild.application_id ? bot.transformers.snowflake(payload.guild.application_id) : undefined,\n systemChannelId: payload.guild.system_channel_id ? bot.transformers.snowflake(payload.guild.system_channel_id) : undefined,\n rulesChannelId: payload.guild.rules_channel_id ? bot.transformers.snowflake(payload.guild.rules_channel_id) : undefined,\n publicUpdatesChannelId: payload.guild.public_updates_channel_id ? bot.transformers.snowflake(payload.guild.public_updates_channel_id) : undefined,\n premiumProgressBarEnabled: payload.guild.premium_progress_bar_enabled,\n }\n\n return guild as Optionalize<typeof guild>\n}\n\nexport interface Guild extends ReturnType<typeof transformGuild> {}\n"],"names":["Collection","iconHashToBigInt","GuildToggles","transformGuild","bot","payload","guildId","transformers","snowflake","guild","id","afkTimeout","afk_timeout","approximateMemberCount","approximate_member_count","approximatePresenceCount","approximate_presence_count","defaultMessageNotifications","default_message_notifications","description","explicitContentFilter","explicit_content_filter","toggles","maxMembers","max_members","maxPresences","max_presences","undefined","maxVideoChannelUsers","max_video_channel_users","maxStageVideoChannelUsers","max_stage_video_channel_users","mfaLevel","mfa_level","name","nsfwLevel","nsfw_level","preferredLocale","preferred_locale","premiumSubscriptionCount","premium_subscription_count","premiumTier","premium_tier","stageInstances","stage_instances","map","si","channelId","channel_id","topic","systemChannelFlags","system_channel_flags","vanityUrlCode","vanity_url_code","verificationLevel","verification_level","welcomeScreen","welcome_screen","welcomeChannels","welcome_channels","wc","emojiId","emoji_id","emojiName","emoji_name","discoverySplash","discovery_splash","joinedAt","joined_at","Date","parse","memberCount","member_count","shardId","icon","banner","splash","channels","channel","result","members","member","user","roles","role","emojis","emoji","em","voiceStates","voice_states","vs","voiceState","userId","ownerId","owner_id","permissions","afkChannelId","afk_channel_id","widgetChannelId","widget_channel_id","applicationId","application_id","systemChannelId","system_channel_id","rulesChannelId","rules_channel_id","publicUpdatesChannelId","public_updates_channel_id","premiumProgressBarEnabled","premium_progress_bar_enabled"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/transformers/guild.ts"],"sourcesContent":["import type { DiscordGuild } from '@discordeno/types'\nimport { Collection, iconHashToBigInt } from '@discordeno/utils'\nimport type { Bot } from '../index.js'\nimport type { Optionalize } from '../optionalize.js'\nimport type { Emoji } from '../transformers/emoji.js'\nimport { GuildToggles } from './toggles/guild.js'\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { shardId: number }) {\n const guildId = bot.transformers.snowflake(payload.guild.id)\n\n const guild = {\n afkTimeout: payload.guild.afk_timeout,\n approximateMemberCount: payload.guild.approximate_member_count,\n approximatePresenceCount: payload.guild.approximate_presence_count,\n defaultMessageNotifications: payload.guild.default_message_notifications,\n description: payload.guild.description,\n explicitContentFilter: payload.guild.explicit_content_filter,\n toggles: new GuildToggles(payload.guild),\n maxMembers: payload.guild.max_members,\n maxPresences: payload.guild.max_presences ?? undefined,\n maxVideoChannelUsers: payload.guild.max_video_channel_users,\n maxStageVideoChannelUsers: payload.guild.max_stage_video_channel_users,\n mfaLevel: payload.guild.mfa_level,\n name: payload.guild.name,\n nsfwLevel: payload.guild.nsfw_level,\n preferredLocale: payload.guild.preferred_locale,\n premiumSubscriptionCount: payload.guild.premium_subscription_count,\n premiumTier: payload.guild.premium_tier,\n stageInstances: payload.guild.stage_instances?.map((si) => ({\n /** The id of this Stage instance */\n id: bot.transformers.snowflake(si.id),\n /** The guild id of the associated Stage channel */\n guildId,\n /** The id of the associated Stage channel */\n channelId: bot.transformers.snowflake(si.channel_id),\n /** The topic of the Stage instance (1-120 characters) */\n topic: si.topic,\n })),\n systemChannelFlags: payload.guild.system_channel_flags,\n vanityUrlCode: payload.guild.vanity_url_code,\n verificationLevel: payload.guild.verification_level,\n welcomeScreen: payload.guild.welcome_screen\n ? {\n description: payload.guild.welcome_screen.description ?? undefined,\n welcomeChannels: payload.guild.welcome_screen.welcome_channels.map((wc) => ({\n channelId: bot.transformers.snowflake(wc.channel_id),\n description: wc.description,\n emojiId: wc.emoji_id ? bot.transformers.snowflake(wc.emoji_id) : undefined,\n emojiName: wc.emoji_name ?? undefined,\n })),\n }\n : undefined,\n discoverySplash: payload.guild.discovery_splash ? iconHashToBigInt(payload.guild.discovery_splash) : undefined,\n\n joinedAt: payload.guild.joined_at ? Date.parse(payload.guild.joined_at) : undefined,\n memberCount: payload.guild.member_count ?? 0,\n shardId: payload.shardId,\n icon: payload.guild.icon ? iconHashToBigInt(payload.guild.icon) : undefined,\n banner: payload.guild.banner ? iconHashToBigInt(payload.guild.banner) : undefined,\n splash: payload.guild.splash ? iconHashToBigInt(payload.guild.splash) : undefined,\n channels: new Collection(\n [...(payload.guild.channels ?? []), ...(payload.guild.threads ?? [])].map((channel) => {\n const result = bot.transformers.channel(bot, { channel, guildId })\n return [result.id, result]\n }),\n ),\n members: new Collection(\n payload.guild.members?.map((member) => {\n const result = bot.transformers.member(bot, member, guildId, bot.transformers.snowflake(member.user!.id))\n return [result.id, result]\n }),\n ),\n roles: new Collection(\n payload.guild.roles?.map((role) => {\n const result = bot.transformers.role(bot, { role, guildId })\n return [result.id, result]\n }),\n ),\n emojis: new Collection(\n (payload.guild.emojis || []).map((emoji) => {\n const em: Emoji = bot.transformers.emoji(bot, emoji)\n return [em.id!, em]\n }),\n ),\n voiceStates: new Collection(\n (payload.guild.voice_states ?? []).map((vs) => bot.transformers.voiceState(bot, { voiceState: vs, guildId })).map((vs) => [vs.userId, vs]),\n ),\n id: guildId,\n // WEIRD EDGE CASE WITH BOT CREATED SERVERS\n ownerId: payload.guild.owner_id ? bot.transformers.snowflake(payload.guild.owner_id) : 0n,\n permissions: payload.guild.permissions ? bot.transformers.snowflake(payload.guild.permissions) : 0n,\n afkChannelId: payload.guild.afk_channel_id ? bot.transformers.snowflake(payload.guild.afk_channel_id) : undefined,\n widgetChannelId: payload.guild.widget_channel_id ? bot.transformers.snowflake(payload.guild.widget_channel_id) : undefined,\n applicationId: payload.guild.application_id ? bot.transformers.snowflake(payload.guild.application_id) : undefined,\n systemChannelId: payload.guild.system_channel_id ? bot.transformers.snowflake(payload.guild.system_channel_id) : undefined,\n rulesChannelId: payload.guild.rules_channel_id ? bot.transformers.snowflake(payload.guild.rules_channel_id) : undefined,\n publicUpdatesChannelId: payload.guild.public_updates_channel_id ? bot.transformers.snowflake(payload.guild.public_updates_channel_id) : undefined,\n premiumProgressBarEnabled: payload.guild.premium_progress_bar_enabled,\n }\n\n return guild as Optionalize<typeof guild>\n}\n\nexport interface Guild extends ReturnType<typeof transformGuild> {}\n"],"names":["Collection","iconHashToBigInt","GuildToggles","transformGuild","bot","payload","guildId","transformers","snowflake","guild","id","afkTimeout","afk_timeout","approximateMemberCount","approximate_member_count","approximatePresenceCount","approximate_presence_count","defaultMessageNotifications","default_message_notifications","description","explicitContentFilter","explicit_content_filter","toggles","maxMembers","max_members","maxPresences","max_presences","undefined","maxVideoChannelUsers","max_video_channel_users","maxStageVideoChannelUsers","max_stage_video_channel_users","mfaLevel","mfa_level","name","nsfwLevel","nsfw_level","preferredLocale","preferred_locale","premiumSubscriptionCount","premium_subscription_count","premiumTier","premium_tier","stageInstances","stage_instances","map","si","channelId","channel_id","topic","systemChannelFlags","system_channel_flags","vanityUrlCode","vanity_url_code","verificationLevel","verification_level","welcomeScreen","welcome_screen","welcomeChannels","welcome_channels","wc","emojiId","emoji_id","emojiName","emoji_name","discoverySplash","discovery_splash","joinedAt","joined_at","Date","parse","memberCount","member_count","shardId","icon","banner","splash","channels","threads","channel","result","members","member","user","roles","role","emojis","emoji","em","voiceStates","voice_states","vs","voiceState","userId","ownerId","owner_id","permissions","afkChannelId","afk_channel_id","widgetChannelId","widget_channel_id","applicationId","application_id","systemChannelId","system_channel_id","rulesChannelId","rules_channel_id","publicUpdatesChannelId","public_updates_channel_id","premiumProgressBarEnabled","premium_progress_bar_enabled"],"mappings":"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"}