Для создания бота Discord, который будет выдавать роли пользователям, вам потребуется следующее:
1. Зарегистрировать бота на сайте Discord Developer Portal и получить токен для своего бота.
2. Использовать библиотеку для создания ботов, например, `discord.js` для Node.js.
3. Написать код бота с использованием этой библиотеки.
4. Предоставить боту соответствующие права на вашем Discord сервере.
Вот примерный код бота на `discord.js` v12, который выполняет задачи, которые вы описали:
```javascript
const Discord = require('discord.js');
const client = new Discord.Client();
const TOKEN = 'your-bot-token'; // Замените на токен вашего бота
const ROLE_HELPER = 'помощник'; // ID роли помощника
const ROLE_FAMILY = 'семьюха'; // ID роли семьюха
const ROLE_WORKER = 'работник'; // ID роли работника
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
// Функция проверки наличия роли у пользователя
function hasHelperRole(member) {
return member.roles.cache.some(role => role.name === ROLE_HELPER);
}
// Обработка команды для выдачи роли
client.on('message', async message => {
// Игнорирование сообщений от ботов и не команд
if (!message.content.startsWith('!') || message.author.bot) return;
// Получение аргументов и команды
const args = message.content.slice(1).trim().split(/ +/);
const command = args.shift().toLowerCase();
// Команда для выдачи меню выбора ролей
if (command === 'role' && hasHelperRole(message.member)) {
let embed = new Discord.MessageEmbed()
.setTitle('Выберите вашу роль')
.setDescription('Нажмите на соответствующую реакцию для выбора роли.')
.setColor('#0099ff');
let msgMenu = await message.channel.send(embed);
await msgMenu.react('👪'); // Реакция для "семьюха"
await msgMenu.react('💼'); // Реакция для "работник"
// Фильтр для обработки реакций
const filter = (reaction, user) => {
return ['👪', '💼'].includes(reaction.emoji.name) && user.id === message.author.id;
};
msgMenu.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '👪') {
let role = message.guild.roles.cache.find(role => role.name === ROLE_FAMILY);
message.member.roles.add(role).catch(console.error);
message.reply(`вы выбрали роль ${ROLE_FAMILY}`);
} else if (reaction.emoji.name === '💼') {
let role = message.guild.roles.cache.find(role => role.name === ROLE_WORKER);
message.member.roles.add(role).catch(console.error);
message.reply(`вы выбрали роль ${ROLE_WORKER}`);
}
})
.catch(() => {
message.reply('время выбора истекло.');
});
}
});
client.login(TOKEN);
```
***Важно: Этот код рассчитан на `discord.js` версии 12, и если вы используете версию 13 или выше, код нужно будет адаптировать под новый API.***
Чтобы этот код работал, вам нужно:
- Заменить `'your-bot-token'` на реальный токен вашего бота.
- Задать правильные ID для ролей 'Помощник', 'Семьюха', и 'Работник'.
- Дать боту разрешения на управление ролями и на чтение/отправку сообщений в нужном канале.
Проблемы с ботами