🐍 Discord Bot Fejlesztés Python-nal

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

🚀 1. Kezdeti Beállítások

Előbb meg kell szerezned a szükséges eszközöket és információkat.

A. Python Telepítése

  1. Menj a python.org oldalra
  2. Töltsd le Python 3.8+ verziót
  3. Telepítéskor jelöld be: "Add Python to PATH"
  4. Ellenőrizd a telepítést: python --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. "MyAwesomeBot")
  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. Könyvtárak Telepítése

pip install discord.py python-dotenv

C. Mappa Struktúra

discord-bot/
├── bot.py          ← A bot fő fájlja
├── .env             ← Titkos token (NE töltsd fel!)
├── .gitignore       ← Git figyelmen kívül hagyandó fájlok
└── requirements.txt ← Könyvtárak listája

⚙️ 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

Például:

DISCORD_TOKEN=MzI4MTk5MjE4OTI4ODMyMDA=.DXvVLw.d123f456g789h012i345j678k910

📝 4. .gitignore Fájl

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

.env
__pycache__/
*.pyc
.DS_Store
venv/
.vscode/

📋 5. requirements.txt Fájl

Ez a fájl tartalmazza az összes szükséges könyvtárat és verzióját:

discord.py==2.3.2
python-dotenv==1.0.0

Telepítés a requirements.txt-ből:

pip install -r requirements.txt

🤖 6. Az Első Bot Kód

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

import discord
from discord.ext import commands
from dotenv import load_dotenv
import os

# Betöltjük a .env fájlunkat
load_dotenv()

# Discord intents - ezek szükségesek a Discord API-hoz
intents = discord.Intents.default()
intents.message_content = True  # Ahhoz hogy el tudjuk olvasni az üzeneteket
intents.members = True  # Tagság kezeléséhez

# A bot objektumunk létrehozása
# command_prefix = a karakterek, amivel a parancsokat indítjuk (pl. !parancs)
bot = commands.Bot(command_prefix='!', intents=intents)

# Ez a függvény fut le amikor a bot online megy
@bot.event
async def on_ready():
    print(f'{bot.user} bot online van!')
    # Opcionális: szétázás beállítása
    await bot.change_presence(activity=discord.Game(name="!help"))

# Ez a függvény fut le amikor valaki beír egy üzenetet
@bot.event
async def on_message(message):
    # Ha az üzenet maga a bottól jön, ignorálj
    if message.author == bot.user:
        return
    
    # Ha az üzenet !ping-el kezdődik
    if message.content == '!ping':
        # Elküldjük a választ
        await message.channel.send(f'Pong! {round(bot.latency * 1000)}ms')
    
    # Fontos! Ez szükséges ahhoz hogy parancsok működjenek
    await bot.process_commands(message)

# Egyszerű parancs
@bot.command(name='hello')
async def hello(ctx):
    """Üdvözlő parancs"""
    await ctx.send(f'Szia {ctx.author.name}!')

@bot.command(name='ping')
async def ping(ctx):
    """Megmondja a bot latencyét"""
    latency = round(bot.latency * 1000)
    await ctx.send(f'Pong! Latency: {latency}ms')

# Új tag csatlakozása
@bot.event
async def on_member_join(member):
    print(f'{member.name} csatlakozott a szerverhez!')
    # Üdvözlő üzenet küldése
    channel = discord.utils.get(member.guild.channels, name='general')
    if channel:
        await channel.send(f'Üdvözlünk {member.mention}!')

# Tag elhagyása
@bot.event
async def on_member_remove(member):
    print(f'{member.name} elhagyta a szervert!')

# A token beolvasása a .env fájlból és a bot indítása
token = os.getenv('DISCORD_TOKEN')
if token:
    bot.run(token)
else:
    print('HIBA: DISCORD_TOKEN nem található a .env fájlban!')

🚀 7. A Bot Elindítása

Parancssor (Terminal/CMD)

python bot.py

Sikeres indítás jelei:

  • Megjelenik: YourBotName bot online van!
  • 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

❌ "ModuleNotFoundError: No module named 'discord'"

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

pip install discord.py

❌ "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.py
  • A .env fájl tartalma: 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, Member Intent)