Discord.js I';我编写了一个不和谐的机器人并制作了一个验证系统,但奇怪的事情正在发生
这是我需要帮助的代码,它的作用是通过让你回答问题来确保你是人类,例如:“天空是什么颜色的”,但是如果你回答蓝色,它会说“太好了!你现在被验证了!”然后说“看起来你没有得到正确的答案,正确的答案是蓝色的”即使你写了正确的答案,它也没有给你验证过的角色Discord.js I';我编写了一个不和谐的机器人并制作了一个验证系统,但奇怪的事情正在发生,discord.js,Discord.js,这是我需要帮助的代码,它的作用是通过让你回答问题来确保你是人类,例如:“天空是什么颜色的”,但是如果你回答蓝色,它会说“太好了!你现在被验证了!”然后说“看起来你没有得到正确的答案,正确的答案是蓝色的”即使你写了正确的答案,它也没有给你验证过的角色 您需要在代码中修正以下几点: 首先,您声明了一个变量myRole,但实际上从未使用它在代码中分配角色 其次,是如何添加角色 user.member.addRole(myRole); 从Discord.jsv12开始,GuildMember似乎没有a
您需要在代码中修正以下几点: 首先,您声明了一个变量
myRole
,但实际上从未使用它在代码中分配角色
其次,是如何添加角色
user.member.addRole(myRole);
从Discord.js
v12开始,GuildMember
似乎没有addRole
方法。我建议改为这样做:
member.roles.add(myRole.catch)(console.error);
第三,您必须检查响应
消息是否来自消息。作者
也是如此,否则其他人可能会回答,机器人会识别它是正确的
const filter=response=>{
返回item.answer.toLowerCase()==response.content.toLowerCase()&&response.author==message.author;
};
最后,也是最简单的一点,您添加了一个会导致语法错误的花括号。你只需要删除一个花括号,一切都会好起来的
旁注:我认为
if(!item)
部分是无关的,所以我只是删除了它
代码:
const测验=[
{
“问题”:“天空是什么颜色的?”,
回答:“蓝色”
},
{
“问题”:“字母表中有多少个字母?”,
“答复”:“26”
}
];
const item=quick[Math.floor(Math.random()*quick.length)];
const user=message.author;
const member=message.guild.member(用户);
让myRole=message.guild.roles.cache.find(role=>role.name==“已验证”);
const embed=new Discord.MessageEmbed()
.setTitle('Mrrocketman10s官方验证系统')
.setDescription('确保您是人类')
.addField('Username:',user.Username)
.addField('在以下位置创建的帐户,user.createdAt.toLocaleDateString())
.addField(“验证以下问题的答案。”,item.question)
.set缩略图()
//如果(!项)检查,则删除
常量过滤器=响应=>{
//添加了一个额外的参数来检查响应的用户是否是原始作者
返回item.answer.toLowerCase()==response.content.toLowerCase()&&response.author==message.author;
};
message.channel.send(嵌入)。然后(()=>{
message.channel.awaitMessages(筛选器,{max:1,时间:30000,错误:['time']})
。然后(收集=>{
//这里是修改的部分
message.reply(“太好了!您现在已被验证!”)。然后是(member.roles.add(myRole.catch(console.error));
})
.catch(已收集=>{
message.reply(“看起来你没有得到正确的答案,正确的答案是”+item.reply)
});
});
资源:
检查传递给
catch
回调的错误(作为collected
参数),它应该指出消息未发送的原因。可能错误来自bot无法添加角色?可能未定义user.member?好的,我知道您在哪里定义了user
,以及由message.author返回的Discord.user
,它没有成员属性。这样做的方式是:const user=message.member
而不是message.author
。不要将此作为消息执行user.member
。member已返回guildMember!另外,当您将角色添加到成员时,我看不到在哪里定义了角色
?也许你的意思是myRole
无论我是否使用message.member,它总是说如果我用正确的答案回答,它会说它是对的和错的,例如:“太好了!你现在被验证了”“看起来你没有得到答案,正确的答案是蓝色的”啊哈!我得到了错误,它说“无法读取未定义的属性'addRole'”
const quiz = [
{
"question": "What color is the sky?",
"answer": "blue"
},
{
"question": "How many letters are there in the alphabet?",
"answer": "26"
}
];
const item = quiz[Math.floor(Math.random() * quiz.length)];
const user = message.author
let myRole = message.guild.roles.cache.find(role => role.name === "Verified");
const embed = new Discord.MessageEmbed()
.setTitle('Mrrocketman10s Official Verification System')
.setDescription('Makes sure that you are a human')
.addField('Username: ', user.username)
.addField('Account created at: ', user.createdAt.toLocaleDateString())
.addField("To verify answer the following question.", item.question)
.setThumbnail()
if(!item){
console.log("Question and answer doesn't exist")
return false
}
const filter = response => {
return item.answer.toLowerCase() === response.content.toLowerCase();
};
message.channel.send(embed).then(() => {
message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] })
.then(collected => {
message.reply("Great! You are now verified!").then(user.member.addRole(role));
})
.catch(collected => {
message.reply("Looks like you didn't get the correct answer, the correct answer is " + item.answer)
});
});
}