因此,im tryna制作了一个小机器人,以验证特定的用户组是否可以访问保留的频道。该机器人应该询问一个密码,当回答问题时,该机器人会回复自己并显示错误消息。我该如何解决此代码?
我尝试使用
if(message.author.bot){return;}
但是由于某种原因它不起作用
这是我的代码:
client.on('guildMemberAdd', member => {
const channel = member.guild.channels.find(ch => ch.name === 'vaayil');
channel.send("type in the secret code");
client.on('message', message =>{
if(message.author.bot){return;}
if(message.content === `secret`){
channel.send("verified");
}
if(message.content !== `secret`){
channel.send("not verified");
}
});
});
答案 0 :(得分:0)
像这样的嵌套事件通常是不好的做法。
但是,您可以避免这样做,并简化编写此bot的工作。在Discord.js中,您可以使用TextChannel.awaitMessages()
等待通过特定过滤器的消息,然后对这些消息进行处理。
示例:
const secretCode = 'sloths';
client.on('guildMemberAdd', async member => {
const channel = member.guild.channels.find(c => c.name === 'vaayil');
if (!channel) return console.log('Can\'t find channel.');
try {
await channel.send(`What\'s the secret code, ${member}?`);
const filter = m => m.author.id === member.id;
const messages = await channel.awaitMessages(filter, { max: 1 });
const message = messages.first(); // (The only message in the Collection)
if (message.content === secretCode) {
await channel.send('That\'s right!');
// Do something...
} else {
await channel.send('Nice try, but wrong.');
// Do something...
} catch(err) {
console.error(err);
}
});