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_GUILD to 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) or bulkEditGuildCommands once after ready.
  • 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 REST

My 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.