diff --git a/node_modules/discord.js/src/structures/APIMessage.js b/node_modules/discord.js/src/structures/APIMessage.js index 3451bdb..be98887 100644 --- a/node_modules/discord.js/src/structures/APIMessage.js +++ b/node_modules/discord.js/src/structures/APIMessage.js @@ -147,6 +147,7 @@ class APIMessage { if (this.data) return this; const content = this.makeContent(); + const components = this.options.components; const tts = Boolean(this.options.tts); let nonce; @@ -204,6 +205,7 @@ class APIMessage { nonce, embed: this.options.embed === null ? null : embeds[0], embeds, + components, username, avatar_url: avatarURL, allowed_mentions: typeof content === 'undefined' ? undefined : allowedMentions, diff --git a/node_modules/discord.js/src/structures/Message.js b/node_modules/discord.js/src/structures/Message.js index 36c26f2..41ec6cd 100644 --- a/node_modules/discord.js/src/structures/Message.js +++ b/node_modules/discord.js/src/structures/Message.js @@ -78,6 +78,15 @@ class Message extends Base { this.content = null; } + if ('components' in data) { + /** + * The content of the message + * @type {?any} + */ + this.components = data.components; + } + + if ('author' in data) { /** * The author of the message @@ -180,9 +189,9 @@ class Message extends Base { */ this.activity = data.activity ? { - partyID: data.activity.party_id, - type: data.activity.type, - } + partyID: data.activity.party_id, + type: data.activity.type, + } : null; /** @@ -218,10 +227,10 @@ class Message extends Base { */ this.reference = data.message_reference ? { - channelID: data.message_reference.channel_id, - guildID: data.message_reference.guild_id, - messageID: data.message_reference.message_id, - } + channelID: data.message_reference.channel_id, + guildID: data.message_reference.guild_id, + messageID: data.message_reference.message_id, + } : null; } @@ -250,6 +259,7 @@ class Message extends Base { if ('edited_timestamp' in data) this.editedTimestamp = new Date(data.edited_timestamp).getTime(); if ('content' in data) this.content = data.content; + if ('components' in data) this.components = data.components; if ('pinned' in data) this.pinned = data.pinned; if ('tts' in data) this.tts = data.tts; if ('embeds' in data) this.embeds = data.embeds.map(e => new Embed(e, true)); @@ -658,6 +668,7 @@ class Message extends Base { this.id === message.id && this.author.id === message.author.id && this.content === message.content && + this.components === message.components && this.tts === message.tts && this.nonce === message.nonce && this.embeds.length === message.embeds.length && diff --git a/node_modules/discord.js/typings/index.d.ts b/node_modules/discord.js/typings/index.d.ts index e0be3c6..9323f47 100644 --- a/node_modules/discord.js/typings/index.d.ts +++ b/node_modules/discord.js/typings/index.d.ts @@ -972,6 +972,7 @@ declare module 'discord.js' { public editedTimestamp: number | null; public readonly edits: Message[]; public embeds: MessageEmbed[]; + public components: ComponentActionRow[]; public readonly guild: Guild | null; public id: Snowflake; public readonly member: GuildMember | null; @@ -1024,6 +1025,130 @@ declare module 'discord.js' { public unpin(options?: { reason?: string }): Promise; } + export class MessageWithComponents extends Base { + constructor(client: Client, data: object, channel: TextChannel | DMChannel | NewsChannel); + private _edits: Message[]; + private patch(data: object): Message; + + public activity: MessageActivity | null; + public application: ClientApplication | null; + public attachments: Collection; + public author: User; + public channel: TextChannel | DMChannel | NewsChannel; + public readonly cleanContent: string; + public content: string; + public readonly createdAt: Date; + public createdTimestamp: number; + public readonly deletable: boolean; + public deleted: boolean; + public readonly editable: boolean; + public readonly editedAt: Date | null; + public editedTimestamp: number | null; + public readonly edits: Message[]; + public embeds: MessageEmbed[]; + public components: ComponentActionRow[]; + public readonly guild: Guild | null; + public id: Snowflake; + public readonly member: GuildMember | null; + public mentions: MessageMentions; + public nonce: string | null; + public readonly partial: false; + public readonly pinnable: boolean; + public pinned: boolean; + public reactions: ReactionManager; + public system: boolean; + public tts: boolean; + public type: MessageType; + public readonly url: string; + public webhookID: Snowflake | null; + public flags: Readonly; + public reference: MessageReference | null; + public awaitReactions( + filter: CollectorFilter, + options?: AwaitReactionsOptions, + ): Promise>; + public createReactionCollector(filter: CollectorFilter, options?: ReactionCollectorOptions): ReactionCollector; + public delete(options?: { timeout?: number; reason?: string }): Promise; + public edit( + content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage, + ): Promise; + public edit(content: StringResolvable, options: MessageEditOptions | MessageEmbed): Promise; + public equals(message: Message, rawData: object): boolean; + public fetchWebhook(): Promise; + public crosspost(): Promise; + public fetch(force?: boolean): Promise; + public pin(options?: { reason?: string }): Promise; + public react(emoji: EmojiIdentifierResolvable): Promise; + public reply( + content: APIMessageContentResolvable | (MessageOptions & { split?: false }) | MessageAdditions, + ): Promise; + public reply(options: MessageOptions & { split: true | SplitOptions }): Promise; + public reply(options: MessageOptions | APIMessage): Promise; + public reply( + content: StringResolvable, + options: (MessageOptions & { split?: false }) | MessageAdditions, + ): Promise; + public reply( + content: StringResolvable, + options: MessageOptions & { split: true | SplitOptions }, + ): Promise; + public reply(content: StringResolvable, options: MessageOptions): Promise; + public suppressEmbeds(suppress?: boolean): Promise; + public toJSON(): object; + public toString(): string; + public unpin(options?: { reason?: string }): Promise; + } + + export class ComponentActionRow { + public type: 1; + public components: ComponentTypes[] + } + + export class ButtonComponent { + public type: 2; + public custom_id?: string; + public style?: number; + public label?: string; + public disabled?: boolean; + public emoji?: EmojiPartial + } + + export class LinkButtonComponent { + public type: 2; + public style?: 5; + public label?: string; + public disabled?: boolean; + public url?: string; + } + + export class SelectionComponent { + public type: 3; + public placeholder?: string; + public custom_id?: string; + public min_values?: number; + public max_values?: number; + public options?: SelectionComponentOption[] + } + + export interface SelectionComponentOption { + label?: string, + description?: string, + value?: string + } + + export type ComponentTypes = + | ButtonComponent + | LinkButtonComponent + | ComponentActionRow + | SelectionComponent + + + export interface EmojiPartial { + name: string, + id: string, + animated: boolean + } + export class MessageAttachment { constructor(attachment: BufferResolvable | Stream, name?: string, data?: object); @@ -2832,13 +2957,14 @@ declare module 'discord.js' { tts?: boolean; nonce?: string; content?: StringResolvable; - embed?: MessageEmbed | MessageEmbedOptions; + embed?: MessageEmbed[] | MessageEmbedOptions[]; disableMentions?: 'none' | 'all' | 'everyone'; allowedMentions?: MessageMentionOptions; files?: (FileOptions | BufferResolvable | Stream | MessageAttachment)[]; code?: string | boolean; split?: boolean | SplitOptions; reply?: UserResolvable; + components?: string; } type MessageReactionResolvable = MessageReaction | Snowflake; @@ -2881,11 +3007,11 @@ declare module 'discord.js' { type OverwriteType = 'member' | 'role'; - interface PermissionFlags extends Record {} + interface PermissionFlags extends Record { } - interface PermissionObject extends Record {} + interface PermissionObject extends Record { } - interface PermissionOverwriteOption extends Partial> {} + interface PermissionOverwriteOption extends Partial> { } type PermissionResolvable = BitFieldResolvable; @@ -2922,7 +3048,7 @@ declare module 'discord.js' { | 'MANAGE_WEBHOOKS' | 'MANAGE_EMOJIS'; - interface RecursiveArray extends ReadonlyArray> {} + interface RecursiveArray extends ReadonlyArray> { } type RecursiveReadonlyArray = ReadonlyArray>; @@ -2956,16 +3082,16 @@ declare module 'discord.js' { partial: true; fetch(): Promise; } & { - [K in keyof Omit< - T, - 'client' | 'createdAt' | 'createdTimestamp' | 'id' | 'partial' | 'fetch' | 'deleted' | O - >]: T[K] extends Function ? T[K] : T[K] | null; // tslint:disable-line:ban-types - }; + [K in keyof Omit< + T, + 'client' | 'createdAt' | 'createdTimestamp' | 'id' | 'partial' | 'fetch' | 'deleted' | O + >]: T[K] extends Function ? T[K] : T[K] | null; // tslint:disable-line:ban-types + }; interface PartialDMChannel extends Partialize< - DMChannel, - 'lastMessage' | 'lastMessageID' | 'messages' | 'recipient' | 'type' | 'typing' | 'typingCount' + DMChannel, + 'lastMessage' | 'lastMessageID' | 'messages' | 'recipient' | 'type' | 'typing' | 'typingCount' > { lastMessage: null; lastMessageID: undefined; @@ -2992,18 +3118,18 @@ declare module 'discord.js' { interface PartialGuildMember extends Partialize< - GuildMember, - | 'bannable' - | 'displayColor' - | 'displayHexColor' - | 'displayName' - | 'guild' - | 'kickable' - | 'permissions' - | 'roles' - | 'manageable' - | 'presence' - | 'voice' + GuildMember, + | 'bannable' + | 'displayColor' + | 'displayHexColor' + | 'displayName' + | 'guild' + | 'kickable' + | 'permissions' + | 'roles' + | 'manageable' + | 'presence' + | 'voice' > { readonly bannable: boolean; readonly displayColor: number; @@ -3022,18 +3148,19 @@ declare module 'discord.js' { interface PartialMessage extends Partialize< - Message, - | 'attachments' - | 'channel' - | 'deletable' - | 'crosspostable' - | 'editable' - | 'mentions' - | 'pinnable' - | 'url' - | 'flags' - | 'edits' - | 'embeds' + Message, + | 'attachments' + | 'channel' + | 'deletable' + | 'crosspostable' + | 'editable' + | 'mentions' + | 'pinnable' + | 'url' + | 'flags' + | 'edits' + | 'embeds' + | 'components' > { attachments: Message['attachments']; channel: Message['channel']; @@ -3042,6 +3169,7 @@ declare module 'discord.js' { readonly editable: boolean; readonly edits: Message['edits']; embeds: Message['embeds']; + components: Message['components']; flags: Message['flags']; mentions: Message['mentions']; readonly pinnable: boolean;