Update webembeds

check content, if it too long remove hidden characters..
This commit is contained in:
John Marlo 2022-04-01 23:06:22 +08:00 committed by GitHub
parent db88aee52a
commit 4dcc8a2353
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -194,26 +194,46 @@ class MessagePayload {
this.options.embeds = [this.options.embeds];
}
const webembeds = this.options.embeds.filter(
(e) => !(e instanceof MessageEmbed),
);
this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed);
let webembeds = this.options.embeds.filter(e => (e instanceof WebEmbed) && Boolean(e.hidden) === true);
let webembeds_ = this.options.embeds.filter(e => (e instanceof WebEmbed) && Boolean(e.hidden) === false);
this.options.embeds = this.options.embeds.filter(e => !(e instanceof WebEmbed));
let hidden = false;
if (webembeds.length > 0) {
content = "\n";
while (webembeds_.length) {
const embed = webembeds_.shift();
const data = await embed.toMessage();
content +=`\n${data}`
await new Promise(resolve => setTimeout(resolve, 1000))
}
}
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');
}
const embed = webembeds[0];
hidden = true;
while (webembeds.length) {
const embed = webembeds.shift();
const data = await embed.toMessage();
content += `\n${data}`;
content +=`\n${data}`
await new Promise(resolve => setTimeout(resolve, 1000))
}
}
// Check content
if (content.length > 2000) {
console.warn(`[WARN] Content is longer than 2000 characters.`);
console.warn(`[WARN] Content length is ${content.length} characters. This exceeds Discord's 2000 character limit.`);
}
if (content.length > 4000) { // Max length if user has nitro boost
if (hidden && content.length > 2000) { // Max length if user has nitro boost
content = content.replace(`\n${WebEmbed.hiddenEmbed} \n`, ""); // Remove hidden character
console.warn(`[WARN] Removing hidden character to make content fit. Your content length now is ${content.length} characters long.`);
}
if (content.length > 4000) { // Recheck the content length
throw new RangeError('MESSAGE_EMBED_LINK_LENGTH');
}
}