Pular para o conteúdo principal

🤖 Primeiro Bot

Neste guia você vai criar seu primeiro bot com o fluxo novo do Nexo.


🚀 Fluxo recomendado

  1. Crie o projeto:
npx nexo create meu-bot
  1. Entre na pasta:
cd meu-bot
  1. Inicie o bot em desenvolvimento:
npm run dev

📁 Estrutura criada

O template já vem com uma base pronta para começar:

📂 meu-bot/
┣ 📂 src/
┃ ┣ 📂 commands/
┃ ┃ ┗ 📂 utils/
┃ ┃ ┗ 📜 ping.ts
┃ ┣ 📂 events/
┃ ┃ ┗ 📜 ready.ts
┃ ┗ 📜 index.ts
┗ 📜 package.json
Estrutura esperada

O template cria uma estrutura inicial com o ponto de entrada em src/index.ts, um comando de exemplo em src/commands/utils/ping.ts e um evento de inicialização em src/events/ready.ts.


Criação Manual (Avançado)

Se você quiser montar a base sem o gerador, siga o fluxo antigo abaixo.

🚀 Como funciona

  • 🧠 Você cria arquivos em pastas específicas.
  • 📁 Nexo carrega automaticamente comandos e eventos dos caminhos definidos em paths.commands e paths.events.
  • ⚡ O Bot inicia com Bootstrap.init().
  • ✅ Não precisa de registro manual de comandos ou eventos.

📁 Estrutura mínima (exemplo)

Exemplo de estrutura de pastas:

📂 src/
┣ 📂 commands/
┃ ┗ 📂 util/ (categoria)
┃ ┗ 📜 ping.ts (seu primeiro comando)
┣ 📂 events/
┃ ┗ 📜 ready.ts (evento de inicialização)
┗ 📜 index.ts (arquivo principal)
Estrutura esperada

Este é apenas um exemplo usando src/commands e src/events.

🚀 Inicializando o bot

Crie seu arquivo principal (por exemplo, src/index.ts) com a inicialização do bot usando Bootstrap.init():

const { Bootstrap } = require('nexocord');
const { GatewayIntentBits } = require('discord.js');

async function main() {
await Bootstrap.init({
token: process.env.TOKEN,
intents: [GatewayIntentBits.Guilds],
paths: {
commands: 'src/commands', // exemplo
events: 'src/events', // exemplo
},
});
}

main();
O que acontece aqui
  • token: Seu token de bot do Discord (mais abaixo como obter).
  • intents: Permissões que o bot precisa. Aqui usamos apenas Guilds (o mínimo para começar).
  • paths: Diretórios onde o Nexo encontrará comandos e eventos para carregamento automático.
  • await: Bootstrap.init() é assíncrono e inicializa o bot.

🔘 Primeiro comando

Crie o arquivo do comando no diretório definido em paths.commands (exemplo: src/commands/util/ping.ts):

const { createCommand, CommandType } = require('nexocord');

module.exports = createCommand({
name: 'ping',
description: 'Responde com pong!',
type: CommandType.ChatInput,
async run(interaction) {
await interaction.reply({ content: 'Pong! 🏓' });
},
});
informação
  • export default: Nexo busca exportações padrão em cada arquivo.
  • createCommand(...): Função que registra um comando.
  • CommandType.ChatInput: Comando de slash (começando com /).
  • interaction: Objeto da interação do Discord (contém dados do usuário, servidor, etc).

✅ Evento de inicialização

Crie o arquivo do evento no diretório definido em paths.events (exemplo: src/events/ready.ts):

const { createEvent, EventType } = require('nexocord');

module.exports = createEvent({
name: 'ready',
once: true,
run(client) {
console.log(`✅ Bot ${client.user?.username} está online!`);
},
});
informação
  • EventType.Discord: Evento nativo do Discord.js (em vez de um evento customizado).
  • once: true: Dispara apenas uma vez quando o bot inicia.
    • Sem once, dispararia toda vez que o evento ocorrer.
  • name: 'ready': Nome do evento Discord.js (corresponde a client.on('ready', ...))
  • client: Cliente discord.js com dados do bot (usuário, guilds, etc).

▶️ Executando o bot

Rode o bot em modo desenvolvimento:

npm run dev

Ou use o CLI do Nexo diretamente:

# npm
npx nexo dev

# bun
bunx nexo dev

🎯 Resultado esperado

Quando tudo funcionar:

  1. ✅ Bot aparece online no Discord
  2. ✅ Console mostra: ✅ Bot [seu-bot-nome] está online!
  3. ✅ Comando /ping aparece na lista de comandos
  4. ✅ Digitar /ping e pressionar Enter → responde Pong! 🏓

Pronto! Seu primeiro bot está rodando! 🎉


💡 Dicas rápidas

🔐 Token seguro

Para não expor seu token no código:

  1. Crie um arquivo .env na raiz do projeto:
DISCORD_TOKEN=MTA1Nzk4OTU5NzE2NzY0Nzc4Nw.xxx
  1. Nexo carrega automaticamente — você acessa via process.env.DISCORD_TOKEN
Importante
  • Nunca commite .env no Git — adicione à .gitignore
  • Seu token é como uma senha — qualquer pessoa pode usar para controlar seu bot
  • Se expuser o token, revogue-o imediatamente no Dashboard do Discord

⚠️ Erros comuns

ErroSolução
Error: no token providedVerifique se .env existe e tem DISCORD_TOKEN com valor correto
Comando /ping não apareceReinicie o bot ou execute / novamente para sincronizar comandos
Error: GUILDS intent is requiredAdicione GatewayIntentBits.Guilds aos intents
Bot não conectaVerifique token, internet e se o token não foi revogado

📚 Próximos passos: