FAQ
Node 18 or newer.
Which Node version do I need?
Node 18 or newer.
Do I need TypeScript?
No, Athena runs fine from plain JavaScript, but TypeScript gives you autocomplete and catches mistakes early, which makes learning much faster. The examples in this wiki are TypeScript.
My slash command does not show up
- While developing, set
DEV_GUILDto a test server ID so commands deploy there instantly. Global commands can take up to an hour to appear. - Make sure you call
deployCommands()(framework) orbulkEditGuildCommandsonce afterready. - Re-type
/in Discord to refresh the list.
"Unknown interaction" (error code 10062)
You took longer than three seconds to respond. Call interaction.defer() first if the work is slow, then editOriginalMessage / createFollowup.
"Interaction already acknowledged" (40060)
You responded twice. Respond once. Use deferUpdate / editParent for component interactions.
Message content is empty
Enable the MessageContent privileged intent on your application's portal page and request it in intents. See Intents.
How do I send an embed?
await client.createMessage(channelID, { embeds: [{ title: 'Hi', description: 'There' }] });How do I make a reply ephemeral (only the user sees it)?
await interaction.createMessage({ content: 'Only you see this', flags: MessageFlags.Ephemeral });How do I get a member that is not in cache?
const member = await guild.fetchMember(userID); // cache, then remote store if configured, then RESTMy bot uses too much memory
See Caching and memory and, at cluster scale, Scaling to millions.
Does Athena do voice (audio playback)?
Not built in. Use a dedicated voice library alongside Athena.
Where do types come from?
discord-api-types/v10, re-exported from Athena as Constants. You rarely import that package directly.
Is it safe to upgrade?
Athena follows semantic versioning; breaking changes are gated behind major versions. Check the repository CHANGELOG before upgrading a major.