diff --git a/src/structures/MessagePayload.js b/src/structures/MessagePayload.js index f61ca7d..387f4a7 100644 --- a/src/structures/MessagePayload.js +++ b/src/structures/MessagePayload.js @@ -118,47 +118,6 @@ class MessagePayload { return content; } - /** - * Makes the webembed content of this message. - * @returns {?string} - */ - async makeWebEmbed() { - let content; - - if (this.options.embeds) { - if (!Array.isArray(this.options.embeds)) { - this.options.embeds = [this.options.embeds]; - } - - const webembeds = this.options.embeds.filter(e => e instanceof WebEmbed); - this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed); - - if (webembeds.length > 0) { - if (!content) content = ''; - // Add hidden embed link - content += `${WebEmbed.hiddenEmbed} `; - - for (const webE of webembeds) { - const data = await webE.toMessage(); - content += `${data} `; - } - - content = content.trim(); - } - - // Check content - if (typeof content == 'string' && content.length > 2000) { - console.warn('[WARN] WebEmbed is longer than 2000 characters.'); - } - if (typeof content == 'string' && content.length > 4000) { - // Max length if user has nitro boost - throw new RangeError('MESSAGE_EMBED_LINK_LENGTH'); - } - } - - return content; - } - /** * Resolves data. * @returns {MessagePayload} @@ -169,7 +128,6 @@ class MessagePayload { const isWebhook = this.isWebhook; let content = this.makeContent(); - let webembed = await this.makeWebEmbed(); const tts = Boolean(this.options.tts); let nonce; @@ -231,8 +189,38 @@ class MessagePayload { this.options.attachments = attachments; } + if (this.options.embeds) { + if (!Array.isArray(this.options.embeds)) { + this.options.embeds = [this.options.embeds]; + } + + const webembeds = this.options.embeds.filter(e => e instanceof WebEmbed); + this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed); + + if (webembeds.length > 0) { + if (!content) content = ''; + // Add hidden embed link + content += `\n${WebEmbed.hiddenEmbed} \n`; + if (webembeds.length > 1) { + console.warn('Multiple webembeds are not supported, this will be ignored.'); + } + // Const embed = webembeds[0]; + for (const webE of webembeds) { + const data = await webE.toMessage(); + content += `\n${data}`; + } + } + // Check content + if (typeof content == 'string' && content.length > 2000) { + console.warn('[WARN] Content is longer than 2000 characters.'); + } + if (typeof content == 'string' && content.length > 4000) { + // Max length if user has nitro boost + throw new RangeError('MESSAGE_EMBED_LINK_LENGTH'); + } + } + this.data = { - webembed, content, tts, nonce, diff --git a/src/structures/Webhook.js b/src/structures/Webhook.js index 1c9e320..af92b0b 100644 --- a/src/structures/Webhook.js +++ b/src/structures/Webhook.js @@ -192,29 +192,13 @@ class Webhook { messagePayload = await MessagePayload.create(this, options).resolveData(); } - let { data, files } = await messagePayload.resolveFiles(); - let webembed = data.webembed; - delete data.webembed; //remove webembed - - let d = await this.client.api.webhooks(this.id, this.token).post({ + const { data, files } = await messagePayload.resolveFiles(); + const d = await this.client.api.webhooks(this.id, this.token).post({ data, files, query: { thread_id: messagePayload.options.threadId, wait: true }, auth: false, }); - - if (webembed) { - data.content = webembed; - - const _d = await this.client.api.webhooks(this.id, this.token).post({ - data, - files, - query: { thread_id: messagePayload.options.threadId, wait: true }, - auth: false, - }); - d.webembed = this.client.channels?.cache.get(_d.channel_id)?.messages._add(_d, false) ?? _d; - } - return this.client.channels?.cache.get(d.channel_id)?.messages._add(d, false) ?? d; } diff --git a/src/structures/interfaces/TextBasedChannel.js b/src/structures/interfaces/TextBasedChannel.js index 112d4c6..e160826 100644 --- a/src/structures/interfaces/TextBasedChannel.js +++ b/src/structures/interfaces/TextBasedChannel.js @@ -171,20 +171,10 @@ class TextBasedChannel { messagePayload = await MessagePayload.create(this, options).resolveData(); } - let { data, files } = await messagePayload.resolveFiles(); - let webembed = data.webembed; - delete data.webembed; //remove webembed + const { data, files } = await messagePayload.resolveFiles(); + const d = await this.client.api.channels[this.id].messages.post({ data, files }); - let d = await this.client.api.channels[this.id].messages.post({ data, files }); - - if (webembed) { - data.content = webembed; - - const _d = await this.client.api.channels[this.id].messages.post({ data, files }); - d.webembed = this.messages.cache.get(_d.id) ?? this.messages._add(_d); - } - - return this.messages.cache.get(d.id) ?? this.messages._add(d); //webembed missing after cached.. ¯\_(ツ)_/¯ + return this.messages.cache.get(d.id) ?? this.messages._add(d); } /**