Discord · Vodič

Kako napraviti Discord bota za moderaciju

Ažurirano October 11, 2026 6 min čitanja

Na ovoj stranici
  1. Počnite s Discord AutoModom
  2. Što donosi vlastiti bot za moderaciju
  3. Dozvole, redoslijed uloga i intenti
  4. Naredbe za moderaciju u Pythonu (discord.py)
  5. Naredba za timeout u JavaScriptu (discord.js)
  6. Bilježenje onoga što se događa
  7. Neka bot ostane online
  8. FAQ

Aktivnom Discord serveru treba moderacija koja nikad ne spava: filteri za spam, brzi timeoutovi, način da se očisti poplava poruka i zapis o tome tko je što napravio. Dio toga Discord vam daje besplatno kroz AutoMod, a ostatak pokriva mali bot koji napravite sami.

Ovaj vodič počinje s AutoModom, jer vam on možda bude i dovoljan, zatim gradi naredbe za moderaciju u Pythonu (discord.py) ili JavaScriptu (discord.js) i objašnjava dozvole, intente i logove bez kojih one ne rade.

Počnite s Discord AutoModom

AutoMod je ugrađen u Discord i radi na Discordovoj strani, pa radi čak i kad nijedan bot nije online. Otvorite Server Settings → AutoMod; potrebna vam je dozvola Manage Server. Nudi:

  • Vlastite filtere riječi s vašim ključnim riječima, zamjenskim znakovima i regularnim izrazima.
  • Često označene riječi: gotovi popisi za psovke, seksualni sadržaj i uvrede.
  • Spam spominjanja: reagira kad poruka spominje previše ljudi odjednom, do granice koju sami odredite.
  • Spam sadržaj: Discordovo vlastito prepoznavanje sumnjivog spama.
  • Filteri profila članova: ključne riječi koje se provjeravaju u korisničkim imenima i profilima.

Za svako pravilo birate što se događa: blokiranje poruke, upozorenje u kanal moderatora ili timeout za člana. Možete izuzeti uloge i kanale. Članovi s dozvolom Manage Server ili Administrator nikad se ne filtriraju.

Ako su vaš problem spam, uvrede i masovna spominjanja, prvo postavite AutoMod i pogledajte je li to dovoljno. Vlastiti bot isplati se kad želite naredbe koje vaši moderatori mogu koristiti, vlastita pravila i pravi log.

Što donosi vlastiti bot za moderaciju

  • Slash naredbe za moderatore: /timeout, /purge, /slowmode, kick i ban, uz razlog zabilježen svaki put.
  • Kanal za mod log s ulascima, izlascima, obrisanim porukama i svakom radnjom vaših moderatora.
  • Vlastita pravila: upozorenja koja se zbrajaju u timeout, zadržavanje novih računa, linkovi dopušteni samo u nekim kanalima.
  • Sve na jednom mjestu, prilagođeno vašoj zajednici umjesto zadanih postavki javnog bota.

Ako još niste napravili bota, prvo slijedite vodič kako napraviti Discord bota da biste stvorili aplikaciju, dobili token i pokrenuli prvu naredbu /ping. Kod u nastavku nadovezuje se na to.

Dozvole, redoslijed uloga i intenti

Pozovite bota samo s dozvolama koje koriste njegove naredbe:

RadnjaDozvola
Timeout za člana (do 28 dana)Moderate Members
Izbacivanje članaKick Members
Ban članaBan Members
Brisanje porukaManage Messages i Read Message History
Uključivanje slow modeaManage Channels

Redoslijed uloga je važan. Bot može djelovati samo na članove čija je najviša uloga ispod botove najviše uloge. U Server Settings → Roles povucite ulogu bota iznad uloga koje treba moderirati. Nitko ne može dati timeout vlasniku servera ni Administratoru.

Intenti. Slash naredbama ne treba nijedan privilegirani intent. Za moderaciju su korisna dva: Server Members za logove ulazaka i izlazaka te Message Content ako bot sam čita poruke da bi ih filtrirao. Uključite ih pod Bot → Privileged Gateway Intents u Developer Portalu. Od lipnja 2026. Discord ih pregledava samo za aplikacije koje dosegnu više od 10.000 korisnika; ispod toga dovoljan je prekidač.

