discord.js v12:如何在私信频道中等待消息?

4
这是我尝试的代码:
message.author.dmChannel.awaitMessages(msg => {
    console.log(msg.content)
});

但它返回了以下错误信息:

TypeError: 无法读取null的 'awaitMessages' 属性

更新后的代码:

message.author.send("What is your name?")

const filter = m => m.author.id === message.author.id

message.author.dmChannel.awaitMessages(filter)
     .then((collected) => console.log(collected.first().content))

如果它说无法读取 null 的属性,那么这意味着您的 dmChannel 不存在。如果您查看文档,author.dmChannel 具有空传播运算符,这意味着它可以是 null DMChannel。您可能需要先创建一个。尽管如此,似乎您已经使用 message.author.send() 完成了这个操作。有趣。您确定您的 author.send() 行正常工作并且作者收到了消息吗? - Max
2个回答

2

您没有正确使用 awaitMessages(),您需要传递一个 filter 参数。

const filter = (m) => m.author.id === message.author.id
message.author.dmChannel.awaitMessages(filter)
  .then((collected) => console.log(collected.first().content))

我已经完成了这个:`const filter = m => m.author.id === message.author.idmessage.author.dmChannel.awaitMessages(filter) .then((collected) => console.log(collected.first().content))`但它仍然返回相同的错误信息。 - Johonny

2

首先,您应该尝试创建一个DM频道:

let channel = message.author.dmChannel;
if (!channel) channel = await message.author.createDM();

请注意,createDM()返回一个Promise对象,这将要求您将命令转换为异步函数(如果它还不是)。

请纠正我,但在机器人“awaitingMessages”之前,它正在发送一条消息,这不会自动创建DM频道吗? - Syntle
@Syntle 可能吧.. 我猜找出最好的方法就是去尝试一下。 - Tenclea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接