它是discord.js的新功能,它会在特定用户加入我的服务器时读取错误的文本以验证特定用户

时间:2019-06-15 18:44:51

标签: node.js discord discord.js

因此,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");
        }
    });
});

1 个答案:

答案 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);
  }
});