Update webembeds
check content, if it too long remove hidden characters..
This commit is contained in:
parent
db88aee52a
commit
4dcc8a2353
@ -188,36 +188,56 @@ class MessagePayload {
|
||||
} else {
|
||||
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 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');
|
||||
hidden = true;
|
||||
|
||||
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
|
||||
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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.data = {
|
||||
content,
|
||||
tts,
|
||||
|
Loading…
Reference in New Issue
Block a user