Как создать своего бота в discord

Как создать своего бота в discord

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 и настройка окружения для разработки бота

Перейдите на официальный сайт 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

Авторизация бота на сервере через 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 бота – ключ к доступу и управлению, поэтому хранить его нужно отдельно от исходного кода. Переменные окружения позволяют избежать публикации токена в репозитории и снизить риск компрометации.

Для работы с переменными окружения выполните следующие шаги:

  1. Создайте файл .env в корне проекта. Внутри укажите токен в формате:
  2. DISCORD_TOKEN=ваш_токен_бота
  3. Установите пакет dotenv (если используете Node.js): npm install dotenv
  4. Подключите и загрузите переменные в начале основного файла бота:
  5. require('dotenv').config();
  6. Используйте переменную окружения для доступа к токену:
  7. 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). В коде задаются команды и поведение бота. После написания кода его нужно запустить на компьютере или сервере, чтобы бот начал работать. Чтобы бот мог заходить на сервер, нужно пригласить его, используя специальную ссылку с разрешениями.

Ссылка на основную публикацию