【发布时间】:2020-07-06 06:35:39
【问题描述】:
你好 Stackoverflow 社区!
我正在尝试创建的反应收集器开关有点问题,但有点卡住了。我想要这段代码做的很简单;当人们对一种颜色做出反应时,他们获得了颜色角色,他们的反应被移除了,所以如果他们想要改变,他们只需对新颜色做出反应,等等。 但我似乎无法让它工作。我没有收到任何错误消息,我只是没有得到任何角色。先感谢您!!非常感谢!
代码:
const Discord = require("discord.js");
module.exports.run = async (bot, message, args, client) => {
const RandomColour = ("000000" + Math.random().toString(16).slice(2, 8).toUpperCase()).slice(-6);
message.delete();
const black = message.guild.roles.get("595509263754067969");
const white = message.guild.roles.get("595510495902040074");
const magenta = message.guild.roles.get("595510495902040074");
const purple = message.guild.roles.get("595507863355654154");
const red = message.guild.roles.get("595506989212106802");
const orange = message.guild.roles.get("595507331396009986");
const yellow = message.guild.roles.get("595507180183093248");
const green = message.guild.roles.get("595507124574879744");
const blue = message.guild.roles.get("595507043629268993");
const filter = (reaction, user) => reaction.emoji.name === [
'black' ,
'white' ,
'magenta' ,
'purple' ,
'red' ,
'orange' ,
'yellow' ,
'green' ,
'blue'].includes(reaction.emoji.name) && user.id === message.member.id;
const embed = new Discord.RichEmbed()
.setAuthor("Available Roles")
.setDescription(`
Black ${black.toString()} | ⬛
White ${white.toString()} | ⬜
Magenta ${magenta.toString()} | ????
Purple ${purple.toString()} | ????
Red ${red.toString()} | ????
Orange ${orange.toString()} | ????
Yellow ${yellow.toString()} | ????
Green ${green.toString()} | ????
Blue ${blue.toString()} | ????
`)
.setFooter("React on the right emoji to get a colour.")
.setColor(RandomColour)
.setTimestamp()
message.channel.send(embed).then(async function (message) {
await message.react("⬛");
await message.react("⬜");
await message.react("????");
await message.react("????");
await message.react("????");
await message.react("????");
await message.react("????");
await message.react("????");
await message.react("????");
message.awaitReactions(filter).then(async function (collected) {
const reaction = collected.first();
switch (reaction.emoji.name) {
case 'black':
if (message.member.roles.has(black.id)) {
return;
} else {
message.member.addRole(black).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ⬛ and gained then **${black.name} role!`)
}
break;
case 'white':
if (message.member.roles.has(white.id)) {
return;
} else {
message.member.addRole(white).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ⬜ and gained then **${white.name} role!`)
}
break;
case 'magenta':
if (message.member.roles.has(magenta.id)) {
return;
} else {
message.member.addRole(magenta).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${magenta.name} role!`)
}
break;
case 'purple':
if (message.member.roles.has(purple.id)) {
return;
} else {
message.member.addRole(purple).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${purple.name} role!`)
}
break;
case 'red':
if (message.member.roles.has(red)) {
return;
} else {
reaction.message.member.addRole(red).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${red.name} role!`)
}
break;
case 'orange':
if (message.member.roles.has(orange.id)) {
return;
} else {
message.member.addRole(orange).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${orange.name} role!`)
}
break;
case 'yellow':
if (message.member.roles.has(yellow.id)) {
return;
} else {
message.member.addRole(yellow).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${yellow.name} role!`)
}
break;
case 'green':
if (message.member.roles.has(green.id)) {
return;
} else {
message.member.addRole(green).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${green.name} role!`)
}
break;
case 'blue':
if (message.member.roles.has(blue.id)) {
return;
} else {
message.member.addRole(blue).catch(err => {
console.log(err);
return message.member.send(`Error adding you to this role: **${err}**`)
})
message.member.send(`You've reacted on ???? and gained then **${blue.name} role!`)
}
break;
}
}).catch(collected => {
return message.channel.send("I couldn't add you to this role. If this keeps occouring, contact staff.")
}).catch(err => console.log(err))
}).catch(err => console.log(err))
}
module.exports.help = {
name: "reactroles",
aliases: []
}
【问题讨论】:
标签: discord.js