Discord · Водич

Како да направите Discord бот за модерација

Ажурирано October 11, 2026 7 мин читање

На оваа страница
  1. Почнете со Discord AutoMod
  2. Што додава сопствен бот за модерација
  3. Дозволи, редослед на улоги и intents
  4. Команди за модерација во Python (discord.py)
  5. Команда за тајмаут во JavaScript (discord.js)
  6. Евиденција на сè што се случува
  7. Одржете го ботот онлајн
  8. ЧПП

На активен Discord сервер му треба модерација што никогаш не спие: филтри за спам, брзи тајмаути, начин да исчистите поплава од пораки и евиденција кој што направил. Дел од тоа Discord ви го дава бесплатно преку AutoMod, а остатокот го покрива мал бот што ќе го напишете сами.

Овој водич почнува со AutoMod, бидејќи можеби ви е доволен, потоа гради команди за модерација во Python (discord.py) или JavaScript (discord.js) и ги објаснува дозволите, intents и логовите без кои тие не работат.

Почнете со Discord AutoMod

AutoMod е вграден во Discord и работи на страната на Discord, па функционира дури и кога ниту еден бот не е онлајн. Отворете Server Settings → AutoMod; потребна ви е дозволата Manage Server. Нуди:

  • Сопствени филтри за зборови со ваши клучни зборови, џокер-знаци (wildcards) и регуларни изрази.
  • Често означувани зборови: готови листи за вулгарности, сексуална содржина и навредливи изрази.
  • Спам со спомнувања: реакција кога една порака спомнува премногу луѓе одеднаш, до граница што ја одредувате вие.
  • Спам-содржина: сопственото откривање на Discord за сомнителен спам.
  • Филтри за профили на членови: клучни зборови што се проверуваат во корисничките имиња и профилите.

За секое правило избирате што ќе се случи: пораката да се блокира, да се испрати известување во канал за модератори или членот да добие тајмаут. Можете да изземете улоги и канали. Членовите со Manage Server или Administrator никогаш не се филтрираат.

Ако проблемот ви е спам, навреди и масовни спомнувања, прво поставете AutoMod и видете дали е доволно. Сопствен бот се исплатува кога сакате команди што модераторите можат да ги користат, свои правила и вистински лог.

Што додава сопствен бот за модерација

  • Slash-команди за модератори: /timeout, /purge, /slowmode, исфрлање и бан, со причина забележана секој пат.
  • Канал за мод-лог со приклучувања, заминувања, избришани пораки и секоја акција на вашите модератори.
  • Ваши правила: предупредувања што се собираат до тајмаут, задржување на новите сметки, линкови дозволени само во некои канали.
  • Сè на едно место, прилагодено на вашата заедница наместо на стандардните поставки на некој јавен бот.

Ако досега не сте направиле бот, прво следете го водичот како да направите Discord бот за да ја креирате апликацијата, да го земете токенот и да ја пуштите првата команда /ping. Кодот подолу се надоврзува на него.

Дозволи, редослед на улоги и intents

Поканете го ботот само со дозволите што ги користат неговите команди:

АкцијаДозвола
Тајмаут на член (до 28 дена)Moderate Members
Исфрлање членKick Members
Бан на членBan Members
Бришење поракиManage Messages и Read Message History
Вклучување slow modeManage Channels

Редоследот на улогите е важен. Ботот може да делува само врз членови чија највисока улога е под неговата највисока улога. Во Server Settings → Roles повлечете ја улогата на ботот над улогите што треба да ги модерира. Никој не може да му даде тајмаут на сопственикот на серверот или на Administrator.

Intents. На slash-командите не им треба ниту еден привилегиран intent. За модерација корисни се два: Server Members за логови на приклучување и заминување и Message Content ако ботот сам ги чита пораките за да ги филтрира. Вклучете ги во Bot → Privileged Gateway Intents во Developer Portal. Од јуни 2026 Discord ги проверува само кај апликации што стигнуваат до повеќе од 10.000 корисници; под тоа, доволно е да го вклучите прекинувачот.

