Torna al blog
tutorial•7 min di lettura

AI Discord Bot Maker: crea un bot con comandi slash (2026)

AI discord bot maker: guida per creare un bot Discord.js v14 con comandi slash e moderazione, intents, registrazione dei comandi e deploy.

Marco N.
31 ottobre 2026
AI Discord Bot Maker: crea un bot con comandi slash (2026)

AI Discord Bot Maker: crea un bot con comandi slash (2026)

Un bot Discord è un programma che accede con un token e reagisce agli eventi: un utente esegue un comando slash, arriva un messaggio, un nuovo membro entra nel server. Un AI discord bot maker può scrivere il codice di partenza, ma conviene capire le parti del progetto, così puoi verificare il risultato e correggere ciò che non funziona. Questa guida costruisce un piccolo bot con Discord.js v14: un comando /ping, un comando /kick per i moderatori e uno script che registra i comandi su Discord.

Cosa serve prima di iniziare

  1. Node.js 18 o successivo. Controlla la versione con node -v.
  2. Un account Discord e un server di prova di cui sei proprietario.
  3. Un editor di codice e un terminale.
  4. Una conoscenza di base di JavaScript. Non serve essere esperti.

Passo 1: crea l'applicazione e il bot

  1. Apri il Discord Developer Portal e crea una nuova applicazione.
  2. Nella sezione Bot clicca Reset Token e copia il token una sola volta. Salvalo in un file .env. Non condividerlo mai in chat, in uno screenshot o in un repository pubblico. Se viene esposto, reimpostalo subito.
  3. Attiva gli intents privilegiati solo se il codice li usa. Server Members Intent serve per eventi come l'ingresso di un membro. Message Content Intent serve per leggere il testo dei messaggi normali. Gli esempi di questa guida usano comandi slash, quindi nessuno dei due è obbligatorio.
  4. Apri OAuth2, poi URL Generator. Seleziona gli scope bot e applications.commands, scegli i permessi necessari (per esempio Kick Members) e apri il link generato per invitare il bot nel server di prova.

Gli intents indicano a Discord quali eventi vuoi ricevere. Richiedine solo quelli che usi: il bot resta più leggero e gestisce meno dati.

Passo 2: prepara il progetto

mkdir discord-mod-bot
cd discord-mod-bot
npm init -y
npm install discord.js dotenv

Crea un file .env nella cartella del progetto:

DISCORD_TOKEN=il-tuo-token-del-bot
CLIENT_ID=il-tuo-application-id
GUILD_ID=il-tuo-server-di-prova-id

Aggiungi .env e node_modules a un file .gitignore prima del primo commit. Il progetto ha tre file:

discord-mod-bot/
  .env
  commands.js
  deploy-commands.js
  index.js

Passo 3: definisci i comandi slash

commands.js descrive ogni comando. discord.js converte i builder nel JSON che Discord si aspetta:

const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');

const commands = [
  new SlashCommandBuilder()
    .setName('ping')
    .setDescription('Verifica che il bot sia online'),

  new SlashCommandBuilder()
    .setName('kick')
    .setDescription('Espelle un membro dal server')
    .addUserOption((option) =>
      option.setName('user').setDescription('Membro da espellere').setRequired(true))
    .addStringOption((option) =>
      option.setName('reason').setDescription('Motivo dell\'espulsione'))
    .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers)
    .setDMPermission(false),
].map((command) => command.toJSON());

module.exports = commands;

setDefaultMemberPermissions nasconde il comando a chi non ha il permesso, ma non sostituisce il controllo nel codice, che aggiungerai al Passo 5.

Passo 4: registra i comandi

Crea deploy-commands.js. Questo script va eseguito una volta, o ogni volta che modifichi la definizione di un comando:

require('dotenv').config();
const { REST, Routes } = require('discord.js');
const commands = require('./commands');

const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_TOKEN);

async function deploy() {
  try {
    await rest.put(
      Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
      { body: commands }
    );
    console.log('Registrati ' + commands.length + ' comandi di server.');
  } catch (error) {
    console.error('Registrazione non riuscita:', error.message);
  }
}

deploy();

I comandi di server (guild), registrati con applicationGuildCommands, si aggiornano quasi subito e sono ideali per i test. I comandi globali, registrati con applicationCommands, possono impiegare fino a un'ora per comparire: usali solo quando il bot è pronto per ogni server.

Passo 5: scrivi la logica del bot e della moderazione

Crea index.js. Il token arriva dall'ambiente e non viene mai scritto nel codice:

require('dotenv').config();
const {
  Client,
  Events,
  GatewayIntentBits,
  PermissionFlagsBits,
} = require('discord.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once(Events.ClientReady, (readyClient) => {
  console.log('Connesso come ' + readyClient.user.tag);
});

