Discord · Útmutató

Hogyan készíts Discord moderációs botot

Frissítve October 11, 2026 6 perc olvasás

Ezen az oldalon
  1. Kezdd a Discord AutoModdal
  2. Mit ad hozzá egy saját moderációs bot
  3. Jogosultságok, rangsorrend és intentek
  4. Moderációs parancsok Pythonban (discord.py)
  5. Timeout parancs JavaScriptben (discord.js)
  6. Naplózd, mi történik
  7. Tartsd online a botot
  8. GYIK

Egy pörgős Discord szervernek olyan moderáció kell, ami sosem alszik: spamszűrők, gyors timeoutok, egy mód arra, hogy eltakarítsd az üzenetáradatot, és nyilvántartás arról, ki mit csinált. Ennek egy részét a Discord ingyen adja az AutoModdal, a többit egy kis saját bot oldja meg.

Ez az útmutató az AutoModdal kezd, mert lehet, hogy csak erre van szükséged, aztán moderációs parancsokat épít Pythonban (discord.py) vagy JavaScriptben (discord.js), és elmagyarázza, milyen jogosultságok, intentek és naplók kellenek a működésükhöz.

Kezdd a Discord AutoModdal

Az AutoMod a Discord beépített része, és a Discord oldalán fut, így akkor is működik, ha egyetlen bot sincs online. Nyisd meg a Server Settings → AutoMod menüt; ehhez Manage Server jogosultság kell. Ezt kínálja:

  • Egyéni szószűrők saját kulcsszavakkal, helyettesítő karakterekkel és reguláris kifejezésekkel.
  • Gyakran jelölt szavak: kész listák a káromkodásra, a szexuális tartalomra és a sértő kifejezésekre.
  • Említésspam: lép, ha egy üzenet túl sok embert említ egyszerre, az általad megadott határig.
  • Spamtartalom: a Discord saját felismerése a gyanús spamre.
  • Tagprofil-szűrők: kulcsszavak, amelyeket a felhasználónevekben és a profilokban keres.

Minden szabálynál te döntöd el, mi történjen: az üzenet blokkolása, riasztás egy moderátori csatornába vagy timeout a tagnak. Rangokat és csatornákat kivételként is megadhatsz. A Manage Server vagy Administrator jogosultságú tagokat soha nem szűri.

Ha a gondod a spam, a sértő szavak és a tömeges említések, először állítsd be az AutoModot, és nézd meg, elég-e. Saját bot akkor éri meg, ha olyan parancsokat szeretnél, amelyeket a moderátoraid használhatnak, saját szabályokat és rendes naplót.

Mit ad hozzá egy saját moderációs bot

  • Slash parancsok a moderátoroknak: /timeout, /purge, /slowmode, kick és ban, minden alkalommal rögzített indoklással.
  • Egy mod log csatorna a belépésekkel, kilépésekkel, törölt üzenetekkel és a moderátoraid minden lépésével.
  • Saját szabályok: figyelmeztetések, amelyek összeadódva timeoutot hoznak, visszatartott új fiókok, linkek csak bizonyos csatornákban.
  • Minden egy helyen, a közösségedre szabva, nem egy nyilvános bot alapbeállításai szerint.

Ha még sosem készítettél botot, előbb kövesd a Discord bot készítéséről szóló útmutatót: hozd létre az alkalmazást, szerezd meg a tokent, és futtasd az első /ping parancsot. Az alábbi kód erre épít.

Jogosultságok, rangsorrend és intentek

Csak azokkal a jogosultságokkal hívd meg a botot, amelyeket a parancsai használnak:

MűveletJogosultság
Tag timeoutolása (legfeljebb 28 napra)Moderate Members
Tag kirúgásaKick Members
Tag kitiltásaBan Members
Üzenetek törléseManage Messages és Read Message History
Slow mode beállításaManage Channels

A rangok sorrendje számít. A bot csak olyan tagokon tud műveletet végezni, akiknek a legmagasabb rangja a bot saját legmagasabb rangja alatt van. A Server Settings → Roles alatt húzd a bot rangját azok fölé, amelyeket moderálnia kell. A szerver tulajdonosát és az Administratorokat senki sem teheti timeoutba.