Команди за модерација во Python (discord.py)

Со инсталиран discord.py 2.7 (pip install discord.py), овој bot.py ги додава /timeout, /purge и /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 ја крие секоја команда од членовите што ја немаат таа дозвола. Администраторите на серверот можат да сменат кој ја гледа во Server Settings → Integrations. Ограничувањата во кодот се оние на Discord: 40.320 минути се 28 дена, а slow mode оди до 6 часа.

Команда за тајмаут во JavaScript (discord.js)

Со discord.js 14 (npm install discord.js), истата /timeout изгледа вака. moderatable ги проверува редоследот на улогите и дозволата на ботот пред обидот:

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

Исфрлањето и банот го следат истиот образец со member.kick(reason) и member.ban({ reason, deleteMessageSeconds }). Банот може да избрише и до 7 дена пораки на членот.

Евиденција на сè што се случува

  • Секогаш наведувајте причина. Библиотеките ја праќаат во audit log-от на Discord (Server Settings → Audit Log), кој ги чува записите 45 дена.
  • Објавувајте ја секоја акција и во приватен канал за мод-лог: кој делувал, врз кого, зошто и колку долго. За разлика од audit log-от, тој ја чува историјата колку што сакате.
  • За приклучувањата и заминувањата е потребен intent-от Server Members; запишувајте го датумот на креирање на сметката за да ги забележите свежите сметки за еднократна употреба.
  • Избришаните и изменетите пораки може да се логираат заедно со текстот само ако ботот го има intent-от Message Content.

Имајте го предвид ограничувањето за масовно бришење: Discord брише до 100 пораки по повик и одбива пораки постари од две недели, па /purge е за свеж спам, не за чистење стар канал.

Одржете го ботот онлајн

AutoMod продолжува да работи и без вас, но вашите команди и логови престануваат во моментот кога ќе запре процесот на ботот. Бот за модерација на домашен компјутер е офлајн токму кога компјутерот спие, а рејдовите ретко чекаат работно време.

На HytHost хостингот за Discord ботови го прикачувате проектот, ја избирате околината за извршување (Node.js, Python, Java, Go, C#, Bun или Lavalink) и токенот го чувате во стартна променлива наместо во кодот. Панелот го стартува ботот и го рестартира по пад. Целото поставување е во како да хостирате Discord бот 24/7.

Ботот за модерација работи само додека е вклучен: HytHost хостингот за Discord ботови поддржува Python, Node.js и уште 5 околини за извршување, од €0.89 месечно.

Видете ги пакетите за хостинг на ботови
ЧПП

Често поставувани прашања

За многу сервери AutoMod е доволен: блокира клучни зборови, означени зборови, спам со спомнувања и сомнителен спам, а може и да им дава тајмаут на членовите. Додајте бот кога на модераторите им требаат команди како purge и slow mode, свои правила или целосен лог на акциите.

Само оние што ги користат неговите команди: Moderate Members за тајмаути, Kick Members, Ban Members, Manage Messages заедно со Read Message History за бришење пораки и Manage Channels за slow mode. Не давајте му Administrator.

Најчесто поради редоследот на улогите: ботот може да делува само врз членови чија највисока улога е под неговата, па поместете ја улогата на ботот повисоко во Server Settings. На сопственикот на серверот и на членовите со Administrator воопшто не може да им се даде тајмаут.

Не масовно. Масовното бришење на Discord прифаќа до 100 пораки одеднаш и само пораки понови од две недели. Постарите пораки може да се бришат само една по една, што е бавно.

Само ако сам ги чита пораките, на пример за да филтрира зборови или да го логира текстот на избришаните пораки. Slash-командите, тајмаутите, бановите и purge работат и без него.

Хостирајте го вашиот бот за модерација

HytHost хостингот за Discord ботови извршува Python, Node.js, Java, Go, C#, Bun или Lavalink, го рестартира ботот по пад и почнува од €0.89 месечно.

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

Дали овој водич ви беше корисен?