В настоящее время пользователь может выбирать как можно больше ролей, указанных в разделе, однако я хотел бы иметь возможность сделать что-то вроде:
(роль A ИЛИ роль B) И (роль C ИЛИ рольD) И рольE и т. Д.
Все вышеперечисленное предназначено для запуска путем проверки того, какие реакции они уже отправили, и удаления их, если новый выбор противоречит текущему.
Пользователи могут применять к себе роли реакции, реагируя на указанное сообщение. В зависимости от того, сделан ли определенный выбор, он может быть добавлен / удален из другой роли, т.е.
Сколько тебе лет?
- 18-24
- 25-30
- 31 +
Какой у вас пол?
- Мужчина
- женский
На каком континенте вы находитесь?
- ИДК, у меня кончились
- поддельные вопросы
- заполнить пробел.
Если пользователь щелкает 25-30, но затем понимает, что им 24, и щелкает по нему вместо этого, я бы хотел, чтобы предыдущая реакция и роль были удалены без необходимости ручного вмешательства.
Будет доступна не только 1 опция, поэтому хотелось бы иметь несколько вариантов выбора.
bot.on("raw", event =>{
console.log(event);
const eventName = event.t;
if(eventName === 'MESSAGE_REACTION_ADD')
{
if(event.d.message_id === '<REMOVED ID>')
{
var reactionChannel = bot.channels.get(event.d.channel_id);
if(reactionChannel.messages.has(event.d.message_id))
return;
else {
reactionChannel.fetchMessage(event.d.message_id)
.then(msg => {
var msgReaction = msg.reactions.get(event.d.emoji.name + ":" + event.d.emoji.id);
var user = bot.users.get(event.d.user_id);
bot.emit('messageReactionAdd', msgReaction, user);
})
.catch(err => console.log(err));
}
}
}
else if (eventName === 'MESSAGE_REACTION_REMOVE')
{
if(event.d.message_id === '<REMOVED ID>')
{
var reactionChannel = bot.channels.get(event.d.channel_id);
if(reactionChannel.messages.has(event.d.message_id))
return;
else{
reactionChannel.fetchMessage(event.d.message_id)
.then(msg => {
var msgReaction = msg.reactions.get(event.d.emoji.name + ":" + event.d.emoji.id);
var user = bot.users.get(event.d.user_id);
bot.emit('messageReactionRemove', msgReaction, user);
})
.catch(err => console.log(err));
}
}
}
});
bot.on('messageReactionAdd', (messageReaction, user) => {
var roleName = messageReaction.emoji.name;
var role = messageReaction.message.guild.roles.find(role => role.name.toLowerCase() === roleName.toLowerCase());
if(role)
{
var member = messageReaction.message.guild.members.find(member => member.id === user.id);
if(member)
{
member.addRole(role.id);
console.log('Success. Added role.');
}
}
});
bot.on('messageReactionRemove', (messageReaction, user) => {
var roleName = messageReaction.emoji.name;
var role = messageReaction.message.guild.roles.find(role => role.name.toLowerCase() === roleName.toLowerCase());
if(role)
{
var member = messageReaction.message.guild.members.find(member => member.id === user.id);
if(member)
{
member.removeRole(role.id);
console.log('Success. Removed role.');
}
}
});```