From 1def6ef27d044674c7a149cb9b9f99284f792af0 Mon Sep 17 00:00:00 2001 From: tungdo0602 Date: Tue, 1 Jul 2025 20:17:13 +0700 Subject: [PATCH] test --- .eslintrc.json | 2 +- src/structures/Message.js | 5 ++-- typings/enums.d.ts | 13 ++++++++++- typings/index.d.ts | 49 ++++++++++++++++++++++----------------- 4 files changed, 44 insertions(+), 25 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 80c6ae3..283382f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -285,6 +285,6 @@ "message": "Import setImmediate from `node:timers` instead" } ], - "linebreak-style": "off" + "linebreak-style": 0 } } \ No newline at end of file diff --git a/src/structures/Message.js b/src/structures/Message.js index e5385bb..3c9b116 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -25,6 +25,7 @@ const MessageFlags = require('../util/MessageFlags'); const Permissions = require('../util/Permissions'); const SnowflakeUtil = require('../util/SnowflakeUtil'); const Util = require('../util/Util'); +const ContainerComponent = require('./ContainerComponent'); /** * @type {WeakSet} @@ -162,8 +163,8 @@ class Message extends Base { if ('components' in data) { /** - * A list of MessageActionRows in the message - * @type {MessageActionRow[]} + * A list of components in the message + * @type {MessageActionRow[] | ContainerComponent[]} */ this.components = data.components.map(c => BaseMessageComponent.create(c, this.client)); } else { diff --git a/typings/enums.d.ts b/typings/enums.d.ts index cc8bff3..d65c6c4 100644 --- a/typings/enums.d.ts +++ b/typings/enums.d.ts @@ -235,6 +235,17 @@ export const enum MessageComponentTypes { CONTAINER = 17, } +export const enum MessageComponentInteractables { + ACTION_ROW = 1, + BUTTON = 2, + STRING_SELECT = 3, + TEXT_INPUT = 4, + USER_SELECT = 5, + ROLE_SELECT = 6, + MENTIONABLE_SELECT = 7, + CHANNEL_SELECT = 8, +} + export const enum SelectMenuComponentTypes { STRING_SELECT = 3, USER_SELECT = 5, @@ -336,4 +347,4 @@ export const enum RelationshipTypes { export const enum SeparatorSpacingSizes { SMALL = 1, LARGE = 2, -} \ No newline at end of file +} diff --git a/typings/index.d.ts b/typings/index.d.ts index f0a4272..eb9aee9 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -92,6 +92,7 @@ import { MembershipStates, MessageButtonStyles, MessageComponentTypes, + MessageComponentInteractables, MessageTypes, MFALevels, NSFWLevels, @@ -1604,8 +1605,8 @@ export class GuildAuditLogsEntry< TAction = TActionRaw extends keyof GuildAuditLogsIds ? GuildAuditLogsIds[TActionRaw] : TActionRaw extends null - ? 'ALL' - : TActionRaw, + ? 'ALL' + : TActionRaw, TActionType extends GuildAuditLogsActionType = TAction extends keyof GuildAuditLogsTypes ? GuildAuditLogsTypes[TAction][1] : 'ALL', @@ -1952,10 +1953,10 @@ export type CacheTypeReducer< > = [State] extends ['cached'] ? CachedType : [State] extends ['raw'] - ? RawType - : [State] extends ['raw' | 'cached'] - ? PresentType - : Fallback; + ? RawType + : [State] extends ['raw' | 'cached'] + ? PresentType + : Fallback; export class Interaction extends Base { // This a technique used to brand different cached types. Or else we'll get `never` errors on typeguard checks. @@ -2132,7 +2133,7 @@ export interface StringMappedInteractionTypes = If; export type MappedInteractionTypes = EnumValueMapped< - typeof MessageComponentTypes, + typeof MessageComponentInteractables, { BUTTON: ButtonInteraction>; STRING_SELECT: StringSelectInteraction>; @@ -2327,7 +2328,7 @@ export class MediaGalleryComponent extends BaseMessageComponent { public constructor(data?: MediaGalleryComponent | APIMediaGalleryComponent); public items: MediaGalleryItem[]; public toJSON(): APIMediaGalleryComponent; - } +} export class FileComponent extends BaseMessageComponent { public constructor(data?: FileComponent | APIFileComponent); @@ -2365,7 +2366,13 @@ export class SectionComponent exte export class ContainerComponent< U extends ThumbnailComponent | MessageButton, - T extends MessageActionRow | TextDisplayComponent | SectionComponent | MediaGalleryComponent | SeparatorComponent | FileComponent + T extends + | MessageActionRow + | TextDisplayComponent + | SectionComponent + | MediaGalleryComponent + | SeparatorComponent + | FileComponent, > extends BaseMessageComponent { public constructor(data?: ContainerComponent | APIContainerComponent); public components: T[]; @@ -6908,8 +6915,8 @@ export type GuildScheduledEventResolvable = Snowflake | GuildScheduledEvent; export type GuildScheduledEventSetStatusArg = T extends 'SCHEDULED' ? 'ACTIVE' | 'CANCELED' : T extends 'ACTIVE' - ? 'COMPLETED' - : never; + ? 'COMPLETED' + : never; export type GuildScheduledEventStatus = keyof typeof GuildScheduledEventStatuses; @@ -7152,9 +7159,9 @@ export type MessageComponentOptions = | MessageButtonOptions | MessageSelectMenuOptions; -export type MessageComponentType = keyof typeof MessageComponentTypes; +export type MessageComponentType = keyof typeof MessageComponentInteractables; -export type MessageComponentTypeResolvable = MessageComponentType | MessageComponentTypes; +export type MessageComponentTypeResolvable = MessageComponentType | MessageComponentInteractables; export type GuildForumThreadMessageCreateOptions = Omit & Pick; @@ -8059,14 +8066,14 @@ export type WSEventType = export type Serialized = T extends symbol | bigint | (() => any) ? never : T extends number | string | boolean | undefined - ? T - : T extends { toJSON(): infer R } - ? R - : T extends ReadonlyArray - ? Serialized[] - : T extends ReadonlyMap | ReadonlySet - ? {} - : { [K in keyof T]: Serialized }; + ? T + : T extends { toJSON(): infer R } + ? R + : T extends ReadonlyArray + ? Serialized[] + : T extends ReadonlyMap | ReadonlySet + ? {} + : { [K in keyof T]: Serialized }; //#endregion