ربات Discord
یک ربات Discord را به 3x-ui متصل کنید تا اعلانهای بیدرنگ Embed، گزارشهای دورهای همراه با نسخه پشتیبان پایگاهداده و فرمانهای تعاملی را در یک کانال دریافت کنید.
3x-ui یکپارچگی کاملی با Discord فراهم میکند: ارسال هشدارهای بیدرنگ از طریق گذرگاه رویدادها (EventBus)، گزارشهای دورهای وضعیت سرور بههمراه فایل پشتیبان پایگاهداده، و پردازش فرمانهای تعاملی از طریق Discord Gateway.
اعلانهای لحظهای و گزارشهای دورهای از تماسهای خروجی HTTPS به Discord REST API v10 استفاده میکنند. فرمانهای تعاملی ربات نیز از طریق یک اتصال پسزمینه WebSocket امن به Discord Gateway برقرار میشوند.
راهاندازی
ساخت برنامه و ربات در Discord
- وارد Discord Developer Portal شوید.
- روی New Application در بالا سمت راست کلیک کنید، یک نام مشخص کنید (مثلاً
3x-ui Notifier) و تایید نمایید. - در نوار کناری چپ، به تب Bot بروید.
- روی Reset Token (یا Add Bot) کلیک کنید و Bot Token را کپی نمایید. این توکن را محفوظ نگه دارید.
- در بخش Privileged Gateway Intents، گزینه Message Content Intent را فعال کنید (برای خواندن فرمانهایی مانند
!statusضروری است).
دعوت ربات به سرور Discord
- در پرتال توسعهدهندگان، به OAuth2 → URL Generator بروید.
- در بخش Scopes، گزینه
botرا علامت بزنید. - در بخش Bot Permissions، دسترسیهای زیر را انتخاب کنید:
- Send Messages (ارسال پیام)
- Embed Links (ارسال امبدها)
- Attach Files (پیوست فایلها — جهت ارسال نسخه پشتیبان پایگاهداده ضروری است)
- Read Message History (خواندن تاریخچه پیامها)
- لینک تولیدشده در پایین صفحه را کپی کرده و در مرورگر باز کنید تا ربات به سرور شما اضافه شود.
کپی کردن Channel ID
- در کلاینت دیسکورد، حالت توسعهدهنده را فعال کنید: User Settings → Advanced → Developer Mode (روشن).
- روی کانالی که میخواهید اعلانها و تعامل با ربات در آن انجام شود راستکلیک کرده و Copy Channel ID را انتخاب کنید.
- مطمئن شوید ربات دسترسی مشاهده و ارسال پیام در این کانال را دارد.
پیکربندی پنل
- در پنل 3x-ui، به تنظیمات پنل → ربات Discord (یا آدرس
/settings#discord) بروید. - در بخش عمومی:
- گزینه فعالسازی اعلانهای Discord را روشن کنید.
- Bot Token و Channel ID خود را وارد کنید.
- شناسه کاربری عددی دیسکورد خود را در شناسههای کاربری ادمین وارد نمایید (راستکلیک روی نام خودتان → Copy User ID؛ شناسههای متعدد را با کاما جدا کنید).
- زبان مورد نظر خود برای ربات را انتخاب کنید.
- در بخش اعلانها:
- زمانبندی گزارشها را تنظیم کنید (مثلاً
@daily،@weeklyیا عبارت crontab سفارشی). - در صورت تمایل، گزینه پشتیبانگیری پایگاهداده را فعال کنید تا فایل
x-ui.dbبهصورت خودکار ضمیمه گزارشها شود. - رویدادهای مورد نظر برای دریافت هشدار و آستانههای بار CPU/RAM را تنظیم نمایید.
- زمانبندی گزارشها را تنظیم کنید (مثلاً
- روی ارسال اعلان آزمایشی کلیک کنید تا از صحت ارتباط مطمئن شوید.
- برای اعمال تغییرات روی ذخیره کلیک نمایید.
فرمانهای ربات
هنگام فعال بودن، ربات به فرمانهای ارسالشده در کانال پیکربندیشده گوش میدهد (پشتیبانی از هر دو پیشوند ! و /). تنها کاربرانی که شناسهی آنها در شناسههای کاربری ادمین ثبت شده مجاز به اجرای فرمانها هستند؛ پیامهای سایر کاربران نادیده گرفته میشود و در صورت خالی بودن این فیلد، اجرای فرمانها غیرفعال خواهد بود. فرمان !backup فایل پایگاهداده را در کانال ارسال میکند، بنابراین کانالی را انتخاب کنید که فقط ادمینها به آن دسترسی داشته باشند:
| فرمان | عملکرد |
|---|---|
!status | نمایش بار پردازشی سیستم، مصرف RAM، وضعیت هسته Xray، اتصالات و تعداد کاربران آنلاین. |
!report | تولید و ارسال فوری گزارش کامل وضعیت سرور و پروکسی. |
!backup | ارسال فوری فایل نسخه پشتیبان پایگاهداده (x-ui.db) و config.json. |
!usage <email> | بررسی مصرف ترافیک (دانلود/آپلود)، سقف حجم و تاریخ انقضای یک کلاینت خاص. |
!inbounds | فهرست تمام اینباندهای فعال به همراه پورت، پروتکل، ترافیک و تعداد کلاینتها. |
!restart | راهاندازی مجدد ایمن هسته Xray بدون نیاز به ریاستارت پنل تحت وب. |
!help | نمایش فهرست فرمانهای در دسترس ربات. |
هشدارهای رویدادها
هشدارها بهصورت ساختاریافته در قالب Discord Embed همراه با رنگبندی تشخیصی ارسال میشوند:
| رویداد | نشانگر | توضیح |
|---|---|---|
xray.crash | 🔴 قرمز | کرش کردن هسته Xray؛ همراه با علت و زمان دقیق |
outbound.down | 🔴 قرمز | شکست در آزمون اتصال اوتباند |
outbound.up | 🟢 سبز | برقراری مجدد اتصال اوتباند |
node.down | 🔴 قرمز | خارج از دسترس شدن یا قطع اتصال نود راه دور |
node.up | 🟢 سبز | اتصال مجدد و بازگشت سلامت نود راه دور |
cpu.high | 🟠 نارنجی | عبور میزان مصرف CPU از آستانه تعیینشده (discordCpu) |
memory.high | 🟠 نارنجی | عبور میزان مصرف RAM از آستانه تعیینشده (discordMemory) |
login.attempt | 🟢 / 🔴 | تلاش برای ورود به پنل تحت وب همراه با نام کاربری، IP و وضعیت ورود |
هشدارهای ورود فقط نام کاربری و آدرس IP کلاینت را گزارش میدهند. رمزهای عبور هرگز ذخیره یا ارسال نمیشوند.
راهنمای تنظیمات
| پارامتر | مقدار پیشفرض | توضیح |
|---|---|---|
discordBotEnable | false | کلید اصلی فعالسازی ربات و هشدارهای Discord. |
discordBotToken | (محرمانه) | توکن ربات دریافتی از Discord Developer Portal. |
discordChannelId | (خالی) | شناسه عددی (Snowflake ID) کانال مقصد در دیسکورد. |
discordAdminIds | (خالی) | شناسههای عددی کاربران مجاز به اجرای فرمانها (با کاما جدا شوند). |
discordLang | en-US | زبان پیامها و گزارشهای ارسالی ربات دیسکورد. |
discordRunTime | @daily | زمانبندی Cron برای ارسال خودکار گزارش وضعیت. |
discordBotBackup | false | ضمیمه کردن خودکار فایل نسخه پشتیبان (x-ui.db) به گزارشها. |
discordEnabledEvents | login.attempt,cpu.high | فهرست رویدادهای فعال برای ارسال هشدار (با کاما جدا شوند). |
discordCpu | 80 | آستانه درصد مصرف پردازنده (CPU) جهت ارسال هشدار (۰ تا ۱۰۰). |
discordMemory | 80 | آستانه درصد مصرف رم (RAM) جهت ارسال هشدار (۰ تا ۱۰۰). |
عیبیابی
- خطای invalid bot token (401): مطمئن شوید که توکن ربات را بهطور کامل از تب Bot کپی کردهاید، نه Client Secret یا Application ID.
- خطای missing permissions (403): بررسی کنید که رول ربات در کانال یا دستهبندی مربوطه دارای دسترسیهای Send Messages، Embed Links و Attach Files باشد.
- عدم پاسخگویی به فرمانها: بررسی کنید که شناسهی عددی شما در Admin User IDs ثبت شده باشد. همچنین مطمئن شوید گزینه Message Content Intent در پرتال دیسکورد روشن است و پنل را ریاستارت کنید؛ دیسکورد در صورت نبود این دسترسی اتصال را قطع میکند.
- خطای channel not found (404): از صحت Channel ID اطمینان حاصل کنید و بررسی کنید که ربات حتماً در سروری که کانال در آن قرار دارد عضو باشد.
- پراکسی برای درخواستهای خروجی: اگر سرور شما برای اتصال به دیسکورد به پروکسی نیاز دارد، در تنظیمات پنل گزینه Panel Outbound را پیکربندی کنید؛ درخواستهای دیسکورد بهصورت خودکار از طریق آن هدایت میشوند.

3x-ui