Intentek. A slash parancsokhoz nem kell privilegizált intent. Moderáláshoz kettő hasznos: a Server Members a belépések és kilépések naplózásához, a Message Content pedig akkor, ha a bot maga olvassa az üzeneteket, hogy szűrje őket. Kapcsold be őket a Developer Portalon, a Bot → Privileged Gateway Intents alatt. 2026 júniusa óta a Discord csak azoknál az alkalmazásoknál vizsgálja ezeket felül, amelyek 10 000-nél több felhasználót érnek el; ez alatt elég a kapcsoló.

Moderációs parancsok Pythonban (discord.py)

Telepített discord.py 2.7-tel (pip install discord.py) ez a bot.py hozzáadja a /timeout, /purge és /slowmode parancsokat:

import os
from datetime import timedelta
from typing import Optional

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="Time out a member")
@app_commands.guild_only()
@app_commands.default_permissions(moderate_members=True)
async def timeout(interaction: discord.Interaction, member: discord.Member,
                  minutes: app_commands.Range[int, 1, 40320], reason: Optional[str] = None):
    await member.timeout(timedelta(minutes=minutes), reason=reason)
    await interaction.response.send_message(f"{member.mention} is timed out for {minutes} min.", ephemeral=True)

@bot.tree.command(description="Delete recent messages in this channel")
@app_commands.guild_only()
@app_commands.default_permissions(manage_messages=True)
async def purge(interaction: discord.Interaction, count: app_commands.Range[int, 1, 100]):
    await interaction.response.defer(ephemeral=True)
    deleted = await interaction.channel.purge(limit=count)
    await interaction.followup.send(f"Deleted {len(deleted)} messages.", ephemeral=True)

@bot.tree.command(description="Set slow mode in this channel")
@app_commands.guild_only()
@app_commands.default_permissions(manage_channels=True)
async def slowmode(interaction: discord.Interaction, seconds: app_commands.Range[int, 0, 21600]):
    await interaction.channel.edit(slowmode_delay=seconds)
    await interaction.response.send_message(f"Slow mode is now {seconds} s.", ephemeral=True)

bot.run(os.environ["DISCORD_TOKEN"])

A default_permissions minden parancsot elrejt azok elől, akiknek nincs meg a hozzá tartozó jogosultság. A szerver adminjai a Server Settings → Integrations alatt módosíthatják, ki látja. A kódban lévő határok a Discord korlátai: 40 320 perc 28 nap, a slow mode legfeljebb 6 óra lehet.

Timeout parancs JavaScriptben (discord.js)

discord.js 14-gyel (npm install discord.js) ugyanez a /timeout így néz ki. A moderatable a próbálkozás előtt ellenőrzi a rangsorrendet és a bot jogosultságát:

const { Client, Events, GatewayIntentBits, InteractionContextType, MessageFlags,
  PermissionFlagsBits, REST, Routes, SlashCommandBuilder } = require('discord.js');

const commands = [
  new SlashCommandBuilder()
    .setName('timeout').setDescription('Time out a member')
    .addUserOption((o) => o.setName('member').setDescription('Member').setRequired(true))
    .addIntegerOption((o) => o.setName('minutes').setDescription('Minutes').setMinValue(1).setMaxValue(40320).setRequired(true))
    .addStringOption((o) => o.setName('reason').setDescription('Reason'))
    .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers)
    .setContexts(InteractionContextType.Guild)
    .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 });
});

client.on(Events.InteractionCreate, async (interaction) => {
  if (!interaction.isChatInputCommand() || interaction.commandName !== 'timeout') return;
  const member = interaction.options.getMember('member');
  const minutes = interaction.options.getInteger('minutes');
  if (!member?.moderatable) {
    return interaction.reply({ content: 'I cannot time out that member.', flags: MessageFlags.Ephemeral });
  }
  await member.timeout(minutes * 60_000, interaction.options.getString('reason') ?? undefined);
  await interaction.reply({ content: `${member} is timed out for ${minutes} min.`, flags: MessageFlags.Ephemeral });
});

