Discord бот для автоматизации рабочих процессов Weazel News на серверах Majestic RP.
- Node.js 20 или новее
- Discord-приложение с настроенным bot token
- доступный HTTP-порт для вебхуков форм и экзаменации
npm ciСоздайте .env на основе .env.example:
token=
WEBHOOK_KEY=
TEST_KEY=
Несекретные глобальные параметры находятся в config.json. Серверные настройки изменяются через /settings и сохраняются в data/localdb.json.
npm run checkКоманда запускает полный набор тестов и синтаксическую проверку всех JavaScript-файлов. Она сработает только на Linux, для Windows используйте команды в следующем порядке:
node --test
npm run test:syntaxLinux:
npm startWindows:
node .\src\index.jsКорректно завершайте процесс через Ctrl+C, SIGTERM или owner-only действие /manualtools shutdown_instance. Бот остановит планировщики и фоновые воркеры, дождётся очереди базы, отключит Discord-клиент и освободит блокировку инстанса.
GET /webhook- проверка вебхук-сервера; при заданномTEST_KEYвозвращает его в ответе.POST /webhook- приём форм и результатов экзаменов. Предпочтительно передаватьWEBHOOK_KEYв заголовкеx-webhook-key; параметр?key=сохранён для совместимости.
/manualtools webhook_status- состояние HTTP-сервера, обработчиков, воркеров и очередей форм и экзаменов./manualtools pending_status- сводка незавершённых операций, dead-задач webhook и конфликтов активного плана восстановления./settings -> Диагностика- проверка каналов, ролей, иерархии бота и необходимых Discord-полномочий для включённых функций.
После завершения всех обработчиков запуска бот пишет итоговую строку WN Helper полностью готов. Если какой-либо обязательный компонент не готов, вместо неё выводится WN Helper запущен с проблемами готовности со списком причин.
Основная база: data/localdb.json.
Перед изменением файла создаётся предыдущая копия, дополнительно работает почасовое резервное копирование. При повреждении JSON бот переходит в режим восстановления и блокирует обычные изменения. Сравнение и применение резервной копии выполняются вручную через owner-only подкоманды /manualtools database_*.