⚙️ Discord Bot Fejlesztés JavaScript-tel

Teljes útmutató Discord botok készítéséhez discord.js-vel, Node.js-sel és .env titkos tárolással

🚀 1. Kezdeti Beállítások

Előbb meg kell telepítened a szükséges szoftverek és beszereznünk a token-t.

A. Node.js Telepítése

  1. Menj a nodejs.org oldalra
  2. Töltsd le az LTS (Long Term Support) verziót
  3. Telepítsd a Node.js-t az alapértelmezett beállításokkal
  4. Ellenőrizd a telepítést: node --version
  5. Ellenőrizd az npm-et: npm --version

B. Bot Token Beszerzése

  1. Menj a Discord Developer Portalra
  2. Kattints "New Application" gombra
  3. Add meg a bot nevét (pl. "MyAwesomeJSBot")
  4. A bal oldali menüben válaszd a "Bot" opciót
  5. Kattints "Add Bot" gombra
  6. A TOKEN alatt kattints "Copy" gombra - NE OSZD MEG!

⚠️ FONTOS: A token a bot jelszava! Ha nyilvánosságra kerül, bárki használhatja a botod. Ha véletlenül megosztottad, azonnal hozz létre új tokent a Developer Portalon!

📦 2. Projekt Beállítása

A. Mappa Létrehozása

mkdir discord-bot
cd discord-bot

B. NPM Projekt Inicializálása

npm init -y

C. Szükséges Könyvtárak Telepítése

npm install discord.js dotenv

D. Mappa Struktúra

discord-bot/
├── bot.js          ← A bot fő fájlja
├── .env             ← Titkos token (NE töltsd fel!)
├── .gitignore       ← Git figyelmen kívül hagyandó fájlok
├── package.json     ← Projekt információ és függőségek
└── package-lock.json ← Lezárt verzió információ

⚙️ 3. .env Fájl Létrehozása

A .env fájl tárja el a titkos adatokat. Soha ne töltsd fel a GitHubra!

💡 Tipp: A .env fájlban olyan információkat tartunk, amit nem szeretnénk nyilvánosságra hozni (bottoken, API kulcsok, stb.)

Hozd létre a .env fájlt a projekt mappájában:

DISCORD_TOKEN=your_token_here
DISCORD_CLIENT_ID=your_client_id_here

Például:

DISCORD_TOKEN=MzI4MTk5MjE4OTI4ODMyMDA=.DXvVLw.d123f456g789h012i345j678k910
DISCORD_CLIENT_ID=1234567890

📝 4. .gitignore Fájl

Ez a fájl megmondja a Git-nek, hogy melyik fájlokat ignorálja fel mikor.

.env
node_modules/
.DS_Store
.vscode/

📋 5. package.json Módosítása

A package.json fájlban adj hozzá egy start script-et:

Az eredeti package.json így néz ki:

{
  "name": "discord-bot",
  "version": "1.0.0",
  "main": "bot.js",
  "scripts": {
    "start": "node bot.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "discord.js": "^14.0.0",
    "dotenv": "^16.0.0"
  }
}

🤖 6. Az Első Bot Kód

Most készítsd el a bot.js fájlt. Ez lesz a bot szíve!

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

// Bot kliens létrehozása intents-tel
const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMembers,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent
    ]
});

// Bejelentkezés
client.on('ready', () => {
    console.log(`✅ Bot bejelentkezve: ${client.user.tag}`);
    // Bot státusza beállítása
    client.user.setActivity('Discord Botok', { type: 'PLAYING' });
});

// Üzenet küldésének kezelése
client.on('messageCreate', async (message) => {
    // Ignorálj bot üzeneteket
    if (message.author.bot) return;

    // !ping parancs
    if (message.content === '!ping') {
        await message.reply(`🏓 Pong! Latency: ${client.ws.ping}ms`);
    }

    // !hello parancs
    if (message.content === '!hello') {
        await message.reply(`👋 Szia ${message.author.username}!`);
    }

    // !help parancs
    if (message.content === '!help') {
        const embed = new EmbedBuilder()
            .setColor(0x00d4ff)
            .setTitle('📚 Bot Parancsok')
            .setDescription('Az összes elérhető parancs:')
            .addFields(
                { name: '!ping', value: 'Megmutatja a bot latencyét' },
                { name: '!hello', value: 'A bot üdvözli' },
                { name: '!help', value: 'Ez a parancs (mutatja az összes parancsot)' }
            );
        await message.reply({ embeds: [embed] });
    }
});

// Új tag csatlakozása
client.on('guildMemberAdd', (member) => {
    console.log(`✅ ${member.user.tag} csatlakozott a szerverhez!`);
    // Üdvözlő üzenet keresése és küldése
    const channel = member.guild.channels.cache.find(ch => ch.name === 'general');
    if (channel) {
        channel.send(`🎉 Üdvözlünk ${member}!`);
    }
});

// Tag elhagyása
client.on('guildMemberRemove', (member) => {
    console.log(`❌ ${member.user.tag} elhagyta a szervert!`);
});

// Hiba kezelése
client.on('error', error => {
    console.error('Bot hiba:', error);
});

// Token beolvasása és belépés
const token = process.env.DISCORD_TOKEN;
if (token) {
    client.login(token);
} else {
    console.error('❌ HIBA: DISCORD_TOKEN nem található a .env fájlban!');
}

🚀 7. A Bot Elindítása

Parancssor (Terminal/CMD)

npm start

Vagy közvetlenül:

node bot.js

Sikeres indítás jelei:

  • Megjelenik: ✅ Bot bejelentkezve: YourBotName#0000
  • A bot Discord szervereden Online státusz mutat
  • Beírva !ping parancsot választ ad

🔧 8. Közös Problémák és Megoldások

❌ "Cannot find module 'discord.js'"

Megoldás: A discord.js nincs telepítve. Futtasd:

npm install discord.js

❌ "DISCORD_TOKEN nem található"

Megoldás: A .env fájl nincs a jó helyen vagy nincs feltöltve a token. Ellenőrizd:

  • A .env fájl ugyanabban a mappában van-e mint bot.js
  • A .env fájl tartalma helyes-e: DISCORD_TOKEN=token_itt

❌ "Intents error"

Megoldás: Az intents-et bekapcsolni kell a Developer Portalon!

  1. Discord Developer Portal → Applications → Your Bot
  2. Bot szekció → Scroll down → Intents
  3. Bekapcsold a szükséges intents-eket (Message Content Intent, Guild Members Intent)

❌ "bot.js:1 - SyntaxError"

Megoldás: Szintaxis hiba van a bot.js fájlban. Ellenőrizd:

  • Mindenütt zárójelek vannak-e
  • Nincs-e kimaradott pontosvessző
  • A kódszerkesztőd jelzi-e a hibákat (piros hullámos vonalak)