---
read_when:
    - پیکربندی پیام‌های کانال نوشته‌شده توسط ربات
    - تنظیم محافظت در برابر حلقهٔ بات‌به‌بات
sidebarTitle: Bot loop protection
summary: پیش‌فرض‌های محافظت در برابر حلقهٔ بات‌به‌بات و بازنویسی‌های کانال
title: محافظت در برابر حلقهٔ ربات
x-i18n:
    generated_at: "2026-07-27T16:13:11Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: d59d3b48dd5506e774282b880334df8970b05c4d001261ff7107e8e1678894db
    source_path: channels/bot-loop-protection.md
    workflow: 16
---

OpenClaw می‌تواند در کانال‌هایی که از `allowBots` پشتیبانی می‌کنند، پیام‌های نوشته‌شده توسط ربات‌های دیگر را بپذیرد. هنگامی که این مسیر فعال باشد، محافظت در برابر حلقهٔ جفتی مانع می‌شود دو هویت ربات به‌طور نامحدود به یکدیگر پاسخ دهند.

این محافظ توسط اجراکنندهٔ اصلی پاسخ ورودی اعمال می‌شود. هر کانال پشتیبان، رویداد ورودی خود را به داده‌های عمومی نگاشت می‌کند: حساب یا دامنه، شناسهٔ مکالمه، شناسهٔ ربات فرستنده و شناسهٔ ربات گیرنده. هسته جفت مشارکت‌کنندگان را در هر دو جهت ردیابی می‌کند (A به B و B به A یک جفت محسوب می‌شوند)، یک سهمیهٔ پنجرهٔ لغزان اعمال می‌کند و پس از تجاوز از سهمیه، جفت را برای یک دورهٔ توقف موقت سرکوب می‌کند.

## پیش‌فرض‌ها

محافظت در برابر حلقهٔ جفتی هرگاه کانالی اجازه دهد پیام‌های نوشته‌شده توسط ربات به مرحلهٔ توزیع برسند، فعال است. پیش‌فرض‌های داخلی:

| کلید                  | پیش‌فرض | معنا                                             |
| -------------------- | ------- | --------------------------------------------------- |
| `enabled`            | `true`  | محافظ برای کانال‌هایی که از آن پشتیبانی می‌کنند فعال است.          |
| `maxEventsPerWindow` | `20`    | تعداد رویدادهایی که یک جفت ربات می‌تواند درون پنجره مبادله کند.   |
| `windowSeconds`      | `60`    | طول پنجرهٔ لغزان.                              |
| `cooldownSeconds`    | `60`    | مدت سرکوب پس از تجاوز جفت از سهمیه. |

این محافظ بر پیام‌های نوشته‌شده توسط انسان، استقرارهای تک‌رباتی، فیلترکردن پیام‌های خود ربات یا پاسخ‌های رباتی که زیر سهمیه باقی می‌مانند تأثیری ندارد.

## پیکربندی پیش‌فرض‌های مشترک

`channels.defaults.botLoopProtection` را یک‌بار تنظیم کنید تا همهٔ کانال‌های پشتیبان خط مبنای یکسانی داشته باشند. کانال‌ها همچنین ممکن است بازنویسی‌های محدودتری ارائه دهند؛ Feishu عمداً فقط از همین خط مبنای مشترک استفاده می‌کند.

```json5
{
  channels: {
    defaults: {
      botLoopProtection: {
        maxEventsPerWindow: 20,
        windowSeconds: 60,
        cooldownSeconds: 60,
      },
    },
  },
}
```

`enabled: false` را فقط زمانی تنظیم کنید که خط‌مشی کانال شما عمداً مکالمات ربات‌به‌ربات را بدون سرکوب خودکار مجاز می‌داند.

## بازنویسی برای هر کانال، حساب یا اتاق

کانال‌های پشتیبان پیکربندی خود را کلیدبه‌کلید روی پیش‌فرض مشترک اعمال می‌کنند. ترتیب تقدم، از محدودترین:

1. `channels.<channel>.<room-or-space>.botLoopProtection`، هنگامی که کانال از بازنویسی برای هر مکالمه پشتیبانی می‌کند
2. `channels.<channel>.accounts.<account>.botLoopProtection`، هنگامی که کانال از حساب‌ها پشتیبانی می‌کند
3. `channels.<channel>.botLoopProtection`، هنگامی که کانال از پیش‌فرض‌های سطح بالا پشتیبانی می‌کند
4. `channels.defaults.botLoopProtection`
5. پیش‌فرض‌های داخلی

```json5
{
  channels: {
    defaults: {
      botLoopProtection: {
        maxEventsPerWindow: 20,
      },
    },
    discord: {
      botLoopProtection: {
        maxEventsPerWindow: 8,
      },
      accounts: {
        secondary: {
          allowBots: true,
          botLoopProtection: {
            maxEventsPerWindow: 5,
            cooldownSeconds: 90,
          },
        },
      },
    },
    googlechat: {
      allowBots: true,
      groups: {
        "spaces/AAAA": {
          botLoopProtection: {
            maxEventsPerWindow: 5,
          },
        },
      },
    },
    matrix: {
      allowBots: "mentions",
      groups: {
        "!roomid:example.org": {
          botLoopProtection: {
            maxEventsPerWindow: 5,
          },
        },
      },
    },
    slack: {
      allowBots: "mentions",
      botLoopProtection: {
        maxEventsPerWindow: 8,
      },
    },
  },
}
```

## پشتیبانی کانال‌ها

- Discord: داده‌های بومی `author.bot`، کلیدگذاری‌شده بر اساس حساب Discord، کانال و جفت ربات.
- Feishu: داده‌های بومی `sender_type=bot` برای پیام‌های گروهی پذیرفته‌شدهٔ نوشته‌شده توسط ربات، کلیدگذاری‌شده بر اساس حساب Feishu، گفت‌وگو و جفت ربات. Feishu فقط از `channels.defaults.botLoopProtection` استفاده می‌کند.
- Google Chat: داده‌های بومی `sender.type=BOT` برای پیام‌های پذیرفته‌شدهٔ نوشته‌شده توسط ربات، کلیدگذاری‌شده بر اساس حساب، فضا و جفت ربات.
- Matrix: حساب‌های ربات Matrix پیکربندی‌شده، کلیدگذاری‌شده بر اساس حساب Matrix، اتاق و جفت ربات پیکربندی‌شده.
- Slack: داده‌های بومی `bot_id` برای پیام‌های پذیرفته‌شدهٔ نوشته‌شده توسط ربات، کلیدگذاری‌شده بر اساس حساب Slack، کانال و جفت ربات.

کانال‌هایی که هویت قابل‌اعتمادی از ربات ورودی ارائه نمی‌دهند، همچنان از فیلترهای معمول پیام خود ربات و خط‌مشی دسترسی استفاده می‌کنند. آن‌ها نباید تا زمانی که بتوانند هر دو مشارکت‌کنندهٔ جفت ربات را شناسایی کنند، این محافظ را فعال کنند.

برای جزئیات پیاده‌سازی Plugin به [زمان اجرای SDK](/fa/plugins/sdk-runtime#reusable-runtime-utilities) مراجعه کنید.
