我正在尝试为我朋友的一台服务器编程一个discord bot。他希望ban命令成为多数表决对象,如果一个用户试图禁止另一个用户,则该漫游器会对该消息添加响应,并且当时间限制到期时,该漫游器会根据是否有该用户来决定禁止该用户。 5票赞成。否则,禁令将无法通过。
但是,我的问题是,一个用户可以继续对壁虱表情符号做出反应,这为“是”添加了越来越多的选票。我正在寻找一种方法,可以查看用户是否已经投票,如果已经投票,则使其其他投票不增加得分。
我的代码如下:
const user = msg.mentions.users.first();
if(!user) return msg.reply("You need to @ someone you want me to ban");
await msg.react('✅');
await msg.react('❌');
const filter = (reaction, user) => reaction.emoji.name === '✅' && msg.author.id;
const collector = msg.createReactionCollector(filter, { time: 15000 });
let yesvotes = 0
collector.on('collect', collected => {
console.log(`Collected ${collected.emoji.name}`)
yesvotes += 1;
});
collector.on('end', collected => {
msg.channel.send(`Collected ${yesvotes} votes`)
if(yesvotes >= 5) {
// ban the user
}
});```
答案 0 :(得分:0)
我修复了第5行的小问题,其中只有消息作者可以做出反应。 我将用户存储到数组中,并且仅在列表中没有用户时才将其添加到计数中。 ^^
Dtb