ACLClouds
ACLClouds

Хостинг бота Discord на Node.js с discord.js v14

Проект npm, интенты, токен, запуск: шаги, чтобы запустить бота discord.js v14, по одному.

Бот discord.js v14: это обычный проект Node.js: package.json, входной файл и несколько зависимостей. Полезные шаги всегда одни и те же: создать проект, объявить интенты, читать токен из окружения и проверить запуск, прежде чем передать бота серверу.

  • discord.js v14 работает с Node.js 18 или новее, а клиент объявляет свои интенты.
  • Токен читается из переменных окружения, никогда из index.js.
  • Used disallowed intents и ошибка 4014 имеют одну причину: привилегированный интент выключен в портале.

Создайте проект

discord.js v14 работает с Node.js 18 или новее. Проект состоит из package.json, где перечислены зависимости, и входного файла index.js.

  • npm init -y: создаёт package.json со значениями по умолчанию.
  • npm install discord.js: добавляет discord.js v14 в зависимости.
  • В разделе scripts файла package.json добавьте "start": "node index.js", чтобы запускать бота командой npm start.

Написание клиента

Клиент должен объявить интенты, которые ему нужны. Интент, которого нет в коде, не получает событий, а привилегированный интент, не включённый в портале, не даёт подключиться.

  • GatewayIntentBits.Guilds и GatewayIntentBits.GuildMessages: события серверов и сообщений.
  • GatewayIntentBits.MessageContent: привилегированный интент, его включают в портале разработчиков, чтобы читать текст сообщений.
  • client.login(process.env.DISCORD_TOKEN): токен берётся из окружения, никогда из кода.

Запуск и проверка

Проверьте бота локально до загрузки. Подключённый бот должен вывести подтверждение, которое вы предусмотрели в событии запуска.

  • npm install: устанавливает зависимости из package.json.
  • npm start: запускает бота скриптом start.
  • Если консоль выводит Used disallowed intents, привилегированный интент выключен в портале: включите его и перезапустите бота.

Почему ACLClouds для бота на discord.js

Бесплатный тариф включает 1 бота, 315 МБ ОЗУ и 715 МБ хранилища. Node.js, ffmpeg, yt-dlp и deno уже есть в образе Node.js, а файлы загружаются по SFTP.

  • Бесплатный тариф: 1 бот, 315 МБ ОЗУ, 0,25 vCPU, 715 МБ хранилища, загрузка файлов до 100 МБ.
  • Образ Node.js: ffmpeg, yt-dlp и deno уже установлены.
  • Доступ SFTP для каждого бота на порту 2222, данные из карточки «Accès SFTP».

Часто задаваемые вопросы

Какую версию Node.js выбрать?

Для нового проекта discord.js v14 берите Node.js 18 или новее, которую ещё поддерживают. Старые версии рано или поздно создают проблемы с безопасностью.

Нужно ли загружать папку node_modules?

Нет. Она тяжёлая, а бесплатное хранилище составляет 715 МБ. Загрузите package.json и package-lock.json, а папку пусть пересоздаст установка.

Почему бот выводит Used disallowed intents?

Код запрашивает привилегированный интент, например MessageContent, который не включён в портале разработчиков Discord. Включите его и перезапустите бота.