Hogyan készíts Discord botot
Ezen az oldalon
A Discord bot egy program, amely saját fiókkal lép be a Discordba, és parancsokra válaszol, moderál, játékokat futtat vagy frissítéseket posztol. Az elkészítéséhez három dolog kell: egy alkalmazás a Discord Developer Portalon, néhány sor kód, és egy hely, ahol ez a kód fut.
Ebben az útmutatóban egy működő botot építünk /ping slash paranccsal, Pythonban (discord.py) vagy JavaScriptben (discord.js) — válaszd azt a nyelvet, amelyet ismersz.
1. lépés: Hozd létre az alkalmazást és a bot tokenjét
- Nyisd meg a Developer Portalt. Menj a discord.com/developers/applications oldalra, hozz létre egy új alkalmazást, és adj neki nevet.
- Szerezd meg a tokent. A Bot oldalon kattints a Reset Token gombra, és másold ki. A Discord csak egyszer mutatja meg; ha elveszíted, állítsd vissza újra.
- Tartsd titokban a tokent. Ez a bot jelszava: akinél megvan, az irányítja a botodat. Soha ne illeszd be megosztott kódba, és ne commitold Gitbe.
2. lépés: Hívd meg a botot a szerveredre
- Nyisd meg az alkalmazásod Installation oldalát.
- A szerverekre (guilds) vonatkozó alapértelmezett telepítési beállításoknál add hozzá a
botésapplications.commandshatóköröket, valamint a bot számára szükséges jogosultságokat — ehhez az útmutatóhoz a Send Messages elég. - Nyisd meg a kapott telepítési linket, válaszd ki a szerveredet, és engedélyezd. A bot megjelenik a taglistában, offline állapotban, amíg a kódod el nem indul.
A régebbi útmutatók az OAuth2 > URL Generator menüt használják ugyanezzel a két hatókörrel; ez továbbra is működik.
3a. lépés: Írd meg a botot Pythonban (discord.py)
A discord.py 2.7-hez Python 3.8 vagy újabb kell. Telepítsd, és hozd létre a bot.py fájlt:
pip install discord.py
import os
import discord
from discord import app_commands
class Bot(discord.Client):
def __init__(self):
super().__init__(intents=discord.Intents.default())
self.tree = app_commands.CommandTree(self)
async def setup_hook(self):
await self.tree.sync()
bot = Bot()
@bot.tree.command(description="Replies with Pong!")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("Pong!")
bot.run(os.environ["DISCORD_TOKEN"])
Futtasd úgy, hogy a token egy környezeti változóban legyen, például Linuxon vagy macOS-en így: DISCORD_TOKEN=your-token python bot.py.
3b. lépés: Írd meg a botot JavaScriptben (discord.js)
A discord.js 14-hez Node.js 18 vagy újabb kell. Egy új mappában futtasd az npm install discord.js parancsot, és hozd létre az index.js fájlt:
const { Client, Events, GatewayIntentBits, REST, Routes, SlashCommandBuilder } = require('discord.js');
const commands = [new SlashCommandBuilder().setName('ping').setDescription('Replies with Pong!').toJSON()];
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, async (c) => {
await new REST().setToken(process.env.DISCORD_TOKEN).put(Routes.applicationCommands(c.user.id), { body: commands });
console.log(`Logged in as ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (interaction.isChatInputCommand() && interaction.commandName === 'ping') await interaction.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
Indítsd el ezzel: DISCORD_TOKEN=your-token node index.js. Amikor a konzolon megjelenik a Logged in, írd be a /ping parancsot a szervereden.
Tartsd a tokent a kódon kívül
- Használj környezeti változót vagy
.envfájlt, és az első commit előtt add hozzá a.envfájlt a.gitignore-hoz. - Ha a token kiszivárog, állítsd vissza azonnal a Bot oldalon. A régi token megszűnik működni, az újat pedig ott frissíted, ahol a bot fut.
- A GitHub átvizsgálja a nyilvános repókat Discord bot tokenek után, és jelenti őket a Discordnak, amely visszavonhatja őket — így egy véletlenül feltöltött token gyakran már azelőtt leáll, hogy észrevennéd.
4. lépés: Tartsd online a botodat
A botod csak addig online, amíg a kódja fut. Ha bezárod a terminált vagy kikapcsolod a gépet, offline lesz. Három lehetőséged van:
- Saját gép — ingyenes, fejlesztéshez és teszteléshez megfelel, de a bot alszik, amikor a számítógép is.
- Ingyenes csomag — a legtöbb altatja vagy korlátozza az egész hónapban futó botokat; a kompromisszumokat az ingyenes Discord bot hosting útmutatóban hasonlítjuk össze.
- Bot hosting — egy kis, folyamatosan működő szerver. A HytHost Discord bot hostingon feltöltöd a projektet, kiválasztod a Node.js, Python vagy más futtatókörnyezetet, a panel pedig elindítja a botot, és újraindítja, ha összeomlik.
A teljes leírás, a feltöltéstől az automatikus újraindításig, a Discord bot hosztolása 24/7 útmutatóban található.
Futtasd a botodat bekapcsolva hagyott gép nélkül: a HytHost Discord bot hosting támogatja a Node.js, Python, Java, Go, C#, Bun és Lavalink futtatókörnyezetet — €0.89/hó-tól.
Bot hosting csomagokGyakran ismételt kérdések
Igen. Az alkalmazás, a token és a kód létrehozása semmibe sem kerül, a discord.py és a discord.js pedig ingyenes. Csak akkor fizetsz, ha olyan helyen szeretnéd futtatni, amely online marad.
Amelyiket már ismered. A discord.py és a discord.js is kiforrott, és a teljes Discord API-t lefedi. Ha egyiket sem ismered, a Python egyszerűbben olvasható; a JavaScriptnek nagyobb a könyvtár-ökoszisztémája.
Ellenőrizd, hogy az applications.commands hatókörrel hívtad-e meg, és hogy a kód szinkronizálta-e a parancsokat. A globális parancsok megjelenése eltarthat egy kis ideig; ha nem jelennek meg, indítsd újra a Discordot.
A normál üzenetek szövegének olvasásához a Message Content intent kell, amelyet a Developer Portalon kell bekapcsolni és a kódban kérni. Enélkül a bot továbbra is megkapja a slash parancsokat, az említéseket és a privát üzeneteket.
Azonnal állítsd vissza a Developer Portal Bot oldalán. A régi token megszűnik működni; az újat add meg mindenhol, ahol a bot fut, a régit pedig töröld a kódodból és az előzményekből.
A botod online, a géped nélkül
A HytHost Discord bot hosting Node.js, Python, Java, Go, C#, Bun vagy Lavalink botokat futtat MySQL adatbázissal és biztonsági mentésekkel — €0.89/hó-tól.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursHasznos volt ez az útmutató?