Embeds send support

maybe ... + fix message edit
This commit is contained in:
March 7th 2022-04-01 22:48:49 +07:00
parent f8c0ab6bb9
commit 42bea13249
5 changed files with 38 additions and 29 deletions

View File

@ -319,7 +319,6 @@ message.channel.send({ content: `Hello world`, embeds: [w] }) // Patched :)
- Video with Embed working - Video with Embed working
- Description limit 350 characters - 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) - 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)
- <strong>PLEASE DON'T CREATE TOO MUCH EMBED WITH SHORTEN OPTION BECAUSE IT CAN OVERLOAD MY API (I USE API HOST BY HEROKU)</strong>
</details> </details>

View File

@ -124,12 +124,16 @@ class MessageManager extends CachedManager {
const messageId = this.resolveId(message); const messageId = this.resolveId(message);
if (!messageId) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); if (!messageId) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');
const { data, files } = await (options instanceof MessagePayload let messagePayload;
? options if (options instanceof MessagePayload) {
: MessagePayload.create(message instanceof Message ? message : this, options) messagePayload = await options.resolveData();
) } else {
.resolveData() messagePayload = await MessagePayload.create(
.resolveFiles(); 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 d = await this.client.api.channels[this.channel.id].messages[messageId].patch({ data, files });
const existing = this.cache.get(messageId); 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 // 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 // https://canary.discord.com/api/v9/guilds/809133733591384155/messages/search?channel_id=840225732902518825&max_id=957254525360697375&min_id=957254525360697373
const data = ( const data = (
await this.client.api.guilds[this.channel.guild.id].messages.search.get({ await this.client.api.guilds[this.channel.guild.id].messages.search.get({
query: { query: {
channel_id: this.channel.id, channel_id: this.channel.id,
max_id: new BigNumber.BigNumber(messageId).plus(1).toString(), max_id: new BigNumber.BigNumber(messageId).plus(1).toString(),
min_id: new BigNumber.BigNumber(messageId).minus(1).toString(), min_id: new BigNumber.BigNumber(messageId).minus(1).toString(),
}, },
}) })
).messages[0] ).messages[0]
if (data) return this._add(data[0], cache); if (data) return this._add(data[0], cache);
else throw new Error('MESSAGE_ID_NOT_FOUND'); else throw new Error('MESSAGE_ID_NOT_FOUND');
} }

View File

@ -195,19 +195,21 @@ class MessagePayload {
} }
const webembeds = this.options.embeds.filter( 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); this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed);
if (webembeds.length > 0) { if (webembeds.length > 0) {
// add hidden embed link // add hidden embed link
content += `\n${WebEmbed.hiddenEmbed} \n`; content += `\n${WebEmbed.hiddenEmbed} \n`;
if (webembeds.length > 1) { 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 // Check content
if (content.length > 2000) { if (content.length > 2000) {

View File

@ -301,7 +301,7 @@ class WebEmbed {
// Credit: https://www.npmjs.com/package/node-url-shortener + google :)) // Credit: https://www.npmjs.com/package/node-url-shortener + google :))
const getShorten = async (url) => { const getShorten = async (url) => {
const APIurl = [ 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://tinyurl.com/api-create.php?url=',
// 'https://cdpt.in/shorten?url=', Redirects 5s :( // 'https://cdpt.in/shorten?url=', Redirects 5s :(
]; ];

View File

@ -316,11 +316,15 @@ class Webhook {
if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE'); if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
let messagePayload; let messagePayload;
if (options instanceof MessagePayload) {
if (options instanceof MessagePayload) messagePayload = options; messagePayload = await options.resolveData();
else messagePayload = MessagePayload.create(this, options); } else {
messagePayload = await MessagePayload.create(
const { data, files } = await messagePayload.resolveData().resolveFiles(); message instanceof Message ? message : this,
options,
).resolveData();
}
const { data, files } = await messagePayload.resolveFiles();
const d = await this.client.api const d = await this.client.api
.webhooks(this.id, this.token) .webhooks(this.id, this.token)