Discord предоставляет открытое API, с помощью которого можно создать собственного бота на любом популярном языке программирования. Наиболее распространённый выбор – JavaScript (Node.js) благодаря библиотеке discord.js. Также часто используют Python с библиотекой discord.py, особенно для простых проектов или учебных целей.
Для начала потребуется создать приложение в консоли разработчика Discord по адресу https://discord.com/developers/applications. После создания нужно сгенерировать токен, который будет использоваться для аутентификации бота. Без него подключение к серверам Discord невозможно. Никогда не публикуйте этот токен в открытом доступе.
Далее следует пригласить бота на сервер. Для этого формируется OAuth2-ссылка с указанием прав доступа. Например, минимальный набор – это Read Messages и Send Messages, а для управления ролями или модерации понадобятся Manage Roles, Kick Members и т.д. Правильная настройка прав на старте избавляет от множества проблем в будущем.
Среда разработки зависит от языка. Для Node.js потребуется установить Node.js LTS и создать package.json с зависимостью discord.js. В случае Python – Python 3.10+ и установка discord.py через pip. Структура проекта должна быть простой: отдельный файл для запуска и отдельные модули для команд и событий.
Базовая логика начинается с подключения к Discord через клиент, регистрации событий и обработки команд. Рекомендуется сразу добавить логирование, валидацию входных данных и обработку ошибок. Это облегчает отладку и масштабирование проекта.
Установка Node.js и настройка окружения для разработки бота
Перейдите на официальный сайт Node.js – nodejs.org. Скачайте версию LTS для вашей операционной системы. Установщик включает npm – менеджер пакетов, необходимый для установки библиотек.
После установки откройте терминал и проверьте версии:
node -v
npm -v
Создайте новую папку для проекта. В терминале выполните:
mkdir my-discord-bot && cd my-discord-bot
Инициализируйте проект:
npm init -y
Установите библиотеку discord.js
:
npm install discord.js
Для хранения токена создайте файл .env
и установите пакет dotenv
:
npm install dotenv
Создайте файл index.js
и подключите dotenv:
require('dotenv').config();
В файле .env
добавьте строку:
DISCORD_TOKEN=ваш_токен_бота
Чтобы избежать проблем с импортом в новых версиях Node.js, укажите тип модуля в package.json
:
"type": "module"
Если используется Git, добавьте файл .env
в .gitignore
, чтобы не публиковать токен.
Создание приложения и токена бота в Discord Developer Portal
Перейдите на сайт Discord Developer Portal и авторизуйтесь через свой аккаунт Discord. После входа нажмите кнопку New Application.
Введите имя приложения – это не имя бота в Discord, а внутреннее название. Нажмите Create. Вы попадёте на страницу управления приложением.
В левом меню выберите раздел BotAdd Bot. Подтвердите действие. Появится панель с настройками бота.
Нажмите кнопку Reset Token и сохраните сгенерированный токен. Он отображается только один раз. Если вы потеряете токен, потребуется сгенерировать новый. Не публикуйте токен в открытых репозиториях – это даст полный контроль над вашим ботом.
Настройте следующие параметры:
Username | Отображаемое имя бота. Можно изменить по желанию. |
Public Bot | Отключите, если не хотите, чтобы другие могли приглашать бота без вашего разрешения. |
Presence Intent | Включите, если планируете отслеживать онлайн-статус пользователей. |
Server Members Intent | Обязательно включите, если боту нужно получать список участников сервера. |
Скопируйте Application ID – он понадобится для генерации ссылки приглашения и при инициализации бота в коде.
Инициализация проекта и установка библиотеки discord.js
Откройте терминал и создайте новую директорию под проект:
mkdir my-discord-bot && cd my-discord-bot
Инициализируйте проект с помощью npm:
npm init -y
Установите библиотеку discord.js версии 14 или выше:
npm install discord.js
Для поддержки ES-модулей укажите тип модуля в package.json:
«type»: «module»
Если вы планируете использовать переменные окружения, установите dotenv:
npm install dotenv
Создайте файл index.js и добавьте базовую структуру:
import { Client, GatewayIntentBits } from 'discord.js';
import dotenv from 'dotenv';
dotenv.config();
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent]
});
client.once('ready', () => {
console.log(`Бот запущен как ${client.user.tag}`);
});
client.login(process.env.BOT_TOKEN);
Создайте файл .env в корне проекта и добавьте токен:
BOT_TOKEN=ваш_токен_бота
Убедитесь, что .env добавлен в .gitignore, чтобы не отправлять токен в репозиторий:
.env
Авторизация бота на сервере через OAuth2
Для добавления бота на Discord-сервер используется механизм OAuth2 с правами типа bot. Необходима ссылка с параметрами, которые задаются вручную или через интерфейс разработчика Discord.
Перейдите в https://discord.com/developers/applications, выберите созданное приложение, затем вкладку OAuth2 → URL Generator. В разделе Scopes отметьте bot. Внизу появится поле OAuth2 URL – базовая ссылка для авторизации.
В разделе Bot Permissions выберите необходимые права, например:
Send Messages
– для отправки сообщений;Manage Messages
– для удаления сообщений;Read Message History
– для доступа к истории;Use Application Commands
– для slash-команд.
После выбора параметров скопируйте сгенерированную ссылку и откройте её в браузере. Выберите нужный сервер (требуются права администратора на нём) и подтвердите добавление.
Если вы не хотите использовать генератор, сформируйте ссылку вручную:
https://discord.com/oauth2/authorize?client_id=ВАШ_ID&scope=bot&permissions=ПРАВА
client_id – ID приложения из вкладки General Information,
permissions – число, соответствующее нужным правам. Например, 268435456
– только отправка сообщений.
После успешной авторизации бот появится в списке участников сервера, но работать начнёт только при активном подключении к API Discord.
Обработка сообщений и создание простых команд
Для обработки сообщений необходимо подписаться на событие messageCreate. Оно срабатывает при каждом новом сообщении на сервере. Подключение выглядит так:
client.on('messageCreate', async (message) => {
if (message.author.bot) return;
// обработка сообщений
});
Игнорировать сообщения от ботов обязательно, иначе можно получить бесконечный цикл. Далее – определим команду. Обычно команды начинаются с префикса, например !. Проверка может выглядеть так:
const prefix = '!';
if (!message.content.startsWith(prefix)) return;
const args = message.content.slice(prefix.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
Теперь можно реализовать простые команды. Пример команды ping, отвечающей Pong!:
if (command === 'ping') {
await message.reply('Pong!');
}
Для обработки аргументов команда say может пересылать текст от имени бота:
if (command === 'say') {
const text = args.join(' ');
if (!text) return message.reply('Укажите текст.');
await message.channel.send(text);
}
Все команды желательно выносить в отдельные модули, но для начальной реализации этого достаточно. При масштабировании лучше использовать коллекции команд и динамическую загрузку файлов через fs.
Работа с переменными окружения и безопасное хранение токена
Токен Discord бота – ключ к доступу и управлению, поэтому хранить его нужно отдельно от исходного кода. Переменные окружения позволяют избежать публикации токена в репозитории и снизить риск компрометации.
Для работы с переменными окружения выполните следующие шаги:
- Создайте файл
.env
в корне проекта. Внутри укажите токен в формате: - Установите пакет
dotenv
(если используете Node.js):npm install dotenv
- Подключите и загрузите переменные в начале основного файла бота:
- Используйте переменную окружения для доступа к токену:
DISCORD_TOKEN=ваш_токен_бота
require('dotenv').config();
const token = process.env.DISCORD_TOKEN;
Дополнительные меры безопасности:
- Добавьте
.env
в.gitignore
, чтобы исключить файл из контроля версий. - Ограничьте доступ к файлу на сервере, установив права 600 или аналогичные.
- Не передавайте токен в логах, ответах бота или ошибках.
- При случайной утечке токена немедленно создайте новый через Discord Developer Portal.
Использование переменных окружения гарантирует, что токен не будет случайно опубликован и облегчит настройку на разных средах (локально, сервер, CI/CD).
Развёртывание бота на VPS или хостинге с автозапуском
Для постоянной работы Discord бота выбирайте VPS с поддержкой Linux, например Ubuntu 20.04. На виртуальном сервере установите Node.js версии не ниже 16, используя официальный репозиторий или nvm. Загрузите исходники бота через git или SCP.
Автозапуск обеспечит systemd – стандартный менеджер служб в современных дистрибутивах. Создайте unit-файл, например /etc/systemd/system/discordbot.service, с параметрами:
[Unit]
Description=Discord Bot
After=network.target
[Service]
User=имя_пользователя
WorkingDirectory=/путь/к/проекту
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Активируйте службу командой sudo systemctl enable discordbot
и запустите sudo systemctl start discordbot
. Статус проверяйте через sudo systemctl status discordbot
.
При использовании хостинга с ограниченным доступом можно применить PM2 – менеджер процессов Node.js. Установите его глобально (npm install -g pm2
), запустите бота через pm2 start index.js
и сохраните конфигурацию pm2 save
. Автозапуск PM2 настраивается командой pm2 startup
, которая создаст скрипт автозапуска.
Такая настройка гарантирует, что бот будет автоматически запускаться после перезагрузки сервера, что исключит простой и необходимость ручного вмешательства.
Вопрос-ответ:
Какие базовые инструменты и знания нужны для создания собственного Discord бота с нуля?
Для начала потребуется знание одного из языков программирования, чаще всего используют JavaScript с библиотекой Discord.js или Python с библиотекой discord.py. Также понадобится аккаунт Discord и создание приложения в Discord Developer Portal, где можно получить токен для бота. Важно понимать основы работы с API и основы асинхронного программирования, так как общение с сервером Discord происходит асинхронно. Для тестирования и запуска бота подойдёт любой компьютер с доступом в интернет, а также установка Node.js (для JavaScript) или Python и необходимых библиотек.
Как правильно настроить права доступа бота в Discord, чтобы он мог выполнять нужные команды?
При создании бота в Discord Developer Portal нужно назначить необходимые разрешения в разделе OAuth2. Там можно выбрать права, которые будут предоставлены боту, например, читать сообщения, отправлять сообщения, управлять ролями и другие. Затем при добавлении бота на сервер используется специальная ссылка с параметрами прав. Важно не давать боту лишних полномочий, чтобы не создавать угрозу безопасности. Если бот должен только отвечать на команды в чатах, достаточно базовых прав на чтение и отправку сообщений. В случае более сложных действий нужно расширять список разрешений, следя за безопасностью.
Можно ли создать Discord бота без опыта программирования? Какие есть простые способы?
Да, существуют конструкторы ботов с графическим интерфейсом, где не нужно писать код. Такие сервисы позволяют настроить действия бота с помощью готовых блоков или сценариев. Это удобно для новичков, которые хотят быстро получить работающего бота с базовыми функциями, например, приветствие новых участников или автоматические ответы. Однако такие боты имеют ограничения в возможностях и гибкости. Если понадобится более сложный функционал, всё равно придётся изучать программирование и работу с API Discord.
Как обезопасить токен бота, чтобы его никто не украл и не использовал неправомерно?
Токен бота — это ключ доступа, который нельзя никому показывать или публиковать в открытом доступе. Его нужно хранить в отдельном файле конфигурации или переменных окружения, которые не попадают в репозитории и не выкладываются в интернет. Если токен случайно оказался в публичном доступе, необходимо срочно сгенерировать новый в Discord Developer Portal. Также не рекомендуется делиться токеном с другими людьми или использовать его на ненадёжных компьютерах. Такие меры помогут защитить бота от взлома и нежелательных действий.
Как сделать так, чтобы бот реагировал на команды пользователей в чате?
Для этого нужно запрограммировать обработчик сообщений. В библиотеке Discord.js, например, создаётся событие, которое срабатывает при получении сообщения. Внутри обработчика проверяется, начинается ли сообщение с префикса (например, «!») и соответствует ли оно известной команде. Если да, то вызывается соответствующая функция, которая выполняет нужные действия — отправляет ответ, изменяет настройки сервера и так далее. Для удобства можно хранить список команд в отдельном модуле и добавлять новые команды без изменений в основной код. Такой подход упрощает расширение функционала.
Какие шаги нужны, чтобы создать своего первого Discord бота с нуля?
Для начала нужно зарегистрировать приложение на сайте Discord Developer Portal, создать там нового бота и получить его токен — это уникальный ключ для доступа к боту. Затем стоит выбрать язык программирования — чаще всего используют Python или JavaScript. После этого нужно написать код бота с использованием библиотеки для работы с Discord API (например, discord.py для Python или discord.js для JavaScript). В коде задаются команды и поведение бота. После написания кода его нужно запустить на компьютере или сервере, чтобы бот начал работать. Чтобы бот мог заходить на сервер, нужно пригласить его, используя специальную ссылку с разрешениями.