3x-ui3x-ui
Эксплуатация

Discord-бот

Подключите Discord-бота к 3x-ui для получения оповещений о событиях панели (сбои сервисов, доступность узлов, нагрузка CPU/RAM и попытки входа) прямо в канал Discord.

3x-ui предоставляет полную интеграцию с Discord: мгновенные уведомления о событиях через шину событий панели (EventBus), периодические отчёты о состоянии сервера с резервным копированием базы данных, а также интерактивные команды через Discord Gateway.

Уведомления и периодические отчёты отправляются через исходящие HTTPS-запросы к REST API Discord v10. Интерактивные команды бота работают через постоянное защищённое WebSocket-соединение с Discord Gateway.

Настройка

Создайте приложение и бота в Discord

  1. Откройте Discord Developer Portal и авторизуйтесь.
  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. В Developer Portal перейдите в раздел OAuth2 $\rightarrow$ URL Generator.
  2. В блоке Scopes отметьте галочкой bot.
  3. В блоке Bot Permissions выберите:
    • Send Messages (Отправка сообщений)
    • Embed Links (Встраивание ссылок / Embeds)
    • Attach Files (Прикрепление файлов — необходимо для резервных копий БД)
    • Read Message History (Чтение истории сообщений)
  4. Скопируйте полученную ссылку внизу страницы, откройте её в браузере и добавьте бота на нужный сервер.

Скопируйте ID канала (Channel ID)

  1. В клиенте Discord включите режим разработчика: Настройки пользователя $\rightarrow$ Расширенные $\rightarrow$ Режим разработчика (Developer Mode).
  2. Нажмите правой кнопкой мыши по каналу, куда должны приходить уведомления и команды, и выберите Копировать ID канала.
  3. Убедитесь, что у бота есть права на просмотр и отправку сообщений в этот канал.

Настройте панель 3x-ui

  1. В веб-интерфейсе 3x-ui перейдите в Настройки панели $\rightarrow$ Discord Bot (или перейдите по адресу /settings#discord).
  2. Во вкладке Основные настройки:
    • Включите Включить уведомления Discord.
    • Укажите Токен Discord-бота и ID канала.
    • Укажите свой ID пользователя Discord в поле ID администраторов (правый клик по своему имени → Копировать ID пользователя; несколько ID разделяйте запятыми).
    • Выберите Язык Discord-бота.
  3. Во вкладке Уведомления:
    • Настройте Частоту уведомлений (например, @daily, @weekly или произвольное выражение crontab).
    • При необходимости включите Резервное копирование базы данных, чтобы отчёт сопровождался файлом x-ui.db.
    • Выберите отслеживаемые события и настройте пороги нагрузки CPU/RAM.
  4. Нажмите Отправить тестовое сообщение, чтобы проверить доставку. В канале Discord появится тестовое Embed-сообщение.
  5. Нажмите Сохранить для применения настроек.

Команды бота

Когда бот включён, он принимает текстовые команды в настроенном канале (поддерживаются префиксы ! и /). Выполнять их могут только пользователи из списка 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-адрес. Пароли никогда не логируются и не передаются.

Параметры конфигурации

ПараметрПо умолчаниюОписание
discordBotEnablefalseГлавный переключатель бота и уведомлений Discord.
discordBotToken(секрет)Токен бота из Discord Developer Portal.
discordChannelId(пусто)Идентификатор канала Discord (17–20 цифр).
discordAdminIds(пусто)ID пользователей Discord через запятую, которым разрешено выполнять команды бота. Пустой список отключает команды.
discordLangen-USЯзык сообщений и отчётов бота.
discordRunTime@dailyРасписание генерации периодических отчётов (crontab).
discordBotBackupfalseОтправлять ли файл резервной копии базы данных (x-ui.db) вместе с отчётом.
discordEnabledEventslogin.attempt,cpu.highСписок отслеживаемых событий через запятую.
discordCpu80Порог нагрузки процессора для алерта (в процентах, 0–100).
discordMemory80Порог использования 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). Запросы бота будут автоматически направляться через этот прокси.

On this page