diff --git a/CLAUDE.md b/CLAUDE.md
index 359a27582..13342bfb6 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -58,8 +58,8 @@ file locations when it can answer in one hop.
- `internal/web/` — Gin server (embeds `dist/` + `translation/`).
- `controller/` — panel + REST API handlers; OpenAPI at /panel/api/openapi.json.
- `service/` — business logic (InboundService, SettingService, XrayService,
- node sync); subpackages tgbot/, email/, outbound/, panel/, integration/.
- - `job/` — 18 cron jobs (traffic, fail2ban IP-limit, node heartbeat/sync, LDAP,
+ node sync); subpackages tgbot/, discord/, email/, outbound/, panel/, integration/.
+ - `job/` — 19 cron jobs (traffic, fail2ban IP-limit, node heartbeat/sync, LDAP,
CPU/memory watchdogs, …); full table in `docs/architecture.md` §5.4.
- `middleware/`, `entity/`, `global/`, `session/` (CSRF), `network/`,
`runtime/` (master/sub-node over mTLS), `websocket/`.
diff --git a/README.ar_EG.md b/README.ar_EG.md
index 3e737940d..7204d4847 100644
--- a/README.ar_EG.md
+++ b/README.ar_EG.md
@@ -37,7 +37,7 @@
- **دعم العقد المتعددة** — إدارة وتوسيع عبر عدة خوادم من لوحة واحدة، بما في ذلك استنساخ الاتصالات الواردة على عقد أخرى.
- **الاتصالات الصادرة والتوجيه** — WARP، NordVPN، PIA، قواعد توجيه مخصصة، موازنات تحميل مع تجاوز الفشل بين الموازنات، وتسلسل الوكلاء الصادرة. ويمكن تصفّح فئات geosite و geoip المضمّنة مباشرةً من محرر القواعد.
- **خادم اشتراك مدمج** — إخراج raw و JSON و Clash يُختار تلقائيًا حسب User-Agent الخاص بالعميل، مع [قوالب صفحات مخصصة](docs/custom-subscription-templates.md).
-- **روبوت تيليجرام** للمراقبة والإدارة عن بُعد.
+- **روبوتات تيليجرام وديسكورد** للمراقبة والإدارة عن بُعد.
- **واجهة RESTful API** مع رموز وصول محدودة النطاق وقابلة لانتهاء الصلاحية، ومرجع API داخل اللوحة.
- **لوحة قابلة للتثبيت (PWA)** — ثبّت 3X-UI على سطح المكتب أو شاشة هاتفك الرئيسية.
- **تخزين مرن** — SQLite (افتراضي) أو PostgreSQL.
diff --git a/README.es_ES.md b/README.es_ES.md
index 8387ccf75..3a96d7ba6 100644
--- a/README.es_ES.md
+++ b/README.es_ES.md
@@ -37,7 +37,7 @@ Construido como un fork mejorado del proyecto X-UI original, 3X-UI añade un sop
- **Soporte multinodo** — gestiona y escala a través de varios servidores desde un único panel, incluida la clonación de entradas en otros nodos.
- **Salida y enrutamiento** — WARP, NordVPN, PIA, reglas de enrutamiento personalizadas, balanceadores de carga con conmutación por error entre balanceadores y encadenamiento de proxy de salida. Las categorías geosite y geoip incluidas se pueden explorar directamente desde el editor de reglas.
- **Servidor de suscripción integrado** — salida raw, JSON y Clash, seleccionada automáticamente según el User-Agent del cliente, además de [plantillas de página personalizables](docs/custom-subscription-templates.md).
-- **Bot de Telegram** para monitorización y gestión remotas.
+- **Bots de Telegram y Discord** para monitorización y gestión remotas.
- **API RESTful** con tokens de alcance limitado y caducidad opcional, y una referencia de la API dentro del panel.
- **Panel instalable (PWA)** — ancla 3X-UI al escritorio o a la pantalla de inicio del móvil.
- **Almacenamiento flexible** — SQLite (predeterminado) o PostgreSQL.
diff --git a/README.fa_IR.md b/README.fa_IR.md
index 6da2425df..aaaf25f03 100644
--- a/README.fa_IR.md
+++ b/README.fa_IR.md
@@ -37,7 +37,7 @@
- **پشتیبانی از چند نود** — مدیریت و مقیاسدهی روی چندین سرور از یک پنل واحد، از جمله کلونکردن اینباندها روی نودهای دیگر.
- **اوتباند و مسیریابی** — WARP، NordVPN، PIA، قوانین مسیریابی سفارشی، متعادلکنندههای بار (load balancer) با فالبک بین متعادلکنندهها و زنجیرهکردن پراکسی اوتباند. دستهبندیهای geosite و geoip همراهشده مستقیماً از ویرایشگر قوانین قابل مرور هستند.
- **سرور سابسکریپشن داخلی** — خروجی raw، JSON و Clash که بر پایهی User-Agent کلاینت بهصورت خودکار انتخاب میشود، بههمراه [قالبهای صفحهی سفارشی](docs/custom-subscription-templates.md).
-- **ربات تلگرام** برای نظارت و مدیریت از راه دور.
+- **رباتهای تلگرام و دیسکورد** برای نظارت و مدیریت از راه دور.
- **RESTful API** با توکنهای محدودشده (scoped) و دارای انقضای اختیاری، بههمراه مرجع API درونپنل.
- **پنل قابل نصب (PWA)** — 3X-UI را به دسکتاپ یا صفحهی اصلی گوشی خود سنجاق کنید.
- **ذخیرهسازی منعطف** — SQLite (پیشفرض) یا PostgreSQL.
diff --git a/README.md b/README.md
index 6720da6b8..adc47d7b4 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Built as an enhanced fork of the original X-UI project, 3X-UI adds broader proto
- **Multi-node support** — manage and scale across multiple servers from a single panel, including cloning inbounds onto other nodes.
- **Outbound & routing** — WARP, NordVPN, PIA, custom routing rules, load balancers with balancer-to-balancer fallback, and outbound proxy chaining. Bundled geosite and geoip categories are browsable straight from the rule editor.
- **Built-in subscription server** — raw, JSON, and Clash output, auto-selected from the client's User-Agent, plus [custom page templates](docs/custom-subscription-templates.md).
-- **Telegram bot** for remote monitoring and management.
+- **Telegram and Discord bots** for remote monitoring and management.
- **RESTful API** with scoped, optionally expiring tokens and an in-panel API reference.
- **Installable panel (PWA)** — pin 3X-UI to a desktop or phone home screen.
- **Flexible storage** — SQLite (default) or PostgreSQL.
diff --git a/README.ru_RU.md b/README.ru_RU.md
index 1a5f16878..3a64ab15b 100644
--- a/README.ru_RU.md
+++ b/README.ru_RU.md
@@ -37,7 +37,7 @@
- **Поддержка нескольких узлов** — управление и масштабирование на несколько серверов из одной панели, включая клонирование входящих на другие узлы.
- **Исходящие подключения и маршрутизация** — WARP, NordVPN, PIA, пользовательские правила маршрутизации, балансировщики нагрузки с переключением между балансировщиками и цепочки исходящих прокси. Встроенные категории geosite и geoip можно просматривать прямо в редакторе правил.
- **Встроенный сервер подписок** — вывод в форматах raw, JSON и Clash, выбираемый автоматически по User-Agent клиента, а также [пользовательские шаблоны страниц](docs/custom-subscription-templates.md).
-- **Telegram-бот** для удалённого мониторинга и управления.
+- **Telegram- и Discord-боты** для удалённого мониторинга и управления.
- **RESTful API** с токенами ограниченной области действия и необязательным сроком действия, а также справочником API внутри панели.
- **Устанавливаемая панель (PWA)** — закрепите 3X-UI на рабочем столе или главном экране телефона.
- **Гибкое хранилище** — SQLite (по умолчанию) или PostgreSQL.
diff --git a/README.tr_TR.md b/README.tr_TR.md
index 7f97e749d..d89298c96 100644
--- a/README.tr_TR.md
+++ b/README.tr_TR.md
@@ -37,7 +37,7 @@ Orijinal X-UI projesinin geliştirilmiş bir çatallaması (fork) olarak inşa e
- **Çoklu düğüm (Multi-node) desteği** — Tek bir panel üzerinden birden fazla sunucuyu yönetin ve ölçeklendirin; gelen bağlantıları diğer düğümlere klonlayın.
- **Giden bağlantı (Outbound) ve yönlendirme** — WARP, NordVPN, PIA, özel yönlendirme kuralları, dengeleyiciler arası yük devretme destekli yük dengeleyiciler (load balancers) ve giden bağlantı proxy zincirleme (proxy chaining). Pakete dahil geosite ve geoip kategorileri doğrudan kural düzenleyicisinden taranabilir.
- **Dahili abonelik sunucusu** — İstemcinin User-Agent bilgisine göre otomatik seçilen raw, JSON ve Clash çıktısı ve [özel sayfa şablonları](docs/custom-subscription-templates.md).
-- Uzaktan izleme ve yönetim için **Telegram botu**.
+- Uzaktan izleme ve yönetim için **Telegram ve Discord botları**.
- Kapsamı sınırlanmış, isteğe bağlı olarak süresi dolan token'lar ve panel içi API referansı sunan **RESTful API**.
- **Kurulabilir panel (PWA)** — 3X-UI'yi masaüstüne veya telefon ana ekranına sabitleyin.
- **Esnek depolama** — SQLite (varsayılan) veya PostgreSQL.
diff --git a/README.zh_CN.md b/README.zh_CN.md
index 913d15edf..277af2eaa 100644
--- a/README.zh_CN.md
+++ b/README.zh_CN.md
@@ -37,7 +37,7 @@
- **多节点支持** — 从单一面板管理并扩展到多台服务器,并可将入站克隆到其他节点。
- **出站与路由** — WARP、NordVPN、PIA、自定义路由规则、支持均衡器间回退的负载均衡器,以及出站代理链。内置的 geosite 与 geoip 分类可直接在规则编辑器中浏览。
- **内置订阅服务器** — 提供 raw、JSON 和 Clash 输出,可依据客户端 User-Agent 自动选择,并支持[自定义页面模板](docs/custom-subscription-templates.md)。
-- **Telegram 机器人**,用于远程监控和管理。
+- **Telegram 和 Discord 机器人**,用于远程监控和管理。
- **RESTful API**,支持带作用域、可设置有效期的令牌,并提供面板内置的 API 参考文档。
- **可安装面板 (PWA)** — 将 3X-UI 固定到桌面或手机主屏幕。
- **灵活的存储** — SQLite(默认)或 PostgreSQL。
diff --git a/docs/README.md b/docs/README.md
index d73d2457d..d97d507d3 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -43,7 +43,7 @@ The documentation walks you through 3x-ui from first install to day-to-day opera
- **Getting Started** — installation, first login, and updating or uninstalling the panel.
- **Configuration** — the panel, inbounds, REALITY, transports, clients, subscriptions, and share links.
-- **Operations** — reverse proxy, multi-node setups, outbounds & routing, backup/restore, the Telegram bot, and security.
+- **Operations** — reverse proxy, multi-node setups, outbounds & routing, backup/restore, Telegram and Discord bots, and security.
- **Reference** — environment variables, the database, ports & firewall, and the HTTP API.
- **Help** — troubleshooting, FAQ, migration, and how to contribute.
diff --git a/docs/architecture.md b/docs/architecture.md
index 6f4d6afb4..2561f2dbd 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -65,7 +65,7 @@ Two key ideas that explain most of the complexity:
- Scheduler: **robfig/cron/v3** (seconds-precision) for all background jobs.
- Xray: **xtls/xray-core** vendored as a library; the panel talks to the running core over
its **gRPC API** and also shells out to manage the process.
-- Telegram bot: **mymmrac/telego**. i18n: **nicksnyder/go-i18n**.
+- Bots: Telegram bot (**mymmrac/telego**), Discord bot (Discord REST API v10 + **gorilla/websocket** Gateway v10). i18n: **nicksnyder/go-i18n**.
- Misc: gorilla/websocket, gopsutil (system stats), go-qrcode, gotp (2FA TOTP).
**Frontend (`frontend/`):**
@@ -217,6 +217,7 @@ node heartbeat every 5s, periodic traffic resets (hourly/daily/weekly/monthly).
│ │ │ │ ├── user.go # admin user auth (bcrypt)
│ │ │ │ ├── api_token.go # API token CRUD (SHA-256 hashed)
│ │ │ │ └── websocket.go # WS hub / push service
+│ │ │ ├── discord/ # Discord bot client, Gateway v10, and subscriber
│ │ │ └── tgbot/ # Telegram bot command handlers
│ │ ├── runtime/ # ⭐⭐ The Local/Remote node abstraction (see §5.2)
│ │ │ ├── runtime.go # the Runtime interface (the contract)
@@ -372,27 +373,28 @@ Periodic resets: `job/periodic_traffic_reset_job.go` (keyed off `Inbound.Traffic
All registered in `web.go` → `startTask()`. Each is a struct with a `Run()` method in `internal/web/job/`:
-| Schedule | Job | Purpose / condition |
-| ------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
-| `@every 1s` | `check_xray_running_job` | Restart Xray if it died (2 consecutive down checks) |
-| `@every 30s` | (inline func in `startTask`) | Debounced Xray restart — consumes the "need restart" flag (§5.1) |
-| `@every 5s` | `xray_traffic_job` | Pull traffic stats from Xray (5s start delay) |
-| `@every 5s` | `node_heartbeat_job` | Probe child nodes (online/offline) |
-| `@every 5s` | `node_traffic_sync_job` | Pull + merge node traffic; push reconciliation |
-| `@every 10s` | `check_client_ip_job` | Enforce per-client IP limits |
-| `@every 10s` | `mtproto_job` | Reconcile `mtg` sidecars against enabled MTProto inbounds |
-| `@every 10s` | `amneziawg_job` | Reconcile embedded AmneziaWG interfaces against enabled local inbounds |
-| `@every 5m` | `outbound_subscription_job` | Refresh outbound provider configs |
-| `@every 10m` | `clear_logs_job` (`PruneXrayLogsJob`) | Truncate Xray access/error logs once either exceeds 64 MiB |
-| `@hourly` | `warp_ip_job`, `periodic_traffic_reset_job("hourly")` | WARP IP rotation; traffic resets |
-| `@daily` | `clear_logs_job`, `periodic_traffic_reset_job("daily")`, `periodic_traffic_reset_job("monthly")` | IP-limit and Xray access/error log cleanup; daily resets and due monthly resets |
-| `@weekly` | `periodic_traffic_reset_job("weekly")` | Weekly traffic resets |
-| default `@every 1m` | `ldap_sync_job` | Only if LDAP enabled; schedule configurable |
-| default `@daily` | `stats_notify_job` | Only if TG bot enabled; schedule configurable |
-| `@every 2m` | `check_hash_storage` | Only if TG bot enabled; expires bot callback hashes |
-| `@every 1m` | `check_cpu_usage` | Only if a CPU alarm is configured (TG or email); publishes `cpu.high` |
-| `@every 1m` | `check_memory_usage` | Only if a memory alarm is configured; publishes `memory.high` |
-| configurable | `free_os_memory` | Only if `sys.MemoryReleaseIntervalMinutes() > 0`; returns heap to OS |
+| Schedule | Job | Purpose / condition |
+| ------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
+| `@every 1s` | `check_xray_running_job` | Restart Xray if it died (2 consecutive down checks) |
+| `@every 30s` | (inline func in `startTask`) | Debounced Xray restart — consumes the "need restart" flag (§5.1) |
+| `@every 5s` | `xray_traffic_job` | Pull traffic stats from Xray (5s start delay) |
+| `@every 5s` | `node_heartbeat_job` | Probe child nodes (online/offline) |
+| `@every 5s` | `node_traffic_sync_job` | Pull + merge node traffic; push reconciliation |
+| `@every 10s` | `check_client_ip_job` | Enforce per-client IP limits |
+| `@every 10s` | `mtproto_job` | Reconcile `mtg` sidecars against enabled MTProto inbounds |
+| `@every 10s` | `amneziawg_job` | Reconcile embedded AmneziaWG interfaces against enabled local inbounds |
+| `@every 5m` | `outbound_subscription_job` | Refresh outbound provider configs |
+| `@every 10m` | `clear_logs_job` (`PruneXrayLogsJob`) | Truncate Xray access/error logs once either exceeds 64 MiB |
+| `@hourly` | `warp_ip_job`, `periodic_traffic_reset_job("hourly")` | WARP IP rotation; traffic resets |
+| `@daily` | `clear_logs_job`, `periodic_traffic_reset_job("daily")`, `periodic_traffic_reset_job("monthly")` | IP-limit and Xray access/error log cleanup; daily resets and due monthly resets |
+| `@weekly` | `periodic_traffic_reset_job("weekly")` | Weekly traffic resets |
+| default `@every 1m` | `ldap_sync_job` | Only if LDAP enabled; schedule configurable |
+| default `@daily` | `stats_notify_job` | Only if TG bot enabled; schedule configurable |
+| default `@daily` | `discord_notify_job` | Only if Discord bot enabled; schedule configurable |
+| `@every 2m` | `check_hash_storage` | Only if TG bot enabled; expires bot callback hashes |
+| `@every 1m` | `check_cpu_usage` | Only if a CPU alarm is configured (TG, Discord, or email); publishes `cpu.high` |
+| `@every 1m` | `check_memory_usage` | Only if a memory alarm is configured (TG, Discord, or email); publishes `memory.high` |
+| configurable | `free_os_memory` | Only if `sys.MemoryReleaseIntervalMinutes() > 0`; returns heap to OS |
To change _when_ something runs, edit `startTask()`. To change _what_ it does, edit the job file.
@@ -433,7 +435,7 @@ also has protocol schemas under `frontend/src/schemas/protocols/` and `frontend/
`xray.crash`, `node.down|up`, `cpu.high`, `memory.high`, `login.attempt`, with structured
payloads (OutboundHealthData, NodeHealthData, LoginEventData, SystemMetricData). Producers
include the CPU/memory jobs, node heartbeat, and login handling; consumers include the
-Telegram bot and the email notifier (`service/email/`). Use it for cross-cutting
+Telegram bot, the Discord bot (`service/discord/`), and the email notifier (`service/email/`). Use it for cross-cutting
notifications instead of importing notification services into producers.
### 5.8 Tunnel health monitor
@@ -504,6 +506,7 @@ for AutoMigrate in `internal/database/db.go`.
| **Geo category browser** empty / won't open | `xray/geodata/` (`Store`, `reader.go`), `service/geodata.go` | `controller/xray_setting.go` (`/panel/api/xray/geodata/*`), asset dir = `config.GetBinFolderPath()` |
| **`geosite:`/`geoip:` token** reported unknown in a routing rule | `xray/geodata/token.go`, `service/geodata.go` (`Validate`) | `frontend/src/lib/xray/geoTokens.ts`, `frontend/src/components/geodata/` |
| **Telegram bot** commands | `service/tgbot/` | `job/stats_notify_job.go` |
+| **Discord bot** commands & reports | `service/discord/` | `job/discord_notify_job.go` |
| **Email notifications** | `service/email/` | `internal/eventbus/` (consumers) |
| **CPU / memory alerts** not firing | `job/check_cpu_usage.go`, `job/check_memory_usage.go` | `internal/eventbus/`, notifier settings in `service/setting.go` |
| Xray auto-restart on **dead tunnel** | `internal/tunnelmonitor/` | `XUI_TUNNEL_HEALTH_*` in `internal/config/` |
@@ -539,7 +542,7 @@ for AutoMigrate in `internal/database/db.go`.
8. **Two servers, two concerns.** Admin features go in `internal/web`; anything an _end user_
fetches goes in `internal/sub`. Don't blur them.
9. **Cross-cutting notifications go through `internal/eventbus/`** — publish an event instead
- of importing the Telegram/email services into producers.
+ of importing the Telegram/Discord/email services into producers.
---
diff --git a/docs/content/docs/en/guide/index.mdx b/docs/content/docs/en/guide/index.mdx
index 33ce6ea45..eec4c238e 100644
--- a/docs/content/docs/en/guide/index.mdx
+++ b/docs/content/docs/en/guide/index.mdx
@@ -40,7 +40,7 @@ flowchart LR
- **Per-client** traffic quotas, expiry dates, IP limits, online status, and
one-click share links / QR codes.
- **Subscriptions** in VLESS, Clash/Mihomo, and JSON formats.
-- Operational tooling: **multi-node** management, a **Telegram bot**, backups,
+- Operational tooling: **multi-node** management, **Telegram and Discord bots**, backups,
Fail2ban-based IP limiting, and a documented REST API.
## Under the hood
diff --git a/docs/content/docs/en/index.mdx b/docs/content/docs/en/index.mdx
index e570bbb11..4761760a1 100644
--- a/docs/content/docs/en/index.mdx
+++ b/docs/content/docs/en/index.mdx
@@ -46,7 +46,7 @@ leaves the page.
- **Per-client controls** — traffic quotas, expiry dates, IP limits, share
links, and QR codes.
- **Subscriptions** — VLESS, Clash/Mihomo, and JSON formats.
-- **Operations** — multi-node management, Telegram bot, backups, and a REST API.
+- **Operations** — multi-node management, Telegram and Discord bots, backups, and a REST API.
New to Xray? Read [What is 3x-ui?](/docs/guide) first — it explains how the panel, Xray-core, and
diff --git a/docs/content/docs/en/operations/backup-restore.mdx b/docs/content/docs/en/operations/backup-restore.mdx
index 41fd7c875..e73032fe0 100644
--- a/docs/content/docs/en/operations/backup-restore.mdx
+++ b/docs/content/docs/en/operations/backup-restore.mdx
@@ -31,13 +31,9 @@ To restore, stop the panel, put the database back in place, and start it again.
old schema.
-## Telegram backup
+## Automated bot backups (Telegram & Discord)
-If you've configured the [Telegram bot](/docs/operations/telegram-bot), enable
-**`tgBotBackup`** to attach a backup to the periodic report (on the `tgRunTime`
-schedule, default daily). The bot sends both the **database** and the **Xray
-`config.json`** to your admin chat, so you always have an off-server copy. Admins
-can also request a backup on demand from the bot's menu.
+If you've configured the [Telegram bot](/docs/operations/telegram-bot) or [Discord bot](/docs/operations/discord-bot), enable **`tgBotBackup`** or **`discordBotBackup`** to attach a backup to the periodic report (on the `tgRunTime` / `discordRunTime` schedule, default daily). The bot sends both the **database** and the **Xray `config.json`** directly to your admin chat or channel, ensuring an off-server copy. Admins can also request a backup on demand from the Telegram bot's menu or using `!backup` in Discord.
## SQLite dump / restore
diff --git a/docs/content/docs/en/operations/multi-node.mdx b/docs/content/docs/en/operations/multi-node.mdx
index 509f23a3d..f2ae13e38 100644
--- a/docs/content/docs/en/operations/multi-node.mdx
+++ b/docs/content/docs/en/operations/multi-node.mdx
@@ -31,7 +31,7 @@ Provide the node's connection details:
The master verifies reachability when you add or test a node. It then sends a
**heartbeat** every few seconds, updating the node's status (`online` / `offline`)
and emitting `node.up` / `node.down` events (see the
-[Telegram bot](/docs/operations/telegram-bot)).
+[Telegram bot](/docs/operations/telegram-bot) and [Discord bot](/docs/operations/discord-bot)).
Nodes are identified by a stable per-panel GUID, so a node keeps its identity
diff --git a/docs/content/docs/fa/config/panel.mdx b/docs/content/docs/fa/config/panel.mdx
index 2f8bd5278..bfed0b1bb 100644
--- a/docs/content/docs/fa/config/panel.mdx
+++ b/docs/content/docs/fa/config/panel.mdx
@@ -67,6 +67,7 @@ icon: SlidersHorizontal
+
diff --git a/docs/content/docs/fa/guide/index.mdx b/docs/content/docs/fa/guide/index.mdx
index b6b401581..276f54cd6 100644
--- a/docs/content/docs/fa/guide/index.mdx
+++ b/docs/content/docs/fa/guide/index.mdx
@@ -41,7 +41,7 @@ flowchart LR
- سهمیههای ترافیک **بهازای هر کلاینت**، تاریخهای انقضا، محدودیتهای IP،
وضعیت آنلاین و لینکهای اشتراکگذاری / کدهای QR با یک کلیک.
- **اشتراکها** در قالبهای VLESS، Clash/Mihomo و JSON.
-- ابزارهای عملیاتی: مدیریت **چندنودی**، یک **ربات Telegram**، پشتیبانگیری،
+- ابزارهای عملیاتی: مدیریت **چندنودی**، **رباتهای Telegram و Discord**، پشتیبانگیری،
محدودسازی IP مبتنی بر Fail2ban و یک REST API مستندشده.
## پشت صحنه
diff --git a/docs/content/docs/fa/index.mdx b/docs/content/docs/fa/index.mdx
index e4fd01c15..5a1b5fcc9 100644
--- a/docs/content/docs/fa/index.mdx
+++ b/docs/content/docs/fa/index.mdx
@@ -46,7 +46,7 @@ icon: House
- **کنترلهای اختصاصی هر کلاینت** — سهمیه ترافیک، تاریخ انقضا، محدودیت IP، لینکهای
اشتراکگذاری و کدهای QR.
- **سابسکریپشنها** — قالبهای VLESS، Clash/Mihomo و JSON.
-- **عملیات** — مدیریت چندنودی، ربات Telegram، پشتیبانگیری و یک REST API.
+- **عملیات** — مدیریت چندنودی، رباتهای Telegram و Discord، پشتیبانگیری و یک REST API.
با Xray تازه آشنا شدهاید؟ ابتدا [3x-ui چیست؟](/docs/guide) را بخوانید — توضیح میدهد که پنل، Xray-core و
diff --git a/docs/content/docs/fa/operations/backup-restore.mdx b/docs/content/docs/fa/operations/backup-restore.mdx
index aad89cb09..e25ba9778 100644
--- a/docs/content/docs/fa/operations/backup-restore.mdx
+++ b/docs/content/docs/fa/operations/backup-restore.mdx
@@ -31,13 +31,9 @@ cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).db
مهاجرتهای خود را اجرا کند.
-## پشتیبانگیری با Telegram
+## پشتیبانگیری خودکار با رباتها (Telegram و Discord)
-اگر [ربات Telegram](/docs/operations/telegram-bot) را پیکربندی کردهاید، گزینهی
-**`tgBotBackup`** را فعال کنید تا یک نسخهی پشتیبان به گزارش دورهای ضمیمه شود (بر اساس
-زمانبندی `tgRunTime`، بهصورت پیشفرض روزانه). ربات هم **پایگاهداده** و هم **`config.json`
-مربوط به Xray** را به چت ادمین شما میفرستد، بنابراین همیشه یک نسخهی خارج از سرور در اختیار
-دارید. ادمینها همچنین میتوانند بهصورت درخواستی از منوی ربات یک نسخهی پشتیبان بخواهند.
+اگر [ربات Telegram](/docs/operations/telegram-bot) یا [ربات Discord](/docs/operations/discord-bot) را پیکربندی کردهاید، گزینهی **`tgBotBackup`** یا **`discordBotBackup`** را فعال کنید تا یک نسخهی پشتیبان به گزارش دورهای ضمیمه شود (بر اساس زمانبندی `tgRunTime` / `discordRunTime`، بهصورت پیشفرض روزانه). ربات هم **پایگاهداده** و هم **`config.json` مربوط به Xray** را مستقیماً به چت یا کانال ادمین شما میفرستد، بنابراین همیشه یک نسخهی خارج از سرور در اختیار دارید. ادمینها همچنین میتوانند بهصورت درخواستی از منوی ربات Telegram یا با دستور `!backup` در Discord یک نسخهی پشتیبان دریافت کنند.
## دامپ / بازیابی SQLite
diff --git a/docs/content/docs/fa/operations/discord-bot.mdx b/docs/content/docs/fa/operations/discord-bot.mdx
new file mode 100644
index 000000000..650d87db0
--- /dev/null
+++ b/docs/content/docs/fa/operations/discord-bot.mdx
@@ -0,0 +1,121 @@
+---
+title: ربات Discord
+description: یک ربات Discord را به 3x-ui متصل کنید تا اعلانهای بیدرنگ Embed، گزارشهای دورهای همراه با نسخه پشتیبان پایگاهداده و فرمانهای تعاملی را در یک کانال دریافت کنید.
+icon: Bot
+---
+
+3x-ui یکپارچگی کاملی با Discord فراهم میکند: ارسال هشدارهای بیدرنگ از طریق گذرگاه رویدادها (`EventBus`)، گزارشهای دورهای وضعیت سرور بههمراه فایل پشتیبان پایگاهداده، و پردازش فرمانهای تعاملی از طریق Discord Gateway.
+
+
+ اعلانهای لحظهای و گزارشهای دورهای از تماسهای خروجی HTTPS به Discord REST API v10 استفاده میکنند. فرمانهای تعاملی ربات نیز از طریق یک اتصال پسزمینه WebSocket امن به Discord Gateway برقرار میشوند.
+
+
+## راهاندازی
+
+
+
+
+### ساخت برنامه و ربات در Discord
+
+1. وارد [Discord Developer Portal](https://discord.com/developers/applications) شوید.
+2. روی **New Application** در بالا سمت راست کلیک کنید، یک نام مشخص کنید (مثلاً `3x-ui Notifier`) و تایید نمایید.
+3. در نوار کناری چپ، به تب **Bot** بروید.
+4. روی **Reset Token** (یا **Add Bot**) کلیک کنید و **Bot Token** را کپی نمایید. این توکن را محفوظ نگه دارید.
+5. در بخش **Privileged Gateway Intents**، گزینه **Message Content Intent** را فعال کنید (برای خواندن فرمانهایی مانند `!status` ضروری است).
+
+
+
+### دعوت ربات به سرور Discord
+
+1. در پرتال توسعهدهندگان، به **OAuth2** → **URL Generator** بروید.
+2. در بخش **Scopes**، گزینه `bot` را علامت بزنید.
+3. در بخش **Bot Permissions**، دسترسیهای زیر را انتخاب کنید:
+ - **Send Messages** (ارسال پیام)
+ - **Embed Links** (ارسال امبدها)
+ - **Attach Files** (پیوست فایلها — جهت ارسال نسخه پشتیبان پایگاهداده ضروری است)
+ - **Read Message History** (خواندن تاریخچه پیامها)
+4. لینک تولیدشده در پایین صفحه را کپی کرده و در مرورگر باز کنید تا ربات به سرور شما اضافه شود.
+
+
+
+### کپی کردن Channel ID
+
+1. در کلاینت دیسکورد، حالت توسعهدهنده را فعال کنید: **User Settings** → **Advanced** → **Developer Mode** (روشن).
+2. روی کانالی که میخواهید اعلانها و تعامل با ربات در آن انجام شود راستکلیک کرده و **Copy Channel ID** را انتخاب کنید.
+3. مطمئن شوید ربات دسترسی مشاهده و ارسال پیام در این کانال را دارد.
+
+
+
+### پیکربندی پنل
+
+1. در پنل 3x-ui، به **تنظیمات پنل** → **ربات Discord** (یا آدرس `/settings#discord`) بروید.
+2. در بخش **عمومی**:
+ - گزینه **فعالسازی اعلانهای Discord** را روشن کنید.
+ - **Bot Token** و **Channel ID** خود را وارد کنید.
+ - شناسه کاربری عددی دیسکورد خود را در **شناسههای کاربری ادمین** وارد نمایید (راستکلیک روی نام خودتان → **Copy User ID**؛ شناسههای متعدد را با کاما جدا کنید).
+ - زبان مورد نظر خود برای ربات را انتخاب کنید.
+3. در بخش **اعلانها**:
+ - زمانبندی گزارشها را تنظیم کنید (مثلاً `@daily`، `@weekly` یا عبارت crontab سفارشی).
+ - در صورت تمایل، گزینه **پشتیبانگیری پایگاهداده** را فعال کنید تا فایل `x-ui.db` بهصورت خودکار ضمیمه گزارشها شود.
+ - رویدادهای مورد نظر برای دریافت هشدار و آستانههای بار CPU/RAM را تنظیم نمایید.
+4. روی **ارسال اعلان آزمایشی** کلیک کنید تا از صحت ارتباط مطمئن شوید.
+5. برای اعمال تغییرات روی **ذخیره** کلیک نمایید.
+
+
+
+
+## فرمانهای ربات
+
+هنگام فعال بودن، ربات به فرمانهای ارسالشده در کانال پیکربندیشده گوش میدهد (پشتیبانی از هر دو پیشوند `!` و `/`). تنها کاربرانی که شناسهی آنها در **شناسههای کاربری ادمین** ثبت شده مجاز به اجرای فرمانها هستند؛ پیامهای سایر کاربران نادیده گرفته میشود و در صورت خالی بودن این فیلد، اجرای فرمانها غیرفعال خواهد بود. فرمان `!backup` فایل پایگاهداده را در کانال ارسال میکند، بنابراین کانالی را انتخاب کنید که فقط ادمینها به آن دسترسی داشته باشند:
+
+| فرمان | عملکرد |
+| ----- | ------ |
+| `!status` | نمایش بار پردازشی سیستم، مصرف RAM، وضعیت هسته Xray، اتصالات و تعداد کاربران آنلاین. |
+| `!report` | تولید و ارسال فوری گزارش کامل وضعیت سرور و پروکسی. |
+| `!backup` | ارسال فوری فایل نسخه پشتیبان پایگاهداده (`x-ui.db`) و `config.json`. |
+| `!usage ` | بررسی مصرف ترافیک (دانلود/آپلود)، سقف حجم و تاریخ انقضای یک کلاینت خاص. |
+| `!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** را پیکربندی کنید؛ درخواستهای دیسکورد بهصورت خودکار از طریق آن هدایت میشوند.
diff --git a/docs/content/docs/fa/operations/multi-node.mdx b/docs/content/docs/fa/operations/multi-node.mdx
index 3c987c304..63aa1078d 100644
--- a/docs/content/docs/fa/operations/multi-node.mdx
+++ b/docs/content/docs/fa/operations/multi-node.mdx
@@ -25,7 +25,7 @@ icon: Boxes
| **Inbound sync** | همهٔ inboundها (`all`) یا انتخابشده (`selected`) بر اساس تگ. |
| **Outbound tag** | بهاختیار از طریق یک outbound نامدار به نود برسید (پل خروجی). |
-مستر هنگام افزودن یا آزمودن یک نود، قابلیت دسترسی به آن را بررسی میکند. سپس هر چند ثانیه یک **ضربان قلب (heartbeat)** ارسال میکند، وضعیت نود را بهروزرسانی میکند (`online` / `offline`) و رویدادهای `node.up` / `node.down` را منتشر میکند (به [بات Telegram](/docs/operations/telegram-bot) مراجعه کنید).
+مستر هنگام افزودن یا آزمودن یک نود، قابلیت دسترسی به آن را بررسی میکند. سپس هر چند ثانیه یک **ضربان قلب (heartbeat)** ارسال میکند، وضعیت نود را بهروزرسانی میکند (`online` / `offline`) و رویدادهای `node.up` / `node.down` را منتشر میکند (به [بات Telegram](/docs/operations/telegram-bot) و [بات Discord](/docs/operations/discord-bot) مراجعه کنید).
نودها با یک GUID پایدار بهازای هر پنل شناسایی میشوند، بنابراین یک نود هویت خود
diff --git a/docs/content/docs/ru/guide/index.mdx b/docs/content/docs/ru/guide/index.mdx
index 024408aa2..e59f58020 100644
--- a/docs/content/docs/ru/guide/index.mdx
+++ b/docs/content/docs/ru/guide/index.mdx
@@ -40,7 +40,7 @@ flowchart LR
- **Поклиентские** квоты трафика, даты истечения, ограничения по IP, статус «онлайн» и
ссылки для подключения / QR-коды в один клик.
- **Подписки** в форматах VLESS, Clash/Mihomo и JSON.
-- Инструменты для эксплуатации: управление **несколькими узлами**, **Telegram-бот**, резервные копии,
+- Инструменты для эксплуатации: управление **несколькими узлами**, **Telegram- и Discord-боты**, резервные копии,
ограничение по IP на базе Fail2ban и документированный REST API.
## Что под капотом
diff --git a/docs/content/docs/ru/index.mdx b/docs/content/docs/ru/index.mdx
index b08b5ec52..2b28845c0 100644
--- a/docs/content/docs/ru/index.mdx
+++ b/docs/content/docs/ru/index.mdx
@@ -46,7 +46,7 @@ icon: House
- **Управление каждым клиентом** — квоты трафика, даты истечения, ограничения по IP, ссылки
для подключения и QR-коды.
- **Подписки** — форматы VLESS, Clash/Mihomo и JSON.
-- **Эксплуатация** — управление несколькими узлами, Telegram-бот, резервные копии и REST API.
+- **Эксплуатация** — управление несколькими узлами, Telegram- и Discord-боты, резервные копии и REST API.
Впервые работаете с Xray? Сначала прочитайте [Что такое 3x-ui?](/docs/guide) — там объясняется, как панель, Xray-core и
diff --git a/docs/content/docs/ru/operations/backup-restore.mdx b/docs/content/docs/ru/operations/backup-restore.mdx
index 4c57453ee..59315283e 100644
--- a/docs/content/docs/ru/operations/backup-restore.mdx
+++ b/docs/content/docs/ru/operations/backup-restore.mdx
@@ -33,14 +33,9 @@ cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).db
выполнить миграции, а не навязывайте старую схему.
-## Резервное копирование через Telegram
+## Автоматические бэкапы ботов (Telegram и Discord)
-Если вы настроили [Telegram-бота](/docs/operations/telegram-bot), включите
-**`tgBotBackup`**, чтобы прикреплять резервную копию к периодическому отчёту (по
-расписанию `tgRunTime`, по умолчанию ежедневно). Бот отправляет в чат
-администратора как **базу данных**, так и **`config.json` Xray**, поэтому у вас
-всегда будет копия за пределами сервера. Администраторы также могут запросить
-резервную копию по требованию через меню бота.
+Если вы настроили [Telegram-бота](/docs/operations/telegram-bot) или [Discord-бота](/docs/operations/discord-bot), включите **`tgBotBackup`** или **`discordBotBackup`**, чтобы прикреплять резервную копию к периодическому отчёту (по расписанию `tgRunTime` / `discordRunTime`, по умолчанию ежедневно). Бот отправляет в чат или канал администратора как **базу данных**, так и **`config.json` Xray**, поэтому у вас всегда будет копия за пределами сервера. Администраторы также могут запросить резервную копию по требованию через меню бота Telegram или с помощью команды `!backup` в Discord.
## Дамп / восстановление SQLite
diff --git a/docs/content/docs/ru/operations/multi-node.mdx b/docs/content/docs/ru/operations/multi-node.mdx
index d7975f338..6c3cb4ccd 100644
--- a/docs/content/docs/ru/operations/multi-node.mdx
+++ b/docs/content/docs/ru/operations/multi-node.mdx
@@ -32,7 +32,7 @@ API этого узла. Главная панель опрашивает каж
Главная панель проверяет доступность при добавлении или тестировании узла. Затем
она каждые несколько секунд отправляет **heartbeat**, обновляя статус узла
(`online` / `offline`) и генерируя события `node.up` / `node.down` (см.
-[Telegram-бот](/docs/operations/telegram-bot)).
+[Telegram-бот](/docs/operations/telegram-bot) и [Discord-бот](/docs/operations/discord-bot)).
Узлы идентифицируются по стабильному GUID, уникальному для каждой панели,
diff --git a/docs/content/docs/zh/config/panel.mdx b/docs/content/docs/zh/config/panel.mdx
index d9f52686f..9c929d536 100644
--- a/docs/content/docs/zh/config/panel.mdx
+++ b/docs/content/docs/zh/config/panel.mdx
@@ -63,6 +63,7 @@ icon: SlidersHorizontal
+
diff --git a/docs/content/docs/zh/guide/index.mdx b/docs/content/docs/zh/guide/index.mdx
index 266098248..6a0650ec8 100644
--- a/docs/content/docs/zh/guide/index.mdx
+++ b/docs/content/docs/zh/guide/index.mdx
@@ -31,7 +31,7 @@ flowchart LR
- 一流的 **REALITY** 与 **XTLS-Vision** 支持,带来隐蔽、快速的传输方式。
- **按客户端**设置的流量配额、到期日期、IP 限制、在线状态,以及一键生成分享链接 / 二维码。
- 支持 VLESS、Clash/Mihomo 和 JSON 格式的**订阅**。
-- 运维工具:**多节点**管理、**Telegram 机器人**、备份、基于 Fail2ban 的 IP 限制,以及一套有文档说明的 REST API。
+- 运维工具:**多节点**管理、**Telegram 和 Discord 机器人**、备份、基于 Fail2ban 的 IP 限制,以及一套有文档说明的 REST API。
## 底层原理
diff --git a/docs/content/docs/zh/index.mdx b/docs/content/docs/zh/index.mdx
index 1b76a8471..445e66fd0 100644
--- a/docs/content/docs/zh/index.mdx
+++ b/docs/content/docs/zh/index.mdx
@@ -43,7 +43,7 @@ icon: House
- **细粒度的客户端管理** —— 流量配额、到期日期、IP 限制、分享
链接以及 QR 码。
- **订阅** —— 支持 VLESS、Clash/Mihomo 以及 JSON 格式。
-- **运维能力** —— 多节点管理、Telegram 机器人、备份以及 REST API。
+- **运维能力** —— 多节点管理、Telegram 和 Discord 机器人、备份以及 REST API。
初次接触 Xray?请先阅读 [什么是 3x-ui?](/docs/guide) —— 它解释了面板、Xray-core 与
diff --git a/docs/content/docs/zh/operations/backup-restore.mdx b/docs/content/docs/zh/operations/backup-restore.mdx
index 38425d87b..2420f63f3 100644
--- a/docs/content/docs/zh/operations/backup-restore.mdx
+++ b/docs/content/docs/zh/operations/backup-restore.mdx
@@ -28,13 +28,9 @@ cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).db
运行迁移,而不要强行套用旧的数据库结构。
-## Telegram 备份
+## 机器人自动备份(Telegram 与 Discord)
-如果你已配置 [Telegram 机器人](/docs/operations/telegram-bot),启用
-**`tgBotBackup`** 即可在周期性报告中附带一份备份(按 `tgRunTime`
-计划执行,默认每天一次)。机器人会将**数据库**与 Xray 的
-**`config.json`** 一并发送到你的管理员聊天,从而让你始终拥有一份服务器之外的副本。
-管理员也可以从机器人的菜单中按需请求备份。
+如果你已配置 [Telegram 机器人](/docs/operations/telegram-bot) 或 [Discord 机器人](/docs/operations/discord-bot),启用 **`tgBotBackup`** 或 **`discordBotBackup`** 即可在周期性报告中附带一份备份(按 `tgRunTime` / `discordRunTime` 计划执行,默认每天一次)。机器人会将**数据库**与 Xray 的 **`config.json`** 一并发送到你的管理员聊天或频道,从而让你始终拥有一份服务器之外的副本。管理员也可以随时从 Telegram 机器人的菜单或使用 Discord 的 `!backup` 命令按需请求备份。
## SQLite 转储 / 恢复
diff --git a/docs/content/docs/zh/operations/discord-bot.mdx b/docs/content/docs/zh/operations/discord-bot.mdx
new file mode 100644
index 000000000..7132f364c
--- /dev/null
+++ b/docs/content/docs/zh/operations/discord-bot.mdx
@@ -0,0 +1,121 @@
+---
+title: Discord 机器人
+description: 将 Discord 机器人接入 3x-ui,在指定频道接收实时的面板事件 Embed 告警、周期性健康报告(含数据库备份)以及执行交互式控制命令。
+icon: Bot
+---
+
+3x-ui 提供了完整的 Discord 集成支持:通过事件总线(`EventBus`)实时推送事件告警、通过定时任务发送包含数据库备份的服务器状态报告,以及通过 Discord Gateway 执行交互式管理命令。
+
+
+ Discord 实时通知和周期性报告使用出站 HTTPS REST API v10 请求。交互式机器人命令则通过与 Discord Gateway 建立的后台安全 WebSocket 连接实现。
+
+
+## 完成配置
+
+
+
+
+### 创建 Discord 应用程序与机器人
+
+1. 打开 [Discord 开发者门户](https://discord.com/developers/applications) 并登录。
+2. 点击右上角的 **New Application**,输入名称(例如 `3x-ui Notifier`)并确认创建。
+3. 在左侧菜单中,进入 **Bot** 标签页。
+4. 点击 **Reset Token**(如果尚未创建机器人则点击 **Add Bot**),并复制生成的 **Bot Token**。请妥善保管该令牌。
+5. 在 **Privileged Gateway Intents** 区域,勾选启用 **Message Content Intent**(机器人读取 `!status` 等前缀命令所必需)。
+
+
+
+### 邀请机器人加入你的 Discord 服务器
+
+1. 在开发者门户左侧导航栏中,进入 **OAuth2** → **URL Generator**。
+2. 在 **Scopes** 中勾选 `bot`。
+3. 在下方展开的 **Bot Permissions** 中,勾选以下权限:
+ - **Send Messages**(发送消息)
+ - **Embed Links**(嵌入链接)
+ - **Attach Files**(附加文件 —— 发送数据库备份附件所必需)
+ - **Read Message History**(读取消息历史)
+4. 复制页面底部生成的邀请链接,在浏览器中打开并将机器人添加到你的目标服务器。
+
+
+
+### 复制频道 ID
+
+1. 在 Discord 客户端中开启开发者模式:**用户设置** → **高级** → **开发者模式**(开启)。
+2. 右键点击希望接收告警和执行命令的频道,选择**复制频道 ID**(Copy Channel ID)。
+3. 确保机器人拥有该频道的查看和发送消息权限。
+
+
+
+### 配置面板
+
+1. 在 3x-ui 面板中,打开**面板设置** → **Discord 机器人**(或直接访问 `/settings#discord`)。
+2. 在**通用**区域:
+ - 开启**启用 Discord 通知**。
+ - 填入你的 **Discord Bot Token** 和 **频道 ID**。
+ - 在**管理员用户 ID**中填入你自己的 Discord 用户数字 ID(右键你的个人头像 → **复制用户 ID**;多个 ID 请用英文逗号分隔)。
+ - 选择偏好的 **Discord 机器人语言**。
+3. 在**通知**区域:
+ - 设置**通知时间**(如 `@daily`、`@weekly` 或自定义 Cron 表达式)。
+ - 如需自动备份,可开启**数据库备份**,定时报告中将自动附带 `x-ui.db` 备份文件。
+ - 勾选需要触发告警的事件类型,并配置 CPU / 内存阈值。
+4. 点击**发送测试通知**以验证连通性。你的 Discord 频道应立刻收到一条测试 Embed 消息。
+5. 点击**保存**应用配置。
+
+
+
+
+## 机器人命令
+
+启用后,机器人将在配置的 Discord 频道内监听命令(同时支持 `!` 和 `/` 前缀)。仅列在**管理员用户 ID**中的用户可以执行命令;来自其他用户的消息将被忽略,若未配置管理员 ID 则关闭命令响应。`!backup` 与定时备份会将数据库文件发送至频道中,因此请务必选择仅管理员可见的频道:
+
+| 命令 | 说明 |
+| ---- | ---- |
+| `!status` | 查看系统负载、内存占用、CPU 使用率、核心状态、TCP/UDP 连接数及当前在线用户。 |
+| `!report` | 立即生成并发送完整的服务器与代理状态报告 Embed。 |
+| `!backup` | 立即导出并发送当前数据库备份文件(`x-ui.db`)与 `config.json`。 |
+| `!usage ` | 查询指定客户端的流量用量(上传/下载)、配额上限及到期时间。 |
+| `!inbounds` | 列出所有活动的入站连接、监听端口、协议、已用流量及客户端数量。 |
+| `!restart` | 安全重启 Xray 核心,无需重启整个 Web 面板。 |
+| `!help` | 显示机器人可用命令列表及使用说明。 |
+
+## 事件告警
+
+告警以 Discord Embed 格式发送,带有颜色标识和关键诊断信息:
+
+| 事件类型 | 标识 | 说明 |
+| -------- | ---- | ---- |
+| `xray.crash` | 🔴 红色 | Xray 核心崩溃;包含崩溃原因及时间戳 |
+| `outbound.down` | 🔴 红色 | 出站连通性探测失败 |
+| `outbound.up` | 🟢 绿色 | 出站连通性已恢复 |
+| `node.down` | 🔴 红色 | 远程子节点离线或不可达 |
+| `node.up` | 🟢 绿色 | 远程子节点重新连接且健康 |
+| `cpu.high` | 🟠 橙色 | 服务器 CPU 使用率超过设定阈值(`discordCpu`) |
+| `memory.high` | 🟠 橙色 | 服务器内存使用率超过设定阈值(`discordMemory`) |
+| `login.attempt` | 🟢 / 🔴 | Web 面板登录尝试(包含用户名、客户端 IP 及登录结果) |
+
+
+ 登录告警仅包含尝试的用户名及客户端 IP 地址。系统绝不会记录或传输密码明文。
+
+
+## 设置参考
+
+| 设置项 | 默认值 | 说明 |
+| ------ | ------ | ---- |
+| `discordBotEnable` | `false` | Discord 机器人与告警总开关。 |
+| `discordBotToken` | _(保密)_ | 从 Discord 开发者门户获取的 Bot Token。 |
+| `discordChannelId` | _(无)_ | 接收消息的目标 Discord 频道 Snowflake ID(17–20 位数字)。 |
+| `discordAdminIds` | _(无)_ | 允许执行命令的 Discord 用户数字 ID(逗号分隔)。留空则禁用命令交互。 |
+| `discordLang` | `en-US` | Discord 机器人消息与报告使用的语言。 |
+| `discordRunTime` | `@daily` | 发送周期性状态报告的 Cron 表达式或预设计划。 |
+| `discordBotBackup` | `false` | 是否在周期性报告中自动附带数据库备份文件(`x-ui.db`)。 |
+| `discordEnabledEvents` | `login.attempt,cpu.high` | 触发通知的事件类型列表(逗号分隔)。 |
+| `discordCpu` | `80` | 触发 CPU 告警的利用率百分比阈值(0–100)。 |
+| `discordMemory` | `80` | 触发内存告警的利用率百分比阈值(0–100)。 |
+
+## 故障排查
+
+- **测试报错 "invalid bot token (401)"**:请确认复制的是开发者门户 **Bot** 标签页中的 Bot Token,而非 Client Secret 或 Application ID。
+- **测试报错 "missing permissions (403)"**:请检查机器人角色在目标频道或对应分类目录中是否拥有 **Send Messages**、**Embed Links** 以及 **Attach Files** 权限。
+- **命令无响应**:请确认你的 Discord 用户 ID 已填入**管理员用户 ID**中。然后检查开发者门户中该机器人的 **Message Content Intent** 是否已开启,并重启面板(若缺少该意图,Discord 会直接关闭连接且不再重试)。
+- **测试报错 "channel not found (404)"**:请检查频道 ID 是否为纯数字,并确认机器人已加入拥有该频道的服务器。
+- **出站代理需求**:若你的服务器所在网络环境访问 Discord 需经过代理,请在面板设置中配置**面板出站代理**(Panel Outbound),Discord 的所有请求将自动经由该代理发出。
diff --git a/docs/content/docs/zh/operations/multi-node.mdx b/docs/content/docs/zh/operations/multi-node.mdx
index 9878d7ef2..2f7101ee2 100644
--- a/docs/content/docs/zh/operations/multi-node.mdx
+++ b/docs/content/docs/zh/operations/multi-node.mdx
@@ -25,7 +25,7 @@ icon: Boxes
| **Inbound sync** | `all` 入站,或按标签 `selected`。 |
| **Outbound tag** | 可选地**通过**指定的出站到达节点(出口桥接)。 |
-当你添加或测试节点时,主控会验证其可达性。随后它每隔几秒发送一次**心跳**,更新节点的状态(`online` / `offline`)并发出 `node.up` / `node.down` 事件(参见 [Telegram 机器人](/docs/operations/telegram-bot))。
+当你添加或测试节点时,主控会验证其可达性。随后它每隔几秒发送一次**心跳**,更新节点的状态(`online` / `offline`)并发出 `node.up` / `node.down` 事件(参见 [Telegram 机器人](/docs/operations/telegram-bot) 与 [Discord 机器人](/docs/operations/discord-bot))。
节点通过每个面板稳定的 GUID 来标识,因此节点在重启后仍能保持其身份。节点本身也可以管理更多节点——主控会将这些以只读的**传递性**子节点形式呈现(Node 1 → Node 2 → Node 3)。
diff --git a/docs/lib/site-i18n.ts b/docs/lib/site-i18n.ts
index 162c8c20c..47bdd7db6 100644
--- a/docs/lib/site-i18n.ts
+++ b/docs/lib/site-i18n.ts
@@ -65,9 +65,9 @@ const en: SiteMessages = {
'Coordinate multiple servers, managed hosts and external proxies, and serve VLESS / Clash / JSON subscriptions.',
},
{
- title: 'Telegram bot & alerts',
+ title: 'Telegram & Discord bots',
description:
- 'Built-in Telegram notifications for traffic caps, expiry warnings and system load, plus admin actions.',
+ 'Built-in Telegram and Discord notifications for traffic caps, expiry warnings and system load, plus admin actions.',
},
{
title: 'Self-hosted & scriptable',
@@ -116,9 +116,9 @@ const fa: SiteMessages = {
'هماهنگسازی چند سرور، هاستهای مدیریتشده و پروکسیهای خارجی، و ارائهی سابسکریپشنهای VLESS / Clash / JSON.',
},
{
- title: 'ربات Telegram و هشدارها',
+ title: 'رباتهای Telegram و Discord',
description:
- 'اعلانهای داخلیِ Telegram برای سقف ترافیک، هشدار انقضا و بار سیستم، بهعلاوهی کنشهای مدیریتی.',
+ 'اعلانهای داخلیِ Telegram و Discord برای سقف ترافیک، هشدار انقضا و بار سیستم، بهعلاوهی کنشهای مدیریتی.',
},
{
title: 'خودمیزبان و قابلاسکریپت',
@@ -167,9 +167,9 @@ const ru: SiteMessages = {
'Координация нескольких серверов, управляемых хостов и внешних прокси, а также выдача подписок VLESS / Clash / JSON.',
},
{
- title: 'Telegram-бот и оповещения',
+ title: 'Telegram- и Discord-боты',
description:
- 'Встроенные уведомления Telegram о лимитах трафика, истечении срока и нагрузке системы, а также действия администратора.',
+ 'Встроенные уведомления Telegram и Discord о лимитах трафика, истечении срока и нагрузке системы, а также действия администратора.',
},
{
title: 'Свой хостинг и скрипты',
@@ -217,8 +217,9 @@ const zh: SiteMessages = {
description: '协调多台服务器、托管主机和外部代理,并提供 VLESS / Clash / JSON 订阅。',
},
{
- title: 'Telegram 机器人与告警',
- description: '内置 Telegram 通知,覆盖流量上限、到期提醒和系统负载,并支持管理员操作。',
+ title: 'Telegram 与 Discord 机器人',
+ description:
+ '内置 Telegram 和 Discord 通知,覆盖流量上限、到期提醒和系统负载,并支持管理员操作。',
},
{
title: '自托管且可脚本化',