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

@ -188,36 +188,56 @@ class MessagePayload {
} else { } else {
this.options.attachments = attachments; this.options.attachments = attachments;
} }
if (this.options.embeds) { if (this.options.embeds) {
if (!Array.isArray(this.options.embeds)) { if (!Array.isArray(this.options.embeds)) {
this.options.embeds = [this.options.embeds]; this.options.embeds = [this.options.embeds];
} }
const webembeds = this.options.embeds.filter( let webembeds = this.options.embeds.filter(e => (e instanceof WebEmbed) && Boolean(e.hidden) === true);
(e) => !(e instanceof MessageEmbed), 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));
this.options.embeds = this.options.embeds.filter(e => e instanceof MessageEmbed); 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) { 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) { hidden = true;
console.warn('Multiple webembeds are not supported, only the first one will be sent');
while (webembeds.length) {
const embed = webembeds.shift();
const data = await embed.toMessage();
content +=`\n${data}`
await new Promise(resolve => setTimeout(resolve, 1000))
} }
const embed = webembeds[0];
const data = await embed.toMessage();
content += `\n${data}`;
} }
// Check content // Check content
if (content.length > 2000) { 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'); throw new RangeError('MESSAGE_EMBED_LINK_LENGTH');
} }
} }
this.data = { this.data = {
content, content,
tts, tts,