So I am trying to get the lyrics of a song (which works), but because of the 4096 characters limit on discord I have to cut it into different pieces. However, when I try to send all of the messages it gives me the error: DiscordAPIError[50035]: Invalid Form Body
This is the code that I am using:
let title = interaction.options.getString('song');
await interaction.deferReply();
if(!title){
if(!queue.playing()){
return await interaction.followUp(
'Please provide a valid song and try again!'
)
}
title = queue.nowPlaying();
}
function substring(length, value){
const replaced = value.replace('/\n/g', '--');
const regex = `.{1,${length}}`;
const lines = replaced
.match(new RegExp(regex, "g"))
.map(line => line.replace(/--/g, '\n'));
return lines;
}
const songTitle = title; // The name of the song
const url = await new URL('https://some-random-api.ml/lyrics'); // The API
url.searchParams.append('title', songTitle);
console.log("url: ", url);
try{
const { data } = await axios.get(url.href);
const embeds = substring(500, data.lyrics).map((value, index) => {
const isFirst = index === 0; // add title and thumbnail to first embed only
return new EmbedBuilder({
title: isFirst ? `${data.title} - ${data.author}`: null,
// thumbnail: isFirst ? `${interaction.user.displayAvatarURL}`: null,
description: value,
})
});
return await interaction.followUp({embeds}); // Something is going wrong here I think
} catch(err){
console.log(err)
interaction.followUp({content: 'Sorry but I am not able to find lyrics for that song title',
})
}
It also gives me this error:
24.09 22:43:07 [Bot] code: 50035,
24.09 22:43:07 [Bot] errors: { embeds: [Object] },
24.09 22:43:07 [Bot] message: 'Invalid Form Body'
24.09 22:43:07 [Bot] },
I tried changing the object to be like
return await interaction.followUp({EmbedBuilder: embeds})
But that would just say I cannot send an empty message. Any help is appreciated thanks!
At the top of your code, you have deferred the reply:
await interaction.deferReply();
To reply to a deferred interaction, you should use the interaction#editReply
method instead.