Создание Discord-бота с нуля: от регистрации до запуска

Иван Корнев·26.04.2026·4 мин

Чтобы создать бота в Discord, необходимо зарегистрировать приложение на портале разработчиков, получить токен доступа, настроить права (intents) и пригласить бота на сервер через специальную ссылку. После этого останется написать код на JavaScript или Python и запустить его. Весь процесс занимает около 15–20 минут.

В этой инструкции разберем каждый этап: от создания «оболочки» бота до написания первого рабочего скрипта, который будет отвечать на команды.

Оглавление

  1. Регистрация приложения и получение токена
  2. Настройка прав и добавление бота на сервер
  3. Написание кода: Node.js (discord.js)
  4. Написание кода: Python (discord.py)
  5. Частые ошибки при запуске
  6. FAQ

1. Регистрация приложения и получение токена

Все действия происходят на портале разработчиков Discord.

  1. Нажмите кнопку New Application в правом верхнем углу.
  2. Введите имя бота (например, MyFirstBot) и нажмите Create.
  3. Перейдите во вкладку Bot в меню слева.
  4. Нажмите кнопку Add Bot и подтвердите действие (Yes, do it!).

Теперь у вас есть учетная запись бота. На этой же странице найдите раздел Token. Нажмите Reset Token (или View Token), чтобы увидеть секретный ключ.

Никогда не публикуйте токен! Если кто-то узнает ваш токен, он сможет управлять ботом от вашего имени. Если токен случайно попал в открытый доступ, немедленно нажмите Regenerate (Обновить), чтобы старый перестал работать.

Сохраните токен в надежном месте. Для разработки лучше всего использовать переменные окружения (файл .env), а не вставлять токен прямо в код.

2. Настройка прав и добавление бота на сервер

Сам по себе бот не появится на вашем сервере — его нужно пригласить.

  1. В панели управления приложением перейдите во вкладку OAuth2 -> URL Generator.
  2. В разделе Scopes отметьте галочкой bot.
  3. Ниже появится блок Bot Permissions. Выберите права, которые нужны боту.
    • Для начала достаточно: Send Messages, Read Message History, Use Slash Commands.
    • Если бот должен читать текст команд (префиксные команды вроде !ping), обязательно включите Message Content Intent (это делается на вкладке Bot в разделе Privileged Gateway Intents, см. ниже).
  4. Скопируйте сгенерированную ссылку из поля Generated URL.
  5. Вставьте ссылку в браузер, выберите сервер, где у вас есть права администратора, и нажмите Authorize.

Важно про Intents (Намерения) Если вы планируете использовать префиксные команды (например, !help), вам нужно включить Message Content Intent:

  1. Зайдите во вкладку Bot.
  2. Прокрутите вниз до раздела Privileged Gateway Intents.
  3. Включите переключатель Message Content Intent. Без этого бот не будет видеть текст обычных сообщений.

3. Написание кода: Node.js (discord.js)

Это самый популярный способ создания ботов. Вам понадобится установленный Node.js.

Подготовка проекта

Создайте папку для бота, откройте терминал в этой папке и выполните:

npm init -y
npm install discord.js dotenv

Создайте файл .env и запишите туда токен:

TOKEN=ваш_токен_здесь

Создайте файл index.js со следующим кодом:

const { Client, GatewayIntentBits } = require('discord.js');
require('dotenv').config();

// Создаем клиент с необходимыми намерениями
const client = new Client({ 
    intents: [
        GatewayIntentBits.Guilds, 
        GatewayIntentBits.GuildMessages, 
        GatewayIntentBits.MessageContent // Нужно для чтения текста сообщений
    ] 
});

// Событие готовности бота
client.once('ready', () => {
    console.log(`Бот ${client.user.tag} успешно запущен!`);
});

// Обработка сообщений
client.on('messageCreate', (message) => {
    // Игнорируем сообщения от других ботов
    if (message.author.bot) return;

    // Простая команда !ping
    if (message.content === '!ping') {
        message.reply('Pong! 🏓');
    }
});

// Вход в систему
client.login(process.env.TOKEN);

Запустите бота командой:

node index.js

4. Написание кода: Python (discord.py)

Альтернатива для тех, кто предпочитает Python.

Подготовка

Установите библиотеки:

pip install discord.py python-dotenv

Создайте файл .env:

TOKEN=ваш_токен_здесь

Создайте файл bot.py:

import discord
import os
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv('TOKEN')

# Настройка интентов
intents = discord.Intents.default()
intents.message_content = True # Разрешаем чтение содержимого сообщений

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'Бот {client.user} запустился успешно!')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('!ping'):
        await message.channel.send('Pong! 🏓')

client.run(TOKEN)

Запуск:

python bot.py

Частые ошибки при запуске

ОшибкаПричинаРешение
DisallowedIntentsВ коде запрошен MessageContent, но он не включен в панели разработчика.Включите Message Content Intent во вкладке Bot на портале Discord.
LoginFailure / 401 UnauthorizedНеверный токен.Проверьте файл .env. Убедитесь, что нет лишних пробелов. Попробуйте обновить токен (Regenerate).
Бот онлайн, но не отвечаетНет прав на чтение сообщений или не совпадает префикс.Проверьте права бота на сервере. Убедитесь, что вы пишете команду точно (например, !ping, а не ! ping).
SyntaxError в Node.jsИспользуется старая версия discord.js с новым синтаксисом или наоборот.Убедитесь, что версия библиотеки соответствует гайду (в примере выше — v14+).

FAQ

Нужен ли хостинг для бота? Для тестов хватит вашего компьютера. Но если вы выключите ПК, бот офлайн. Для круглосуточной работы арендуйте дешевый VPS (Ubuntu/Debian) или используйте облачные сервисы.

Можно ли сделать бота без программирования? Да, существуют конструкторы ботов (например, Disboard, MEE6), но они ограничены готовыми функциями. Свой код дает полную свободу действий.

Почему бот не видит мои команды слэша (/)? В примерах выше показаны текстовые команды. Для слэш-команд (/ping) требуется отдельная регистрация команд через ApplicationCommandManager. Это более современный и удобный для пользователей способ, но он требует чуть более сложной начальной настройки кода.

Безопасно ли хранить токен в файле .env? Да, это стандартная практика. Главное — добавьте файл .env в .gitignore, если используете Git, чтобы он не улетел в публичный репозиторий.