Discord · Ghid

Cum faci un bot de moderare pentru Discord

Actualizat October 11, 2026 7 min de citit

Pe această pagină
  1. Începe cu AutoMod din Discord
  2. Ce aduce în plus un bot de moderare propriu
  3. Permisiuni, ordinea rolurilor și intents
  4. Comenzi de moderare în Python (discord.py)
  5. O comandă de timeout în JavaScript (discord.js)
  6. Ține evidența a ce se întâmplă
  7. Ține botul online
  8. FAQ

Un server de Discord aglomerat are nevoie de o moderare care nu doarme niciodată: filtre de spam, timeout-uri date rapid, o cale de a curăța un val de mesaje și o evidență a cine ce a făcut. Discord îți oferă o parte din toate astea gratuit prin AutoMod, iar un bot mic, al tău, acoperă restul.

Ghidul începe cu AutoMod, pentru că s-ar putea să fie tot ce îți trebuie, apoi construiește comenzi de moderare în Python (discord.py) sau JavaScript (discord.js) și explică permisiunile, intents și logurile de care depind.

Începe cu AutoMod din Discord

AutoMod e integrat în Discord și rulează pe partea Discord, deci funcționează chiar și când niciun bot nu e online. Deschide Server Settings → AutoMod; ai nevoie de permisiunea Manage Server. Îți pune la dispoziție:

  • Filtre de cuvinte personalizate, cu propriile cuvinte-cheie, wildcard-uri și expresii regulate.
  • Cuvinte semnalate frecvent: liste gata făcute pentru limbaj vulgar, conținut sexual și insulte.
  • Spam de mențiuni: intervine când un mesaj menționează prea multe persoane deodată, peste o limită setată de tine.
  • Conținut spam: detectarea proprie a Discord pentru mesajele suspecte de spam.
  • Filtre pentru profilul membrilor: cuvinte-cheie verificate în numele de utilizator și în profiluri.

Pentru fiecare regulă alegi ce se întâmplă: blochezi mesajul, trimiți o alertă într-un canal al moderatorilor sau îi dai membrului timeout. Poți excepta anumite roluri și canale. Membrii cu Manage Server sau Administrator nu sunt filtrați niciodată.

Dacă problema ta e spamul, insultele și mențiunile în masă, configurează întâi AutoMod și vezi dacă ajunge. Un bot propriu merită efortul atunci când vrei comenzi pe care să le folosească moderatorii, reguli proprii și un log ca lumea.

Ce aduce în plus un bot de moderare propriu

  • Slash commands pentru moderatori: /timeout, /purge, /slowmode, kick și ban, cu motivul înregistrat de fiecare dată.
  • Un canal de mod log cu intrările, ieșirile, mesajele șterse și fiecare acțiune a moderatorilor.
  • Reguli proprii: avertismente care se adună până la un timeout, conturi noi ținute pe loc, linkuri permise doar în anumite canale.
  • Totul într-un singur loc, ajustat pentru comunitatea ta, nu după setările implicite ale unui bot public.

Dacă n-ai mai făcut niciodată un bot, urmează întâi ghidul cum faci un bot de Discord ca să creezi aplicația, să obții token-ul și să rulezi prima comandă /ping. Codul de mai jos pornește de acolo.

Permisiuni, ordinea rolurilor și intents

Invită botul doar cu permisiunile pe care le folosesc comenzile lui:

AcțiunePermisiune
Timeout unui membru (până la 28 de zile)Moderate Members
Dat afară un membru (kick)Kick Members
Banat un membruBan Members
Șters mesajeManage Messages și Read Message History
Setat slow modeManage Channels

Ordinea rolurilor contează. Un bot poate acționa doar asupra membrilor al căror cel mai înalt rol e sub cel mai înalt rol al botului. În Server Settings → Roles, trage rolul botului deasupra rolurilor pe care trebuie să le modereze. Nimeni nu îi poate da timeout proprietarului serverului sau unui Administrator.

Intents. Slash commands nu au nevoie de niciun intent privilegiat. Două sunt utile pentru moderare: Server Members pentru logurile de intrare și ieșire, și Message Content dacă botul citește mesajele ca să le filtreze el însuși. Le activezi din Bot → Privileged Gateway Intents în Developer Portal. Din iunie 2026, Discord le verifică doar pentru aplicațiile care ajung la peste 10.000 de utilizatori; sub pragul ăsta, ajunge să bifezi comutatorul.

