Гид по технологиям

Как создать простого Discord-бота на Node.js

6 min read Development Обновлено 25 Dec 2025
Как создать Discord-бота на Node.js
Как создать Discord-бота на Node.js

Изображение заголовка: логотип бота и интерфейс Discord

Быстрые ссылки

  • Получение аккаунта и регистрация приложения
  • Установка Node.js и запуск кода
  • Как запустить бота
  • Как добавить бота на сервер
  • Что можно добавить дальше

Discord предоставляет удобный API для создания ботов и большое сообщество разработчиков. Этот материал — практическое введение. Требуются базовые навыки программирования, но популярные библиотеки делают разработку простой. Мы используем discord.js.

Важно: не публикуйте токен бота в открытых репозиториях.

Получение приложения и токена

Перейдите в панель разработчика Discord и создайте новое приложение.

Скриншот страницы создания приложения в Discord

Запишите Client ID и секрет приложения. Это ещё не бот — это именно “Application”. Перейдите на вкладку “Bot” и добавьте бота к приложению.

Скриншот вкладки Bot с токеном бота

Запишите токен и храните его в секрете. Никогда не коммитьте токен в публичные репозитории — злоумышленники могут завладеть вашим ботом.

Важно: токен — как пароль. Если утёк — немедленно регенерируйте на портале.

Установка Node.js и подготовка к разработке

Чтобы запускать JavaScript вне браузера, установите Node.js. Скачайте инсталлятор с официального сайта, установите и проверьте работу в терминале командой node.

Рекомендуем установить nodemon — утилиту для автоматической перезагрузки при изменениях:

npm i -g nodemon

Нужен текстовый редактор. Подойдёт Visual Studio Code, Atom или любой другой редактор по вкусу.

Пример: «Hello World» бота

Скриншот простого кода бота в редакторе

Скопируйте и сохраните этот код в файл index.js в отдельной папке проекта:

const Discord = require('discord.js');

const client = new Discord.Client();

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('pong');
  }
});

client.login('token');

Коротко о коде:

  • Первая строка импортирует библиотеку discord.js в объект Discord.
  • Вторая строка создаёт клиент — основную точку взаимодействия с API.
  • client.on(‘ready’) срабатывает при запуске бота; здесь мы логируем его имя.
  • client.on(‘message’) срабатывает при каждом сообщении в канале. Мы проверяем содержимое и отвечаем на “ping”.
  • client.login(‘token’) использует токен из панели разработчика. Никогда не оставляйте настоящий токен в публичных местах.

Совет: храните токен в переменных окружения или в файле .env, который не коммитится.

Как запустить бота

Консоль с логами бота

В терминале выполните:

nodemon --inspect index.js

Команда запустит скрипт и включит отладчик Node.js. Откройте chrome://inspect в Chrome, чтобы подключиться к отладчику.

Если всё настроено верно, в консоли появится Logged in as . Вы можете временно добавить дополнительную строку логирования, чтобы видеть все объекты сообщений:

Лог полного объекта сообщения в отладчике

Объект сообщения содержит много полезного: msg.author, msg.channel и другие поля. Исследуйте их в отладчике.

Примечание: бот реагирует и на собственные сообщения, поэтому будьте аккуратны с рекурсией — бот может начать спамить сам себя.

Как добавить бота на сервер

Окно приглашения бота с правами

Сформируйте ссылку приглашения, заменив CLIENTID на ID вашего приложения:

https://discordapp.com/oauth2/authorize?client_id=CLIENTID&scope=bot

Откройте ссылку в браузере и выберите сервер, на который хотите добавить бота. Вы также можете передать эту ссылку друзьям.

Что дальше: расширение функциональности

Пример расширенного бота с меню команд

Возможности ограничены только вашей фантазией и API. Вот несколько направлений:

  • Командная система с префиксом (например, !help).
  • Обработка slash-команд (новый рекомендуемый способ в Discord).
  • Работа с базой данных (SQLite, PostgreSQL, MongoDB) для хранения настроек.
  • Интеграция с вебхуками и внешними API.
  • Роли и управление правами внутри сервера.

Добавьте console.log(client) в начало кода, чтобы изучить объект клиента и связанные Guilds (серверы).

Модели мышления и краткая методология

  • Разделяйте логику: обработка команд, доступ к данным, и сетевое взаимодействие — в разные модули.
  • Отлаживайте в отдельном тестовом сервере, прежде чем выпускать на живые сообщества.
  • Начинайте с минимальной полезной функциональности и добавляйте фичи итеративно.

Мини-методология создания новой команды:

  1. Определите поведение команды (вход, выход, права доступа).
  2. Напишите модуль с тестами (если применимо).
  3. Зарегистрируйте команду и обработчик.
  4. Разверните на тестовом сервере.
  5. Соберите отзывы и корректируйте.

