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

Быстрые ссылки
- Получение аккаунта и регистрация приложения
- Установка Node.js и запуск кода
- Как запустить бота
- Как добавить бота на сервер
- Что можно добавить дальше
Discord предоставляет удобный API для создания ботов и большое сообщество разработчиков. Этот материал — практическое введение. Требуются базовые навыки программирования, но популярные библиотеки делают разработку простой. Мы используем discord.js.
Важно: не публикуйте токен бота в открытых репозиториях.
Получение приложения и токена
Перейдите в панель разработчика Discord и создайте новое приложение.

Запишите Client ID и секрет приложения. Это ещё не бот — это именно “Application”. Перейдите на вкладку “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 (серверы).
Модели мышления и краткая методология
- Разделяйте логику: обработка команд, доступ к данным, и сетевое взаимодействие — в разные модули.
- Отлаживайте в отдельном тестовом сервере, прежде чем выпускать на живые сообщества.
- Начинайте с минимальной полезной функциональности и добавляйте фичи итеративно.
Мини-методология создания новой команды:
- Определите поведение команды (вход, выход, права доступа).
- Напишите модуль с тестами (если применимо).
- Зарегистрируйте команду и обработчик.
- Разверните на тестовом сервере.
- Соберите отзывы и корректируйте.
Безопасность и рекомендации по жёсткой защите
- Никогда не храните токен в репозитории. Используйте переменные среды.
- Давайте боту только те права, которые ему реально нужны.
- Для web-хуков и интеграций используйте секреты и проверку подписи.
- Ограничьте команды, изменяющие состояние сервера, ролями администратора.
- Регулярно регенерируйте токены, если есть подозрение на утечку.
Короткий чеклист для безопасности:
- Токен в .env, не в Git
- Минимальные права OAuth2
- Логи доступа и мониторинг
- Обработка ошибок и таймауты
Роли и чеклисты для команды (кто что делает)
Разделение обязанностей ускоряет разработку и снижает риски.
- Разработчик: пишет код и тесты, отвечает за CI/CD.
- DevOps: настраивает хостинг, автозапуск и мониторинг.
- Модератор: тестирует команды на тестовом сервере, проверяет права.
- Менеджер: приоритизирует фичи и собирает обратную связь.
Плейбук инцидента: бот перестал отвечать
- Проверить логи процесса (systemd / pm2 / консоль).
- Проверить переменные среды и токен.
- Убедиться, что хост доступен и разрешены исходящие соединения.
- Перезапустить процесс: nodemon/pm2 restart.
- Если ошибка повторяется — вернуть последнюю рабочую версию.
- При утечке токена — регенерировать и обновить токен в окружении.
Когда этот подход не подходит (контрпримеры)
- Нужна супернизкая задержка и высокие 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 — ваши лучшие источники при изучении более сложных сценариев.
Похожие материалы
Как использовать Metacritic эффективно
Скачать PDF вместо просмотра в Chrome, Firefox, Edge
Удалить фон в Photoshop — быстрые способы
Почему мерцает телевизор или монитор — причины и решения
Аудиокниги на Spotify: как слушать бесплатно