Comenzi de moderare în Python (discord.py)

Cu discord.py 2.7 instalat (pip install discord.py), acest bot.py adaugă /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 ascunde fiecare comandă de membrii care nu au permisiunea respectivă. Administratorii serverului pot schimba cine o vede din Server Settings → Integrations. Limitele din cod sunt cele ale Discord: 40.320 de minute înseamnă 28 de zile, iar slow mode merge până la 6 ore.

O comandă de timeout în JavaScript (discord.js)

Cu discord.js 14 (npm install discord.js), aceeași comandă /timeout arată așa. moderatable verifică ordinea rolurilor și permisiunea botului înainte de a încerca:

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 urmează același tipar, cu member.kick(reason) și member.ban({ reason, deleteMessageSeconds }). Un ban poate șterge și mesajele membrului din ultimele 7 zile.

Ține evidența a ce se întâmplă

  • Dă mereu un motiv. Bibliotecile îl trimit în audit log-ul Discord (Server Settings → Audit Log), care păstrează intrările 45 de zile.
  • Postează fiecare acțiune și într-un canal privat de mod log: cine a acționat, asupra cui, de ce și pentru cât timp. Spre deosebire de audit log, acolo istoricul rămâne cât vrei tu.
  • Intrările și ieșirile au nevoie de intent-ul Server Members; notează data creării contului ca să prinzi conturile noi, făcute de unică folosință.
  • Mesajele șterse și editate pot fi logate cu tot cu text doar dacă botul are intent-ul Message Content.

Ține cont de limita la ștergerea în masă: Discord șterge cel mult 100 de mesaje pe apel și refuză mesajele mai vechi de două săptămâni, așa că /purge e pentru spam proaspăt, nu pentru golirea unui canal vechi.

Ține botul online

AutoMod merge mai departe și fără tine, dar comenzile și logurile tale se opresc în clipa în care se oprește procesul botului. Un bot de moderare care rulează pe PC-ul de acasă e offline exact când PC-ul intră în sleep, iar raidurile rareori așteaptă orele de program.

Pe hostingul de boti Discord HytHost încarci proiectul, alegi runtime-ul (Node.js, Python, Java, Go, C#, Bun sau Lavalink) și ții token-ul într-o variabilă de pornire, nu în cod. Panoul pornește botul și îl repornește după un crash. Configurarea completă e în cum ții un bot de Discord online 24/7.

Un bot de moderare funcționează doar cât timp rulează: hostingul de boti Discord de la HytHost suportă Python, Node.js și încă 5 runtime-uri, de la €0.89/lună.

Vezi planurile de hosting pentru boti
FAQ

Întrebări frecvente

Pentru multe servere, AutoMod e suficient: blochează cuvinte-cheie, cuvinte semnalate, spamul de mențiuni și mesajele suspecte de spam, și poate da timeout membrilor. Adaugă un bot când moderatorii au nevoie de comenzi precum purge și slow mode, de reguli proprii sau de un log complet al acțiunilor.

Doar cele pe care le folosesc comenzile lui: Moderate Members pentru timeout, Kick Members, Ban Members, Manage Messages împreună cu Read Message History pentru ștergerea mesajelor și Manage Channels pentru slow mode. Evită să-i dai Administrator.

De obicei e de vină ordinea rolurilor: botul poate acționa doar asupra membrilor al căror cel mai înalt rol e sub al lui, așa că mută rolul botului mai sus în Server Settings. Proprietarului serverului și membrilor cu Administrator nu li se poate da timeout deloc.

Nu în masă. Ștergerea în masă din Discord acceptă cel mult 100 de mesaje odată și doar mesaje mai noi de două săptămâni. Mesajele mai vechi pot fi șterse doar unul câte unul, ceea ce durează.

Doar dacă citește el însuși mesajele, de exemplu ca să filtreze cuvinte sau ca să logheze textul mesajelor șterse. Slash commands, timeout-urile, banurile și purge funcționează și fără el.

Găzduiește-ți botul de moderare

Hostingul de boti Discord HytHost rulează Python, Node.js, Java, Go, C#, Bun sau Lavalink, repornește botul după un crash și pornește de la €0.89/lună.

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

Ți-a fost util acest ghid?