fix: allowedMentions, container, media item toJSON() for components v2
backport #10852 djs
This commit is contained in:
@@ -161,6 +161,19 @@ class BaseMessageComponent {
|
|||||||
static resolveType(type) {
|
static resolveType(type) {
|
||||||
return typeof type === 'string' ? type : MessageComponentTypes[type];
|
return typeof type === 'string' ? type : MessageComponentTypes[type];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static extractInteractiveComponents(component) {
|
||||||
|
switch (component.type) {
|
||||||
|
case MessageComponentTypes.ACTION_ROW:
|
||||||
|
return component.components;
|
||||||
|
case MessageComponentTypes.SECTION:
|
||||||
|
return [...component.components, component.accessory];
|
||||||
|
case MessageComponentTypes.CONTAINER:
|
||||||
|
return component.components.flatMap(BaseMessageComponent.extractInteractiveComponents);
|
||||||
|
default:
|
||||||
|
return [component];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = BaseMessageComponent;
|
module.exports = BaseMessageComponent;
|
||||||
|
|||||||
@@ -1003,7 +1003,11 @@ class Message extends Base {
|
|||||||
* @returns {?MessageActionRowComponent}
|
* @returns {?MessageActionRowComponent}
|
||||||
*/
|
*/
|
||||||
resolveComponent(customId) {
|
resolveComponent(customId) {
|
||||||
return this.components.flatMap(row => row.components).find(component => component.customId === customId) ?? null;
|
return (
|
||||||
|
this.components
|
||||||
|
.flatMap(BaseMessageComponent.extractInteractiveComponents)
|
||||||
|
.find(component => (component.customId ?? component.custom_id) === customId) ?? null
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ class MessagePayload {
|
|||||||
username,
|
username,
|
||||||
avatar_url: avatarURL,
|
avatar_url: avatarURL,
|
||||||
allowed_mentions:
|
allowed_mentions:
|
||||||
typeof content === 'undefined' && typeof message_reference === 'undefined' ? undefined : allowedMentions,
|
this.isMessage && this.target?.author?.id !== this.target?.client?.user?.id ? undefined : allowedMentions,
|
||||||
flags,
|
flags,
|
||||||
message_reference,
|
message_reference,
|
||||||
attachments: this.options.attachments,
|
attachments: this.options.attachments,
|
||||||
|
|||||||
@@ -12,15 +12,17 @@ class UnfurledMediaItem {
|
|||||||
* @type {string}
|
* @type {string}
|
||||||
*/
|
*/
|
||||||
this.url = data.url ?? null;
|
this.url = data.url ?? null;
|
||||||
|
/**
|
||||||
|
* @type {APIUnfurledMediaItem}
|
||||||
|
*/
|
||||||
|
this.data = data;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Returns the API-compatible JSON for this media item
|
||||||
* @returns {APIUnfurledMediaItem}
|
* @returns {APIUnfurledMediaItem}
|
||||||
*/
|
*/
|
||||||
toJSON() {
|
toJSON() {
|
||||||
return {
|
return { ...this.data };
|
||||||
url: this.url,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user