كيف تصنع بوت إشراف على Discord
في هذه الصفحة
يحتاج خادم 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 أولًا وانظر إن كان يكفي. يصبح البوت المخصص مجديًا عندما تريد أوامر يستخدمها مشرفوك، وقواعدك الخاصة، وسجلًا حقيقيًا.
ما الذي يضيفه بوت إشراف مخصص
- أوامر سلاش للمشرفين:
/timeoutو/purgeو/slowmodeوالطرد والحظر، مع تسجيل السبب في كل مرة. - قناة لسجل الإشراف تضم الانضمامات والمغادرات والرسائل المحذوفة وكل إجراء يتخذه مشرفوك.
- قواعدك الخاصة: تحذيرات تتراكم حتى تنتهي بإسكات مؤقت، وتقييد الحسابات الجديدة، والسماح بالروابط في بعض القنوات فقط.
- كل شيء في مكان واحد، مضبوط على مقاس مجتمعك بدلًا من الإعدادات الافتراضية لبوت عام.
إن لم تصنع بوتًا من قبل، فاتبع أولًا دليل كيف تصنع بوت Discord لإنشاء التطبيق والحصول على التوكن وتشغيل أول أمر /ping. الكود أدناه يبني عليه.
الصلاحيات وترتيب الأدوار والـ intents
ادعُ البوت بالصلاحيات التي تستخدمها أوامره فقط:
| الإجراء | الصلاحية |
|---|---|
| إسكات عضو مؤقتًا (حتى 28 يومًا) | Moderate Members |
| طرد عضو | Kick Members |
| حظر عضو | Ban Members |
| حذف الرسائل | Manage Messages و Read Message History |
| تفعيل الوضع البطيء | Manage Channels |
ترتيب الأدوار مهم. لا يستطيع البوت التصرف إلا مع الأعضاء الذين يكون أعلى دور لديهم أدنى من أعلى دور لدى البوت. في Server Settings → Roles اسحب دور البوت فوق الأدوار التي يجب أن يشرف عليها. لا أحد يستطيع إسكات مالك الخادم أو من يملك Administrator.
الـ intents. لا تحتاج أوامر السلاش إلى أي 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 يومًا، والوضع البطيء يصل إلى 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 أيام.
تسجيل كل ما يحدث
- مرّر سببًا دائمًا. ترسله المكتبات إلى سجل التدقيق في Discord (Server Settings → Audit Log)، الذي يحتفظ بالمدخلات 45 يومًا.
- انشر كل إجراء أيضًا في قناة خاصة لسجل الإشراف: من نفّذه، وعلى من، ولماذا، وإلى متى. وعلى عكس سجل التدقيق، تحتفظ هذه القناة بالتاريخ للمدة التي تريدها.
- الانضمام والمغادرة يحتاجان إلى intent باسم Server Members؛ سجّل تاريخ إنشاء الحساب لتكشف الحسابات الجديدة المؤقتة التي تُنشأ للاستعمال مرة واحدة.
- الرسائل المحذوفة والمعدّلة لا يمكن تسجيلها مع نصها إلا إذا كان لدى البوت intent باسم Message Content.
تذكّر حد الحذف الجماعي: يحذف Discord حتى 100 رسالة في كل طلب ويرفض الرسائل الأقدم من أسبوعين، لذا فإن /purge مخصص للرسائل المزعجة الحديثة، لا لتنظيف قناة قديمة.
أبقِ البوت متصلًا
يواصل AutoMod عمله من دونك، لكن أوامرك وسجلاتك تتوقف لحظة توقف عملية البوت. بوت الإشراف الذي يعمل على حاسوب منزلي يكون غير متصل تمامًا حين ينام الحاسوب، والغارات نادرًا ما تنتظر ساعات الدوام.
على استضافة بوتات Discord من HytHost ترفع مشروعك، وتختار بيئة التشغيل (Node.js أو Python أو Java أو Go أو C# أو Bun أو Lavalink)، وتحفظ التوكن في متغير تشغيل بدلًا من الكود. تشغّل اللوحة البوت وتعيد تشغيله بعد أي انهيار. الإعداد الكامل في دليل كيف تستضيف بوت Discord يعمل 24/7.
بوت الإشراف لا يعمل إلا ما دام قيد التشغيل: استضافة بوتات Discord من HytHost تدعم Python وNode.js و5 بيئات تشغيل أخرى، من €0.89 شهريًا.
اطّلع على باقات استضافة البوتاتالأسئلة الشائعة
لكثير من الخوادم يكفي AutoMod: فهو يمنع الكلمات المفتاحية والكلمات الشائع الإبلاغ عنها وإزعاج الإشارات والرسائل المشتبه في أنها مزعجة، ويمكنه إسكات الأعضاء مؤقتًا. أضف بوتًا عندما يحتاج مشرفوك إلى أوامر مثل الحذف الجماعي للرسائل والوضع البطيء، أو قواعدك الخاصة، أو سجل كامل للإجراءات.
فقط ما تستخدمه أوامره: Moderate Members للإسكات المؤقت، وKick Members، وBan Members، وManage Messages مع Read Message History لحذف الرسائل، وManage Channels للوضع البطيء. تجنّب منحه Administrator.
السبب عادةً ترتيب الأدوار: لا يستطيع البوت التصرف إلا مع الأعضاء الذين يكون أعلى دور لديهم أدنى من دوره، لذا انقل دور البوت إلى مكان أعلى في Server Settings. أما مالك الخادم والأعضاء الذين يملكون Administrator فلا يمكن إسكاتهم مؤقتًا إطلاقًا.
ليس دفعة واحدة. يقبل الحذف الجماعي في Discord حتى 100 رسالة في المرة، وفقط الرسائل الأحدث من أسبوعين. أما الرسائل الأقدم فلا تُحذف إلا واحدة تلو الأخرى، وهذا بطيء.
فقط إذا كان يقرأ الرسائل بنفسه، مثلًا لفلترة الكلمات أو لتسجيل نص الرسائل المحذوفة. أوامر السلاش والإسكات المؤقت والحظر والحذف الجماعي تعمل من دونه.
استضف بوت الإشراف الخاص بك
استضافة بوتات Discord من HytHost تشغّل 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هل كان هذا الدليل مفيدًا؟