Naredbe za moderaciju u Pythonu (discord.py)

Uz instaliran discord.py 2.7 (pip install discord.py), ovaj bot.py dodaje /timeout, /purge i /slowmode:

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"])

default_permissions skriva svaku naredbu od članova bez te dozvole. Administratori servera mogu promijeniti tko je vidi pod Server Settings → Integrations. Granice u kodu su Discordove: 40.320 minuta je 28 dana, a slow mode ide do 6 sati.

Naredba za timeout u JavaScriptu (discord.js)

Uz discord.js 14 (npm install discord.js), ista naredba /timeout izgleda ovako. moderatable prije pokušaja provjerava redoslijed uloga i dozvolu bota:

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);

Kick i ban slijede isti obrazac s member.kick(reason) i member.ban({ reason, deleteMessageSeconds }). Ban može obrisati i do 7 dana članovih poruka.

Bilježenje onoga što se događa

  • Uvijek navedite razlog. Biblioteke ga šalju u Discordov audit log (Server Settings → Audit Log), koji čuva zapise 45 dana.
  • Svaku radnju objavite i u privatnom kanalu za mod log: tko je djelovao, nad kim, zašto i koliko dugo. Za razliku od audit loga, on čuva povijest koliko god želite.
  • Za ulaske i izlaske treba intent Server Members; bilježite datum stvaranja računa da biste uočili svježe jednokratne račune.
  • Obrisane i uređene poruke mogu se bilježiti s tekstom samo ako bot ima intent Message Content.

Imajte na umu ograničenje skupnog brisanja: Discord briše najviše 100 poruka po pozivu i odbija poruke starije od dva tjedna, pa je /purge za svježi spam, a ne za čišćenje starog kanala.

Neka bot ostane online

AutoMod radi i bez vas, ali vaše naredbe i logovi prestaju čim se proces bota zaustavi. Bot za moderaciju pokrenut na kućnom računalu offline je upravo kad računalo ode u stanje mirovanja, a raidovi rijetko čekaju radno vrijeme.

Na HytHost hostingu za Discord botove učitate projekt, odaberete okruženje (Node.js, Python, Java, Go, C#, Bun ili Lavalink) i token držite u startup varijabli umjesto u kodu. Panel pokreće bota i ponovno ga pokreće nakon pada. Cijelo postavljanje opisano je u vodiču kako hostati Discord bota 24/7.

Bot za moderaciju radi samo dok je pokrenut: HytHost hosting za Discord botove podržava Python, Node.js i još 5 okruženja, od €0.89/mj.

Pogledajte planove za botove
FAQ

Često postavljana pitanja

Za mnoge servere AutoMod je dovoljan: blokira ključne riječi, označene riječi, spam spominjanja i sumnjivi spam, a članovima može dati i timeout. Dodajte bota kad vašim moderatorima trebaju naredbe poput purgea i slow modea, vlastita pravila ili potpuni log radnji.

Samo one koje koriste njegove naredbe: Moderate Members za timeoutove, Kick Members, Ban Members, Manage Messages uz Read Message History za brisanje poruka i Manage Channels za slow mode. Izbjegavajte mu dati Administrator.

Obično zbog redoslijeda uloga: bot može djelovati samo na članove čija je najviša uloga ispod njegove, pa pomaknite ulogu bota više u Server Settings. Vlasniku servera i članovima s dozvolom Administrator timeout se uopće ne može dati.

Ne skupno. Discordovo skupno brisanje prihvaća najviše 100 poruka odjednom i samo poruke mlađe od dva tjedna. Starije poruke mogu se brisati samo jednu po jednu, što je sporo.

Samo ako sam čita poruke, na primjer da filtrira riječi ili bilježi tekst obrisanih poruka. Slash naredbe, timeoutovi, banovi i purge rade i bez njega.

Hostajte svog bota za moderaciju

HytHost hosting za Discord botove pokreće Python, Node.js, Java, Go, C#, Bun ili Lavalink, ponovno pokreće bota nakon pada i počinje od €0.89/mj.

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

Je li ti ovaj vodič pomogao?