Top.Mail.Ru
Как создать бота для Discord на Node.js для запроса ролей — Geek Peak
Сейчас загружается

Как создать бота для Discord на Node.js для запроса ролей

В этом руководстве мы создадим бота для Discord на Node.js, который будет обрабатывать запросы на получение ролей. Мы будем использовать библиотеку discord.js, которая предоставляет удобный интерфейс для работы с Discord API.

Шаг 1: Установка необходимых инструментов

Перед началом убедитесь, что у вас установлен Node.js. Если его нет, скачайте и установите последнюю версию с официального сайта Node.js.

Установите библиотеку discord.js

Создайте новую папку для вашего проекта и перейдите в нее через терминал. Затем выполните следующие команды:

mkdir discord-role-bot
cd discord-role-bot
npm init -y
npm install discord.js

Шаг 2: Создание бота в Discord

  1. Перейдите на Discord Developer Portal.
  2. Нажмите на кнопку “New Application” и дайте вашему приложению имя.
  3. Перейдите в раздел “Bot” и нажмите “Add Bot”.
  4. Скопируйте токен вашего бота — он понадобится вам для подключения к Discord.
  5. В разделе “OAuth2” выберите “URL Generator”, установите флажок “bot” и выберите необходимые разрешения (например, “Manage Roles” и “Send Messages”). Скопируйте сгенерированный URL и используйте его, чтобы пригласить бота на ваш сервер.

Шаг 3: Написание кода для бота

Создайте файл bot.js и добавьте следующий код:

const { Client, Intents } = require('discord.js');
const { token } = require('./config.json'); // Создайте файл config.json с токеном

const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

// Список ролей, которые можно запросить
const roles = {
    "роль1": "ROLE_ID_1", // Замените на ID вашей роли
    "роль2": "ROLE_ID_2", // Замените на ID вашей роли
};

client.once('ready', () => {
    console.log(`Бот ${client.user.tag} запущен!`);
});

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

    // Проверяем, начинается ли сообщение с команды "!роль"
    if (message.content.startsWith('!роль')) {
        const args = message.content.split(' ').slice(1);
        const roleName = args.join(' ').toLowerCase();

        const roleId = roles[roleName];
        if (roleId) {
            const role = message.guild.roles.cache.get(roleId);
            if (role) {
                if (message.member.roles.cache.has(role.id)) {
                    return message.channel.send(`У вас уже есть роль ${role.name}.`);
                }
                try {
                    await message.member.roles.add(role);
                    return message.channel.send(`Вы получили роль ${role.name}!`);
                } catch (error) {
                    console.error(error);
                    return message.channel.send('Не удалось добавить роль. Убедитесь, что у бота есть необходимые разрешения.');
                }
            } else {
                return message.channel.send('Роль не найдена.');
            }
        } else {
            return message.channel.send('Такой роли не существует. Доступные роли: ' + Object.keys(roles).join(', '));
        }
    }
});

// Запускаем бота
client.login(token);

Шаг 4: Получение ID ролей

Чтобы получить ID ролей, вы можете включить режим разработчика в Discord:

  1. Перейдите в “Настройки пользователя” -> “Дополнительно”.
  2. Включите “Режим разработчика”.
  3. Щелкните правой кнопкой мыши на роли в списке ролей вашего сервера и выберите “Копировать ID”.

Замените ROLE_ID_1 и ROLE_ID_2 в коде на соответствующие ID ваших ролей.

Шаг 5: Создание файла конфигурации

Создайте файл config.json в корне вашего проекта и добавьте в него следующий код:

{
    "token": "YOUR_BOT_TOKEN" // Замените на ваш токен
}

Шаг 6: Запуск бота

Теперь вы готовы запустить бота. В терминале выполните команду:

node bot.js

Если все настроено правильно, вы увидите сообщение, что бот запущен.

Шаг 7: Использование бота

Теперь вы можете использовать команду для запроса ролей на вашем Discord-сервере. Например, чтобы получить роль “роль1”, вы можете ввести в чат:

!роль роль1

Полный код

Вот полный код вашего бота:

bot.js

const { Client, Intents } = require('discord.js');
const { token } = require('./config.json'); // Создайте файл config.json с токеном

const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

// Список ролей, которые можно запросить
const roles = {
    "роль1": "ROLE_ID_1", // Замените на ID вашей роли
    "роль2": "ROLE_ID_2", // Замените на ID вашей роли
};

client.once('ready', () => {
    console.log(`Бот ${client.user.tag} запущен!`);
});

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

    // Проверяем, начинается ли сообщение с команды "!роль"
    if (message.content.startsWith('!роль')) {
        const args = message.content.split(' ').slice(1);
        const roleName = args.join(' ').toLowerCase();

        const roleId = roles[roleName];
        if (roleId) {
            const role = message.guild.roles.cache.get(roleId);
            if (role) {
                if (message.member.roles.cache.has(role.id)) {
                    return message.channel.send(`У вас уже есть роль ${role.name}.`);
                }
                try {
                    await message.member.roles.add(role);
                    return message.channel.send(`Вы получили роль ${role.name}!`);
                } catch (error) {
                    console.error(error);
                    return message.channel.send('Не удалось добавить роль. Убедитесь, что у бота есть необходимые разрешения.');
                }
            } else {
                return message.channel.send('Роль не найдена.');
            }
        } else {
            return message.channel.send('Такой роли не существует. Доступные роли: ' + Object.keys(roles).join(', '));
        }
    }
});

// Запускаем бота
client.login(token);

config.json

{
    "token": "YOUR_BOT_TOKEN" // Замените на ваш токен
}

Заключение

Теперь у вас есть бот для Discord на Node.js, который может обрабатывать запросы на получение ролей. Вы можете расширять его функционал, добавляя новые команды или улучшая логику обработки запросов.

Отправить комментарий