From 42bea132495221fda22dfbbba68395f21d790cc5 Mon Sep 17 00:00:00 2001 From: March 7th <71698422+aiko-chan-ai@users.noreply.github.com> Date: Fri, 1 Apr 2022 22:48:49 +0700 Subject: [PATCH] Embeds send support maybe ... + fix message edit --- DOCUMENT.md | 1 - src/managers/MessageManager.js | 34 ++++++++++++++++++-------------- src/structures/MessagePayload.js | 16 ++++++++------- src/structures/WebEmbed.js | 2 +- src/structures/Webhook.js | 14 ++++++++----- 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/DOCUMENT.md b/DOCUMENT.md index 8e1807c..a01b5ff 100644 --- a/DOCUMENT.md +++ b/DOCUMENT.md @@ -319,7 +319,6 @@ message.channel.send({ content: `Hello world`, embeds: [w] }) // Patched :) - Video with Embed working - Description limit 350 characters - If you use hidden mode you must make sure your custom content is less than 1000 characters without nitro (because hidden mode uses 1000 characters + URL) -- PLEASE DON'T CREATE TOO MUCH EMBED WITH SHORTEN OPTION BECAUSE IT CAN OVERLOAD MY API (I USE API HOST BY HEROKU) diff --git a/src/managers/MessageManager.js b/src/managers/MessageManager.js index 27538dc..dd599dd 100644 --- a/src/managers/MessageManager.js +++ b/src/managers/MessageManager.js @@ -124,12 +124,16 @@ class MessageManager extends CachedManager { const messageId = this.resolveId(message); if (!messageId) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); - const { data, files } = await (options instanceof MessagePayload - ? options - : MessagePayload.create(message instanceof Message ? message : this, options) - ) - .resolveData() - .resolveFiles(); + let messagePayload; + if (options instanceof MessagePayload) { + messagePayload = await options.resolveData(); + } else { + messagePayload = await MessagePayload.create( + message instanceof Message ? message : this, + options, + ).resolveData(); + } + const { data, files } = await messagePayload.resolveFiles(); const d = await this.client.api.channels[this.channel.id].messages[messageId].patch({ data, files }); const existing = this.cache.get(messageId); @@ -220,15 +224,15 @@ class MessageManager extends CachedManager { // const data = await this.client.api.channels[this.channel.id].messages[messageId].get(); // Discord Block // https://canary.discord.com/api/v9/guilds/809133733591384155/messages/search?channel_id=840225732902518825&max_id=957254525360697375&min_id=957254525360697373 const data = ( - await this.client.api.guilds[this.channel.guild.id].messages.search.get({ - query: { - channel_id: this.channel.id, - max_id: new BigNumber.BigNumber(messageId).plus(1).toString(), - min_id: new BigNumber.BigNumber(messageId).minus(1).toString(), - }, - }) - ).messages[0] - if (data) return this._add(data[0], cache); + await this.client.api.guilds[this.channel.guild.id].messages.search.get({ + query: { + channel_id: this.channel.id, + max_id: new BigNumber.BigNumber(messageId).plus(1).toString(), + min_id: new BigNumber.BigNumber(messageId).minus(1).toString(), + }, + }) + ).messages[0] + if (data) return this._add(data[0], cache); else throw new Error('MESSAGE_ID_NOT_FOUND'); } diff --git a/src/structures/MessagePayload.js b/src/structures/MessagePayload.js index b9b8da4..c685b9e 100644 --- a/src/structures/MessagePayload.js +++ b/src/structures/MessagePayload.js @@ -195,19 +195,21 @@ class MessagePayload { } const webembeds = this.options.embeds.filter( - (e) => !(e instanceof MessageEmbed), - ); + (e) => !(e instanceof MessageEmbed), + ); this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed); if (webembeds.length > 0) { // add hidden embed link content += `\n${WebEmbed.hiddenEmbed} \n`; if (webembeds.length > 1) { - console.warn('Multiple webembeds are not supported, only the first one will be sent'); + 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}`; } - const embed = webembeds[0]; - const data = await embed.toMessage(); - content += `\n${data}`; } // Check content if (content.length > 2000) { @@ -217,7 +219,7 @@ class MessagePayload { throw new RangeError('MESSAGE_EMBED_LINK_LENGTH'); } } - + this.data = { content, tts, diff --git a/src/structures/WebEmbed.js b/src/structures/WebEmbed.js index 5f079be..646f6ef 100644 --- a/src/structures/WebEmbed.js +++ b/src/structures/WebEmbed.js @@ -301,7 +301,7 @@ class WebEmbed { // Credit: https://www.npmjs.com/package/node-url-shortener + google :)) const getShorten = async (url) => { const APIurl = [ - 'https://is.gd/create.php?format=simple&url=', + // 'https://is.gd/create.php?format=simple&url=', :( 'https://tinyurl.com/api-create.php?url=', // 'https://cdpt.in/shorten?url=', Redirects 5s :( ]; diff --git a/src/structures/Webhook.js b/src/structures/Webhook.js index 6a75499..a25badf 100644 --- a/src/structures/Webhook.js +++ b/src/structures/Webhook.js @@ -316,11 +316,15 @@ class Webhook { if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE'); let messagePayload; - - if (options instanceof MessagePayload) messagePayload = options; - else messagePayload = MessagePayload.create(this, options); - - const { data, files } = await messagePayload.resolveData().resolveFiles(); + if (options instanceof MessagePayload) { + messagePayload = await options.resolveData(); + } else { + messagePayload = await MessagePayload.create( + message instanceof Message ? message : this, + options, + ).resolveData(); + } + const { data, files } = await messagePayload.resolveFiles(); const d = await this.client.api .webhooks(this.id, this.token)