client.on(Events.InteractionCreate, async (interaction) => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'ping') {
    await interaction.reply({ content: 'Pong!', ephemeral: true });
    return;
  }

  if (interaction.commandName === 'kick') {
    if (!interaction.memberPermissions?.has(PermissionFlagsBits.KickMembers)) {
      await interaction.reply({ content: 'Ti serve il permesso Kick Members.', ephemeral: true });
      return;
    }

    const member = interaction.options.getMember('user');
    const reason = interaction.options.getString('reason') ?? 'Nessun motivo indicato';

    if (!member) {
      await interaction.reply({ content: 'Questo utente non è nel server.', ephemeral: true });
      return;
    }
    if (!member.kickable) {
      await interaction.reply({ content: 'Non posso espellere questo membro. Controlla la posizione del mio ruolo.', ephemeral: true });
      return;
    }

    await member.kick(reason);
    await interaction.reply('Espulso ' + member.user.tag + '. Motivo: ' + reason);
  }
});

client.login(process.env.DISCORD_TOKEN);

Due controlli proteggono il comando. Il controllo sul permesso blocca chi non ha Kick Members, anche se trova il comando. Il controllo kickable evita errori quando il ruolo del bot è troppo basso.

Passo 6: avvia e prova

node deploy-commands.js
node index.js

Nel server di prova scrivi /ping: dovresti vedere "Pong!" visibile solo a te. Poi prova /kick con un secondo account di prova, non con un membro reale. Controlla il terminale mentre testi, per vedere eventuali errori.

Passo 7: tieni il bot online

Un bot funziona solo finché il suo processo è attivo. Il PC va bene per i test, ma per un server reale serve un host sempre acceso, come un piccolo VPS o un hosting Node.js gestito. Su un VPS puoi usare un process manager:

npm ci --omit=dev
npm install -g pm2
pm2 start index.js --name discord-mod-bot
pm2 logs discord-mod-bot

Imposta DISCORD_TOKEN, CLIENT_ID e GUILD_ID sull'host. Non caricare il file .env su un repository condiviso.

Errori comuni

  • Usare il Client Secret al posto del token del bot.
  • Dimenticare lo scope applications.commands. I comandi non compaiono mai.
  • Aspettarsi che i comandi globali compaiano subito. Possono richiedere fino a un'ora.
  • Attivare un intent nel codice senza attivarlo nel Developer Portal. Il login fallisce con un errore di intents non consentiti.
  • Mettere il ruolo del bot sotto il ruolo del membro da espellere. Discord blocca l'operazione.
  • Caricare .env su un repository.

Usare bene un generatore AI

Sii preciso nel prompt. Per esempio:

Scrivi un bot Discord in JavaScript con Discord.js v14. Aggiungi un comando /ping e un comando /kick con un'opzione utente obbligatoria e un motivo facoltativo. Solo i membri con Kick Members possono usare /kick. Leggi il token da un file .env. Registra i comandi con uno script di deploy separato per un solo server.

Nel risultato controlla quattro cose: sintassi v14 (GatewayIntentBits, non la vecchia Intents.FLAGS), nessun token scritto nel codice, un controllo dei permessi dentro il gestore del comando e uno script di deploy separato dal bot. Se preferisci un progetto pronto da avviare con questa struttura, il generatore di bot Discord AI lo crea per te. I piani sono nella pagina prezzi: il piano Starter è gratuito, con un limite giornaliero e senza carta di credito.

Verifica e testa tutto il codice generato prima di eseguirlo su un server pubblico. Per sistemi di moderazione complessi, database o bot che gestiscono pagamenti o dati personali, fatti rivedere il progetto da uno sviluppatore.

FAQ

Mi serve sapere JavaScript per usare un AI discord bot maker?

Sì, almeno le basi. Il generatore scrive il codice, ma sei tu a installarlo, a leggere gli errori e a modificare impostazioni come intents e permessi. Un breve corso di JavaScript basta per questo progetto.

Perché i miei comandi slash non compaiono su Discord?

Controlla che l'invito includesse lo scope applications.commands, che deploy-commands.js sia terminato senza errori e che tu stia registrando i comandi di server per i test. Riavvia il client Discord se la lista sembra vecchia.

Il bot può restare online senza il mio computer?

Sì, ma non sul tuo PC. Va eseguito su un host sempre attivo, come un VPS o un hosting Node.js gestito.

Pronto a creare con l'AI?

Genera il tuo primo plugin Minecraft, bot Discord o script FiveM in 30 secondi. Gratis per iniziare.

Inizia gratis
#Discord#Discord.js#Bot development#Slash commands#Moderation