Discord Moderasyon Botu Nasıl Yapılır
Bu sayfada
Kalabalık bir Discord sunucusu hiç uyumayan bir moderasyona ihtiyaç duyar: spam filtreleri, hızlı timeout'lar, mesaj selini temizlemenin bir yolu ve kimin ne yaptığının kaydı. Discord bunun bir kısmını AutoMod ile ücretsiz verir; geri kalanını da kendi küçük botunuz halleder.
Bu rehber AutoMod ile başlıyor, çünkü ihtiyacınız olan tek şey o olabilir; ardından Python (discord.py) veya JavaScript (discord.js) ile moderasyon komutları yazıyor ve bunların çalışması için gereken izinleri, intent'leri ve logları açıklıyor.
Discord AutoMod ile başlayın
AutoMod Discord'un içinde yerleşik gelir ve Discord tarafında çalışır, bu yüzden hiçbir bot çevrimiçi değilken bile işini yapar. Server Settings → AutoMod bölümünü açın; bunun için Manage Server izni gerekir. Sundukları:
- Kendi anahtar kelimeleriniz, joker karakterler ve düzenli ifadelerle özel kelime filtreleri.
- Sık işaretlenen kelimeler: küfür, cinsel içerik ve hakaretler için hazır listeler.
- Bahsetme spamı: bir mesaj aynı anda çok fazla kişiden bahsettiğinde, belirlediğiniz sınıra göre devreye girer.
- Spam içerik: Discord'un şüpheli spamı kendi tespit etmesi.
- Üye profili filtreleri: kullanıcı adlarında ve profillerde aranan anahtar kelimeler.
Her kural için ne olacağını siz seçersiniz: mesajı engellemek, moderatör kanalına uyarı göndermek veya üyeye timeout vermek. Rolleri ve kanalları muaf tutabilirsiniz. Manage Server veya Administrator iznine sahip üyeler asla filtrelenmez.
Sorununuz spam, hakaretler ve toplu bahsetmelerse önce AutoMod'u kurun ve yetip yetmediğine bakın. Özel bir bot; moderatörlerinizin kullanabileceği komutlar, kendi kurallarınız ve düzgün bir log istediğinizde kendini amorti eder.
Özel bir moderasyon botu neler katar
- Moderatörler için slash komutları:
/timeout,/purge,/slowmode, kick ve ban; her seferinde bir sebep kaydedilir. - Bir mod log kanalı: katılmalar, ayrılmalar, silinen mesajlar ve moderatörlerinizin attığı her adım.
- Kendi kurallarınız: birikerek timeout'a dönüşen uyarılar, bekletilen yeni hesaplar, yalnızca bazı kanallarda izin verilen linkler.
- Her şey tek yerde, herkese açık bir botun varsayılanları yerine topluluğunuza göre ayarlanmış.
Daha önce hiç bot yapmadıysanız, uygulamayı oluşturmak, token'ı almak ve ilk /ping komutunu çalıştırmak için önce Discord botu nasıl yapılır rehberini izleyin. Aşağıdaki kod onun üzerine kurulur.
İzinler, rol sırası ve intent'ler
Botu yalnızca komutlarının kullandığı izinlerle davet edin:
| İşlem | İzin |
|---|---|
| Üyeye timeout vermek (en fazla 28 gün) | Moderate Members |
| Üyeyi sunucudan atmak | Kick Members |
| Üyeyi yasaklamak | Ban Members |
| Mesaj silmek | Manage Messages ve Read Message History |
| Yavaş modu ayarlamak | Manage Channels |
Rol sırası önemlidir. Bir bot yalnızca en yüksek rolü, botun kendi en yüksek rolünün altında olan üyeler üzerinde işlem yapabilir. Server Settings → Roles bölümünde botun rolünü, yöneteceği rollerin üstüne sürükleyin. Sunucu sahibine veya bir Administrator'a kimse timeout veremez.
Intent'ler. Slash komutları için ayrıcalıklı bir intent gerekmez. Moderasyon için ikisi işe yarar: katılma ve ayrılma logları için Server Members, bot mesajları kendisi filtrelemek için okuyorsa Message Content. Bunları Developer Portal'da Bot → Privileged Gateway Intents altından açın. Haziran 2026'dan beri Discord bunları yalnızca 10.000'den fazla kullanıcıya ulaşan uygulamalar için incelemeye alıyor; bunun altında anahtarı açmanız yeterli.
Python ile moderasyon komutları (discord.py)
discord.py 2.7 kuruluyken (pip install discord.py) bu bot.py, /timeout, /purge ve /slowmode komutlarını ekler:
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, her komutu o izne sahip olmayan üyelerden gizler. Sunucu yöneticileri komutu kimin göreceğini Server Settings → Integrations altından değiştirebilir. Koddaki sınırlar Discord'un sınırlarıdır: 40.320 dakika 28 gün eder, yavaş mod ise en fazla 6 saate kadar çıkar.
JavaScript ile timeout komutu (discord.js)
discord.js 14 ile (npm install discord.js) aynı /timeout komutu şöyle görünür. moderatable, denemeden önce rol sırasını ve botun iznini kontrol eder:
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 ve ban da aynı kalıbı member.kick(reason) ve member.ban({ reason, deleteMessageSeconds }) ile izler. Bir ban, üyenin son 7 güne kadar olan mesajlarını da silebilir.
Olup biteni loglamak
- Her zaman bir sebep belirtin. Kütüphaneler bunu Discord'un denetim kaydına (Server Settings → Audit Log) gönderir; bu kayıt girdileri 45 gün tutar.
- Her işlemi ayrıca özel bir mod log kanalına da gönderin: kim işlem yaptı, kime, neden ve ne kadar süreyle. Denetim kaydının aksine bu kanal geçmişi istediğiniz kadar saklar.
- Katılmalar ve ayrılmalar için Server Members intent'i gerekir; yeni açılmış kullan-at hesapları fark etmek için hesabın oluşturulma tarihini de loglayın.
- Silinen ve düzenlenen mesajlar metinleriyle birlikte yalnızca bot Message Content intent'ine sahipse loglanabilir.
Toplu silme sınırını unutmayın: Discord çağrı başına en fazla 100 mesaj siler ve iki haftadan eski mesajları reddeder; yani /purge eski bir kanalı boşaltmak için değil, taze spam içindir.
Botu çevrimiçi tutun
AutoMod siz olmadan da çalışmaya devam eder, ancak komutlarınız ve loglarınız botun süreci durduğu anda durur. Evdeki bir bilgisayarda çalışan moderasyon botu tam da bilgisayar uyku moduna geçtiğinde çevrimdışı olur ve raid'ler nadiren mesai saatlerini bekler.
HytHost Discord bot hosting üzerinde projeyi yüklersiniz, çalışma ortamını seçersiniz (Node.js, Python, Java, Go, C#, Bun veya Lavalink) ve token'ı kodun içinde değil, bir başlangıç değişkeninde tutarsınız. Panel botu başlatır ve çöktükten sonra yeniden başlatır. Kurulumun tamamı bir Discord botu 24/7 nasıl barındırılır rehberinde.
Bir moderasyon botu yalnızca çalıştığı sürece işe yarar: HytHost Discord bot hosting Python, Node.js ve 5 çalışma ortamını daha destekler, €0.89/ay'dan başlayan fiyatlarla.
Bot hosting paketlerini görünSıkça sorulan sorular
Birçok sunucu için AutoMod yeterlidir: anahtar kelimeleri, işaretlenen kelimeleri, bahsetme spamını ve şüpheli spamı engeller, üyelere timeout da verebilir. Moderatörlerinizin purge ve yavaş mod gibi komutlara, kendi kurallarınıza veya işlemlerin eksiksiz bir loguna ihtiyacı olduğunda bir bot ekleyin.
Yalnızca komutlarının kullandıklarına: timeout için Moderate Members, Kick Members, Ban Members, mesaj silmek için Read Message History ile birlikte Manage Messages ve yavaş mod için Manage Channels. Ona Administrator vermekten kaçının.
Genellikle sebep rol sırasıdır: bot yalnızca en yüksek rolü kendi rolünün altında olan üyeler üzerinde işlem yapabilir, bu yüzden Server Settings'te botun rolünü yukarı taşıyın. Sunucu sahibine ve Administrator iznine sahip üyelere hiçbir şekilde timeout verilemez.
Toplu olarak hayır. Discord'un toplu silme özelliği tek seferde en fazla 100 mesaj kabul eder ve yalnızca iki haftadan yeni olanları. Daha eski mesajlar ancak tek tek silinebilir, bu da yavaştır.
Yalnızca mesajları kendisi okuyorsa; örneğin kelimeleri filtrelemek veya silinen mesajların metnini loglamak için. Slash komutları, timeout'lar, ban'lar ve purge onsuz da çalışır.
Moderasyon botunuzu barındırın
HytHost Discord bot hosting Python, Node.js, Java, Go, C#, Bun veya Lavalink çalıştırır, çöktükten sonra botu yeniden başlatır ve €0.89/ay'dan başlar.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursBu rehber işine yaradı mı?