Discord-бот
Подключите Discord-бота к 3x-ui для получения оповещений о событиях панели (сбои сервисов, доступность узлов, нагрузка CPU/RAM и попытки входа) прямо в канал Discord.
3x-ui предоставляет полную интеграцию с Discord: мгновенные уведомления о событиях через шину событий панели (EventBus), периодические отчёты о состоянии сервера с резервным копированием базы данных, а также интерактивные команды через Discord Gateway.
Уведомления и периодические отчёты отправляются через исходящие HTTPS-запросы к REST API Discord 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
- В Developer Portal перейдите в раздел OAuth2 $\rightarrow$ URL Generator.
- В блоке Scopes отметьте галочкой
bot. - В блоке Bot Permissions выберите:
- Send Messages (Отправка сообщений)
- Embed Links (Встраивание ссылок / Embeds)
- Attach Files (Прикрепление файлов — необходимо для резервных копий БД)
- Read Message History (Чтение истории сообщений)
- Скопируйте полученную ссылку внизу страницы, откройте её в браузере и добавьте бота на нужный сервер.
Скопируйте ID канала (Channel ID)
- В клиенте Discord включите режим разработчика: Настройки пользователя $\rightarrow$ Расширенные $\rightarrow$ Режим разработчика (Developer Mode).
- Нажмите правой кнопкой мыши по каналу, куда должны приходить уведомления и команды, и выберите Копировать ID канала.
- Убедитесь, что у бота есть права на просмотр и отправку сообщений в этот канал.
Настройте панель 3x-ui
- В веб-интерфейсе 3x-ui перейдите в Настройки панели $\rightarrow$ Discord Bot (или перейдите по адресу
/settings#discord). - Во вкладке Основные настройки:
- Включите Включить уведомления Discord.
- Укажите Токен Discord-бота и ID канала.
- Укажите свой ID пользователя Discord в поле ID администраторов (правый клик по своему имени → Копировать ID пользователя; несколько ID разделяйте запятыми).
- Выберите Язык Discord-бота.
- Во вкладке Уведомления:
- Настройте Частоту уведомлений (например,
@daily,@weeklyили произвольное выражение crontab). - При необходимости включите Резервное копирование базы данных, чтобы отчёт сопровождался файлом
x-ui.db. - Выберите отслеживаемые события и настройте пороги нагрузки CPU/RAM.
- Настройте Частоту уведомлений (например,
- Нажмите Отправить тестовое сообщение, чтобы проверить доставку. В канале Discord появится тестовое Embed-сообщение.
- Нажмите Сохранить для применения настроек.
Команды бота
Когда бот включён, он принимает текстовые команды в настроенном канале (поддерживаются префиксы ! и /). Выполнять их могут только пользователи из списка ID администраторов; сообщения остальных игнорируются, а при пустом списке команды отключены. !backup и плановые резервные копии публикуют базу данных в канал, поэтому выбирайте канал, доступный только администраторам:
| Команда | Описание |
|---|---|
!status | Вывести нагрузку системы, память, процессор, число соединений и активных клиентов. |
!report | Немедленно сгенерировать и отправить подробный отчёт о состоянии сервера. |
!backup | Отправить файл резервной копии базы данных (x-ui.db) и config.json. |
!usage <email> | Запросить статистику трафика (Upload/Download), лимит и срок действия клиента. |
!inbounds | Показать список всех активных подключений (порты, протоколы, клиенты, трафик). |
!restart | Перезапустить ядро Xray без перезапуска веб-панели. |
!help | Показать справку по доступным командам. |
Оповещения о событиях
Уведомления приходят в виде Embed-карточек с цветовым обозначением важности:
| Событие | Индикатор | Описание |
|---|---|---|
xray.crash | 🔴 Красный | Сбой процесса Xray-core с указанием причины и времени |
outbound.down | 🔴 Красный | Неудачная проверка доступности исходящего соединения (outbound) |
outbound.up | 🟢 Зеленый | Восстановление доступности исходящего соединения |
node.down | 🔴 Красный | Удалённый под-узел (node) отключился или недоступен |
node.up | 🟢 Зеленый | Удалённый под-узел снова в сети и готов к работе |
cpu.high | 🟠 Оранжевый | Нагрузка процессора превысила заданный порог (discordCpu) |
memory.high | 🟠 Оранжевый | Использование оперативной памяти превысило порог (discordMemory) |
login.attempt | 🟢 / 🔴 | Попытка авторизации в панели (с указанием IP и логина) |
Оповещения о входе содержат только введённое имя пользователя и IP-адрес. Пароли никогда не логируются и не передаются.
Параметры конфигурации
| Параметр | По умолчанию | Описание |
|---|---|---|
discordBotEnable | false | Главный переключатель бота и уведомлений Discord. |
discordBotToken | (секрет) | Токен бота из Discord Developer Portal. |
discordChannelId | (пусто) | Идентификатор канала Discord (17–20 цифр). |
discordAdminIds | (пусто) | ID пользователей Discord через запятую, которым разрешено выполнять команды бота. Пустой список отключает команды. |
discordLang | en-US | Язык сообщений и отчётов бота. |
discordRunTime | @daily | Расписание генерации периодических отчётов (crontab). |
discordBotBackup | false | Отправлять ли файл резервной копии базы данных (x-ui.db) вместе с отчётом. |
discordEnabledEvents | login.attempt,cpu.high | Список отслеживаемых событий через запятую. |
discordCpu | 80 | Порог нагрузки процессора для алерта (в процентах, 0–100). |
discordMemory | 80 | Порог использования RAM для алерта (в процентах, 0–100). |
Устранение неполадок
- Ошибка "invalid bot token (401)": Проверьте, что вы скопировали именно Bot Token из раздела Bot, а не Client Secret или Application ID.
- Ошибка "missing permissions (403)": Проверьте, выданы ли роли бота права Send Messages, Embed Links и Attach Files в целевом канале или категории каналов.
- Бот не реагирует на команды: Проверьте, что ваш ID пользователя Discord указан в ID администраторов. Затем убедитесь, что в Discord Developer Portal в разделе Bot включен Message Content Intent, и перезапустите панель: без этого разрешения Discord окончательно закрывает соединение, и бот не переподключается сам.
- Ошибка "channel not found (404)": Проверьте правильность числового Channel ID и убедитесь, что бот состоит на сервере, которому принадлежит канал.
- Проксирование запросов: Если сервер не имеет прямого доступа к серверам Discord, настройте исходящий прокси в Настройках панели (Исходящий трафик панели /
panelOutbound). Запросы бота будут автоматически направляться через этот прокси.
Telegram-бот
Подключите Telegram-бота к 3x-ui для выполнения команд, периодических отчётов, оповещений о событиях (вход, CPU, доступность узлов), резервных копий и самообслуживания клиентов.
Безопасность
Усиление защиты 3x-ui — аутентификация панели и 2FA, ограничение IP через Fail2ban, правила брандмауэра, BBR и поддержание актуальности.

3x-ui