В этом руководстве мы создадим бота для 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
- Перейдите на Discord Developer Portal.
- Нажмите на кнопку “New Application” и дайте вашему приложению имя.
- Перейдите в раздел “Bot” и нажмите “Add Bot”.
- Скопируйте токен вашего бота — он понадобится вам для подключения к Discord.
- В разделе “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:
- Перейдите в “Настройки пользователя” -> “Дополнительно”.
- Включите “Режим разработчика”.
- Щелкните правой кнопкой мыши на роли в списке ролей вашего сервера и выберите “Копировать 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, который может обрабатывать запросы на получение ролей. Вы можете расширять его функционал, добавляя новые команды или улучшая логику обработки запросов.
Отправить комментарий