Discord · دليل

كيف تصنع بوت إشراف على Discord

آخر تحديث October 11, 2026 6 دقيقة قراءة

في هذه الصفحة
  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 أولًا وانظر إن كان يكفي. يصبح البوت المخصص مجديًا عندما تريد أوامر يستخدمها مشرفوك، وقواعدك الخاصة، وسجلًا حقيقيًا.

ما الذي يضيفه بوت إشراف مخصص

  • أوامر سلاش للمشرفين: /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

هل كان هذا الدليل مفيدًا؟