Безопасность и рекомендации по жёсткой защите

  • Никогда не храните токен в репозитории. Используйте переменные среды.
  • Давайте боту только те права, которые ему реально нужны.
  • Для web-хуков и интеграций используйте секреты и проверку подписи.
  • Ограничьте команды, изменяющие состояние сервера, ролями администратора.
  • Регулярно регенерируйте токены, если есть подозрение на утечку.

Короткий чеклист для безопасности:

  • Токен в .env, не в Git
  • Минимальные права OAuth2
  • Логи доступа и мониторинг
  • Обработка ошибок и таймауты

Роли и чеклисты для команды (кто что делает)

Разделение обязанностей ускоряет разработку и снижает риски.

  • Разработчик: пишет код и тесты, отвечает за CI/CD.
  • DevOps: настраивает хостинг, автозапуск и мониторинг.
  • Модератор: тестирует команды на тестовом сервере, проверяет права.
  • Менеджер: приоритизирует фичи и собирает обратную связь.

Плейбук инцидента: бот перестал отвечать

  1. Проверить логи процесса (systemd / pm2 / консоль).
  2. Проверить переменные среды и токен.
  3. Убедиться, что хост доступен и разрешены исходящие соединения.
  4. Перезапустить процесс: nodemon/pm2 restart.
  5. Если ошибка повторяется — вернуть последнюю рабочую версию.
  6. При утечке токена — регенерировать и обновить токен в окружении.

Когда этот подход не подходит (контрпримеры)

  • Нужна супернизкая задержка и высокие SLA — тогда лучше сервисы в Go или Rust с более предсказуемым потреблением ресурсов.
  • Требуется встроенная модерация контента на уровне ML — возможно, лучше использовать специализированные сервисы модерации.
  • Если вы не можете гарантировать безопасность токена — используйте прокси или ограничьте права бота.

Альтернативные подходы

  • Использовать другие SDK: discord.py (Python), Eris (Node), DSharpPlus (.NET).
  • Готовые платформы: BotGhost, Glitch, Replit — для быстрого прототипирования без собственного хостинга.
  • Серверless: запуск обработчиков в AWS Lambda/GCP Cloud Functions для событийного выполнения.

Тесты и критерии приёмки

Критерии приёмки базовой команды ping:

  • Бот корректно логинится в течение 30 секунд.
  • При отправке сообщения “ping” бот отвечает “pong” в том же канале.
  • Бот не отвечает на свои собственные сообщения.

Тесты:

  • Unit-тест для парсера команд.
  • Интеграционный тест с моком сообщений.
  • Нагрузочный тест: бот выдерживает X сообщений в секунду (оцените по вашему хостингу).

Шаблон структуры проекта

  • /config — конфигурации
  • /commands — обработчики команд
  • /events — обработчики событий Discord
  • /services — интеграции с БД и API
  • index.js — точка входа

Советы по развертыванию и масштабированию

  • Используйте pm2 или systemd для автозапуска.
  • Горизонтально масштабируйте обработчики команд при высоких нагрузках и сохраняйте состояние в внешней БД.
  • Кешируйте часто используемые данные (Redis).

Глоссарий (одна строка)

  • Token: секрет приложения для аутентификации бота.
  • Guild: сервер в терминах Discord API.
  • Client: экземпляр библиотеки, управляющий подключением к API.

Примеры расширений и фич, которые стоит попробовать

  • Slash-команды и autocomplete.
  • Система уровней/XP для пользователей.
  • Автоматическое модерации (фильтрация спама).
  • Интеграция с Trello/Github/CI для уведомлений.

Частые ошибки и как их избежать

  • Если бот не логинится — проверьте токен и права OAuth2.
  • Если бот не видит сообщения — проверьте intents (нужно включать некоторые в newer discord.js).
  • Если бот спамит — проверьте логику, чтобы он не реагировал на собственные сообщения.

Краткое резюме

  • Создать базовый бот просто: зарегистрируйте приложение, получите токен, напишите index.js и запустите его.
  • Думайте о безопасности и правах с самого начала.
  • Тестируйте на отдельном сервере и внедряйте фичи постепенно.

Важное: документация discord.js и официальный Discord Developer Portal — ваши лучшие источники при изучении более сложных сценариев.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как использовать Metacritic эффективно
Обзоры

Как использовать Metacritic эффективно

Скачать PDF вместо просмотра в Chrome, Firefox, Edge
Браузеры

Скачать PDF вместо просмотра в Chrome, Firefox, Edge

Удалить фон в Photoshop — быстрые способы
Редактирование фото

Удалить фон в Photoshop — быстрые способы

Почему мерцает телевизор или монитор — причины и решения
Техника

Почему мерцает телевизор или монитор — причины и решения

Аудиокниги на Spotify: как слушать бесплатно
Аудиокниги

Аудиокниги на Spotify: как слушать бесплатно

Управление Android‑приложениями на Windows
Инструкции

Управление Android‑приложениями на Windows