Я пытаюсь закодировать ролевую реакцию для моего бота разногласий. В настоящее время, сейчас я застрял на том, как сделать так, чтобы несколько человек могли реагировать на сообщение, чтобы получить роль (и) или удалить роль (и). Я также хотел бы, чтобы встраиваемое сообщение было постоянным.
Любое руководство будет полезным, поскольку я пытаюсь закодировать это в течение нескольких дней, и я просто не могу его получить.
Это мой текущий код:
const Discord = require("discord.js");
const colors = require("../colors");
const botconfig = require("../botconfig")
module.exports.run = async (bot, message, args) => {
const eRole = message.guild.roles.get('688477690344374283'); // Events
const uRole = message.guild.roles.get('688477558982836344'); // Updates
const pRole = message.guild.roles.get('688477868078137369'); // Polls
const smRole = message.guild.roles.get('687498488295981069'); // Social Media
const qRole = message.guild.roles.get('688477467840872452'); // QOTD
const filter = (reaction, user) => ['❤️', '?', '?', '?','?'].includes(reaction.emoji.name) && user.id === message.author.id;
let embed = new Discord.RichEmbed()
.setTitle('Pinged Roles')
.setDescription(`
❤️ ${eRole.toString()}
? ${uRole.toString()}
? ${pRole.toString()}
? ${smRole.toString()}
? ${qRole.toString()}
`)
.addField("**TIP:**", "Double react to remove a role")
.setColor(colors.aqua)
.setTimestamp()
.setFooter(`mc.advancius.net`,bot.user.displayAvatarURL)
message.channel.send(embed).then(async msg => {
await msg.react('❤️');
await msg.react('?');
await msg.react('?');
await msg.react('?');
await msg.react('?');
msg.awaitReactions(filter, {
max:1,
}).then(collected => {
const reaction = collected.first();
switch (reaction.emoji.name) {
case '❤️':
if (message.member.roles.has(eRole.id)) {
return message.channel.send('You are already in this role!').then(m => m.delete(3000));
}
message.member.addRole(eRole).catch(err => {
console.log(err);
return message.channel.send(`Error adding you to this role: **${err.message}**.`);
});
message.channel.send(`You have been added to the **${eRole.name}** role!`).then(m => m.delete(3000));
break;
case '?':
if (message.member.roles.has(uRole.id)) {
return message.channel.send('You are already in this role!').then(m => m.delete(3000));
}
message.member.addRole(uRole).catch(err => {
console.log(err);
return message.channel.send(`Error adding you to this role: **${err.message}**.`);
});
message.channel.send(`You have been added to the **${uRole.name}** role!`).then(m => m.delete(3000));
break;
case '?':
if (message.member.roles.has(pRole.id)) {
return message.channel.send('You are already in this role!').then(m => m.delete(3000));
}
message.member.addRole(pRole).catch(err => {
console.log(err);
return message.channel.send(`Error adding you to this role: **${err.message}**.`);
});
message.channel.send(`You have been added to the **${pRole.name}** role!`).then(m => m.delete(3000));
break;
case '?':
if (message.member.roles.has(smRole.id)) {
return message.channel.send('You are already in this role!').then(m => m.delete(3000));
}
message.member.addRole(smRole).catch(err => {
console.log(err);
return message.channel.send(`Error adding you to this role: **${err.message}**.`);
});
message.channel.send(`You have been added to the **${smRole.name}** role!`).then(m => m.delete(3000));
break;
case '?':
if (message.member.roles.has(qRole.id)) {
return message.channel.send('You are already in this role!').then(m => m.delete(3000));
}
message.member.addRole(qRole).catch(err => {
console.log(err);
return message.channel.send(`Error adding you to this role: **${err.message}**.`);
});
message.channel.send(`You have been added to the **${qRole.name}** role!`).then(m => m.delete(3000));
break;
};
});
})
};
exports.help = {
name: 'roles2'
};