Skip to content

Discord

عامل Triggerfish خود را به Discord متصل کنید تا بتواند در کانال‌های سرور و پیام‌های مستقیم پاسخ دهد. آداپتور از discord.js برای اتصال به Discord Gateway استفاده می‌کند.

طبقه‌بندی پیش‌فرض

Discord به‌صورت پیش‌فرض طبقه‌بندی PUBLIC دارد. سرورهای Discord اغلب شامل ترکیبی از اعضای مورد اعتماد و بازدیدکنندگان عمومی هستند، بنابراین PUBLIC پیش‌فرض امن است. اگر سرور شما خصوصی و مورد اعتماد است، می‌توانید این را افزایش دهید.

راه‌اندازی

مرحله ۱: ایجاد برنامه Discord

۱. به پرتال توسعه‌دهندگان Discord بروید ۲. روی New Application کلیک کنید ۳. برنامه خود را نام‌گذاری کنید (مثلاً «Triggerfish») ۴. روی Create کلیک کنید

مرحله ۲: ایجاد کاربر ربات

۱. در برنامه خود، به Bot در نوار کناری بروید ۲. روی Add Bot کلیک کنید (اگر قبلاً ایجاد نشده) ۳. زیر نام کاربری ربات، روی Reset Token کلیک کنید تا توکن جدید تولید شود ۴. توکن ربات را کپی کنید

توکن خود را مخفی نگه دارید توکن ربات شما کنترل کامل ربات را اعطا می‌کند. هرگز آن را در کنترل منبع ثبت نکنید یا به اشتراک عمومی نگذارید. :::

مرحله ۳: پیکربندی Intentهای ممتاز

همچنان در صفحه Bot، این Intentهای ممتاز Gateway را فعال کنید:

  • Message Content Intent — برای خواندن محتوای پیام الزامی است
  • Server Members Intent — اختیاری، برای جستجوی اعضا

مرحله ۴: دریافت شناسه کاربر Discord

۱. Discord را باز کنید ۲. به Settings > Advanced بروید و Developer Mode را فعال کنید ۳. در هر جای Discord روی نام کاربری خود کلیک کنید ۴. روی Copy User ID کلیک کنید

این شناسه snowflake است که Triggerfish برای تأیید هویت مالک استفاده می‌کند.

مرحله ۵: تولید لینک دعوت

۱. در پرتال توسعه‌دهندگان، به OAuth2 > URL Generator بروید ۲. زیر Scopes، bot را انتخاب کنید ۳. زیر Bot Permissions، انتخاب کنید:

  • Send Messages
  • Read Message History
  • View Channels ۴. URL تولیدشده را کپی کنید و در مرورگر باز کنید ۵. سرور مورد نظر برای افزودن ربات را انتخاب کنید و روی Authorize کلیک کنید

مرحله ۶: پیکربندی Triggerfish

کانال Discord را به triggerfish.yaml اضافه کنید:

yaml
channels:
  discord:
    # botToken در کلیدزنجیر سیستم‌عامل ذخیره شده
    ownerId: "123456789012345678"
گزینهنوعالزامیتوضیحات
botTokenstringبلهتوکن ربات Discord
ownerIdstringتوصیه‌شدهشناسه کاربر Discord شما (snowflake) برای تأیید مالک
classificationstringخیرسطح طبقه‌بندی (پیش‌فرض: PUBLIC)

مرحله ۷: شروع Triggerfish

bash
triggerfish stop && triggerfish start

در کانالی که ربات حاضر است پیامی بفرستید یا مستقیماً به آن DM بدهید تا اتصال را تأیید کنید.

هویت مالک

Triggerfish وضعیت مالک را با مقایسه شناسه کاربر Discord فرستنده با ownerId پیکربندی‌شده تعیین می‌کند. این بررسی در کد قبل از دیدن پیام توسط LLM رخ می‌دهد:

  • مطابقت — پیام دستور مالک است
  • عدم مطابقت — پیام ورودی خارجی با Taint PUBLIC است

اگر ownerId پیکربندی نشده باشد، تمام پیام‌ها به‌عنوان آمده از مالک برخورد می‌شوند.

همیشه شناسه مالک را تنظیم کنید اگر ربات شما در سروری با اعضای دیگر است، همیشه ownerId را پیکربندی کنید. بدون آن، هر عضو سرور می‌تواند به عامل شما دستور بدهد. :::

تقسیم‌بندی پیام

Discord محدودیت ۲٬۰۰۰ کاراکتری دارد. وقتی عامل پاسخی بلندتر از این تولید می‌کند، Triggerfish به‌صورت خودکار آن را به چند پیام تقسیم می‌کند. تقسیم‌کننده روی خطوط جدید یا فاصله‌ها برای حفظ خوانایی می‌شکند.

رفتار ربات

آداپتور Discord:

  • پیام‌های خود را نادیده می‌گیرد — ربات به پیام‌هایی که خودش می‌فرستد پاسخ نمی‌دهد
  • در تمام کانال‌های قابل دسترس گوش می‌دهد — کانال‌های سرور، DM گروهی و پیام‌های مستقیم
  • نیاز به Message Content Intent دارد — بدون این، ربات رویدادهای پیام خالی دریافت می‌کند

نشانگرهای تایپ

Triggerfish وقتی عامل در حال پردازش درخواست است، نشانگرهای تایپ به Discord می‌فرستد. Discord رویدادهای تایپ کاربران را به‌صورت قابل اعتماد به ربات‌ها افشا نمی‌کند، بنابراین این فقط ارسال است.

چت گروهی

ربات می‌تواند در کانال‌های سرور شرکت کند. رفتار گروه را پیکربندی کنید:

yaml
groups:
  default_behavior: "mentioned-only"
  overrides:
    - channel: discord
      behavior: "always"
رفتارتوضیحات
mentioned-onlyفقط وقتی ربات @mention شود پاسخ می‌دهد
alwaysبه تمام پیام‌ها در کانال پاسخ می‌دهد

تغییر طبقه‌بندی

yaml
channels:
  discord:
    # botToken در کلیدزنجیر سیستم‌عامل ذخیره شده
    ownerId: "123456789012345678"
    classification: INTERNAL

سطوح معتبر: PUBLIC، INTERNAL، CONFIDENTIAL، RESTRICTED.