Deferring a message saying headers wrong

.
3 Replies
d.js toolkit
d.js toolkit5d ago
- What's your exact discord.js npm list discord.js and node node -v version? - Not a discord.js issue? Check out #other-js-ts. - Consider reading #how-to-get-help to improve your question! - Explain what exactly your issue is. - Post the full error stack trace, not just the top part! - Show your code! - Issue solved? Press the button! - Marked as resolved by staff
Taco
TacoOP5d ago
export async function handleLeaderboardCommand(data, heroCache, res) {
try {
const chosenName = data.options[0].value;
const platform = data.options.find(opt => opt.name === 'platform')?.value || 'pc';
const lengthOption = data.options.find(opt => opt.name === "length")?.value || 10;
const lengthLimit = Math.max(1, Math.min(500, parseInt(lengthOption, 10)));

const hero = heroCache.find(h => h.name.toLowerCase() === chosenName.toLowerCase());
res.send({
type: InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE,
});
const leaderboardData = await fetchLeaderboard(hero, platform);
// const itemData = await fetchItems();

if (!leaderboardData) {
return res.send({
type: InteractionResponseType.DEFERRED_UPDATE_MESSAGE,
data: { content: "No leaderboard data available.", flags: 64 },
});
}

const limitedPlayers = leaderboardData.players.slice(0, lengthLimit);

const lbEmbeds = limitedPlayers.map((player, index) => {
const embed = createLeaderboardEmbed(player, hero, formatPlatforms(platform), index + 1, "itemData");
embed.setFooter({ text: `UID: ${player.player_uid} | Page ${index + 1} of ${limitedPlayers.length}` });
return embed;
});

const lastPage = lbEmbeds.length - 1;

return res.send({
type: InteractionResponseType.DEFERRED_UPDATE_MESSAGE,
data: {
embeds: [lbEmbeds[0]],
components: getPaginationButtons(chosenName, 0, lastPage, "leaderboard", lengthLimit, formatPlatforms(platform)),
},
});
} catch (error) {
console.error("Error handling leaderboard command:", error);
return res.send({
type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
data: { content: "An error occurred while fetching leaderboard data.", flags: 64 },
});
}
}
export async function handleLeaderboardCommand(data, heroCache, res) {
try {
const chosenName = data.options[0].value;
const platform = data.options.find(opt => opt.name === 'platform')?.value || 'pc';
const lengthOption = data.options.find(opt => opt.name === "length")?.value || 10;
const lengthLimit = Math.max(1, Math.min(500, parseInt(lengthOption, 10)));

const hero = heroCache.find(h => h.name.toLowerCase() === chosenName.toLowerCase());
res.send({
type: InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE,
});
const leaderboardData = await fetchLeaderboard(hero, platform);
// const itemData = await fetchItems();

if (!leaderboardData) {
return res.send({
type: InteractionResponseType.DEFERRED_UPDATE_MESSAGE,
data: { content: "No leaderboard data available.", flags: 64 },
});
}

const limitedPlayers = leaderboardData.players.slice(0, lengthLimit);

const lbEmbeds = limitedPlayers.map((player, index) => {
const embed = createLeaderboardEmbed(player, hero, formatPlatforms(platform), index + 1, "itemData");
embed.setFooter({ text: `UID: ${player.player_uid} | Page ${index + 1} of ${limitedPlayers.length}` });
return embed;
});

const lastPage = lbEmbeds.length - 1;

return res.send({
type: InteractionResponseType.DEFERRED_UPDATE_MESSAGE,
data: {
embeds: [lbEmbeds[0]],
components: getPaginationButtons(chosenName, 0, lastPage, "leaderboard", lengthLimit, formatPlatforms(platform)),
},
});
} catch (error) {
console.error("Error handling leaderboard command:", error);
return res.send({
type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
data: { content: "An error occurred while fetching leaderboard data.", flags: 64 },
});
}
}
Error handling leaderboard command: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client [1] at ServerResponse.setHeader (node:_http_outgoing:699:11) [1] at ServerResponse.header (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:795:10) [1] at ServerResponse.send (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:175:12) [1] at ServerResponse.json (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:279:15) [1] at ServerResponse.send (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:163:21) [1] at handleLeaderboardCommand (file:///C:/Users/Vader/MarvelRivalsBot/marvelcommands/leaderboard.js:38:20) [1] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) { [1] code: 'ERR_HTTP_HEADERS_SENT' [1] } [1] node:_http_outgoing:699 [1] throw new ERR_HTTP_HEADERS_SENT('set'); [1] ^ [1] [1] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client [1] at ServerResponse.setHeader (node:_http_outgoing:699:11) [1] at ServerResponse.header (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:795:10) [1] at ServerResponse.send (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:175:12) [1] at ServerResponse.json (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:279:15) [1] at ServerResponse.send (C:\Users\Vader\MarvelRivalsBot\node_modules\express\lib\response.js:163:21) [1] at handleLeaderboardCommand (file:///C:/Users/Vader/MarvelRivalsBot/marvelcommands/leaderboard.js:47:20) [1] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) { [1] code: 'ERR_HTTP_HEADERS_SENT' [1] }
duck
duck5d ago
it doesn't looks as though you're using the library discord.js, but I imagine the issue lies earlier in your request handling that being said, please take this elsewhere ( #other-js-ts / #useful-servers )

Did you find this page helpful?