如何在discord.js中使用waitingmessages函数

如何在discord.js中使用waitingmessages函数,discord.js,dm,Discord.js,Dm,我有一些discord.js的代码,当用户加入服务器时,它会向用户发送一个DM。然后,他们必须输入给他们的密码,然后密码会给他们一个允许他们访问频道的角色 const Discord = require('discord.js'); const client = new Discord.Client(); client.once('ready', () => { console.log('Ready!'); }); client.on('guildMemberAdd', gui

我有一些discord.js的代码,当用户加入服务器时,它会向用户发送一个DM。然后,他们必须输入给他们的密码,然后密码会给他们一个允许他们访问频道的角色

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    console.log('Ready!');
});

client.on('guildMemberAdd', guildMember => {
    console.log("Joined");
    guildMember.send("Welcome to the server! Please enter the password given to you to gain access to the server:")
      .then(function(){
        guildMember.awaitMessages(response => message.content, {
          max: 1,
          time: 300000000,
          errors: ['time'],
        })
        .then((collected) => {
            if(response.content === "Pass"){
              guildMember.send("Correct password! You now have access to the server.");
            }
            else{
              guildMember.send("Incorrect password! Please try again.");
            }
          })
          .catch(function(){
            guildMember.send('You didnt input the password in time.');
          });
      });
});

client.login("token");
问题是,我真的不知道如何使用
函数。我不知道如何称呼它,因为我找到的所有教程都将它与
message.member
一起使用

当我运行代码时,会出现以下三个错误:
UnhandledPromisejectionWarning:TypeError:guildMember.WaitMessages不是函数

未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志
--unhandled rejections=strict
(请参阅)。(拒绝id:1)

不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将终止节点。


我不知道这些是指什么行,所以我很困惑。

下面是一个关于消息如何工作的简要说明:

首先,扩展了
.awaitMessages()
函数,这意味着您已经在扩展
GuildMember
对象时弄糟了一点。-您可以使用

const channelObject = guildMember.guild.channels.cache.get('Channel ID Here'); // Gets a channel object based on it's ID
const channelObject = guildMember.guild.channels.cache.find(ch => ch.name === 'channel name here') // Gets a channel object based on it's name
awaitMessages()
还可以为输入必须具备的特定条件添加筛选器。 让我们以新成员为例。我们可以简单地告诉客户机只接受与guildMember对象具有相同id的成员的输入,因此基本上只接受新成员

const filter = m => m.author.id === guildMember.id
现在,最后,在我们收集了所有需要的资源之后,这应该是我们等待消息的最终代码

const channelObject = guildMember.guild.channels.cache.get('Channel ID Here');
    const filter = m => m.author.id === guildMember.id
    channelObject.awaitMessages(filter, {
        max: 1, // Requires only one message input
        time: 300000000, // Maximum amount of time the bot will await messages for
        errors: 'time' // would give us the error incase time runs out.
    })

若要阅读有关等待消息()的更多信息,

谢谢你的帮助!我还有一个问题:我看到您是通过使用
waitmessages
channelObject
来实现这一点的,但我想在DMs中实现这一点。我该怎么做?DMs被视为频道!如果您想
等待消息
一旦用户向客户端发送消息,您可以简单地使用
message.channel
功能,该功能将为您提供用户和机器人之间的DMs通道对象:)