client.login(process.env.DISCORD_TOKEN);

A kick és a ban ugyanezt a mintát követi a member.kick(reason) és a member.ban({ reason, deleteMessageSeconds }) hívással. Kitiltáskor a tag legfeljebb 7 napnyi üzenete is törölhető.

Naplózd, mi történik

  • Mindig adj meg indoklást. A könyvtárak elküldik a Discord audit logjába (Server Settings → Audit Log), amely 45 napig őrzi a bejegyzéseket.
  • Minden műveletet küldj el egy privát mod log csatornába is: ki lépett, kivel szemben, miért és mennyi időre. Az audit loggal ellentétben ez addig őrzi az előzményeket, ameddig csak szeretnéd.
  • A belépésekhez és kilépésekhez a Server Members intent kell; naplózd a fiók létrehozásának dátumát is, hogy kiszúrd a frissen gyártott eldobható fiókokat.
  • A törölt és szerkesztett üzeneteket csak akkor lehet a szövegükkel együtt naplózni, ha a botnak megvan a Message Content intentje.

Tartsd észben a tömeges törlés korlátját: a Discord hívásonként legfeljebb 100 üzenetet töröl, és visszautasítja a két hétnél régebbieket, így a /purge friss spamhez való, nem egy régi csatorna kitakarításához.

Tartsd online a botot

Az AutoMod nélküled is dolgozik, de a parancsaid és a naplóid abban a pillanatban leállnak, amikor a bot folyamata leáll. Egy otthoni gépen futó moderációs bot pont akkor van offline, amikor a gép alvó módba megy, a raidek pedig ritkán várják meg a munkaidőt.

A HytHost Discord bot hostingon feltöltöd a projektet, kiválasztod a futtatókörnyezetet (Node.js, Python, Java, Go, C#, Bun vagy Lavalink), a tokent pedig a kód helyett egy indítási változóban tartod. A panel elindítja a botot, és összeomlás után újraindítja. A teljes beállítást a Hogyan üzemeltess Discord botot 24/7 útmutató írja le.

A moderációs bot csak addig dolgozik, amíg fut: a HytHost Discord bot hosting támogatja a Pythont, a Node.js-t és még 5 futtatókörnyezetet, €0.89/hó-tól.

Bot hosting csomagok
GYIK

Gyakran ismételt kérdések

Sok szervernek elég az AutoMod: blokkolja a kulcsszavakat, a jelölt szavakat, az említésspamet és a gyanús spamet, és timeoutot is adhat a tagoknak. Akkor tegyél mellé botot, ha a moderátoraidnak olyan parancsok kellenek, mint a purge és a slow mode, saját szabályok vagy a műveletek teljes naplója.

Csak azok, amelyeket a parancsai használnak: Moderate Members a timeoutokhoz, Kick Members, Ban Members, Manage Messages a Read Message History-val az üzenetek törléséhez, és Manage Channels a slow mode-hoz. Administrator jogot lehetőleg ne adj neki.

Általában a rangsorrend miatt: a bot csak olyan tagokon tud műveletet végezni, akiknek a legmagasabb rangja a sajátja alatt van, ezért a Server Settingsben vidd feljebb a bot rangját. A szerver tulajdonosát és az Administrator jogú tagokat egyáltalán nem lehet timeoutba tenni.

Tömegesen nem. A Discord tömeges törlése egyszerre legfeljebb 100 üzenetet fogad el, és csak két hétnél frissebbeket. A régebbi üzeneteket csak egyenként lehet törölni, ami lassú.

Csak ha maga olvassa az üzeneteket, például szavak szűréséhez vagy a törölt üzenetek szövegének naplózásához. A slash parancsok, a timeoutok, a banok és a purge nélküle is működnek.

Hostold a moderációs botodat

A HytHost Discord bot hosting Pythont, Node.js-t, Javát, Go-t, C#-ot, Bunt vagy Lavalinket futtat, összeomlás után újraindítja a botot, és €0.89/hó-tól indul.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Hasznos volt ez az útmutató?