【问题标题】:discord.js v12: How do I await for messages in a DM channel?discord.js v12:我如何等待 DM 频道中的消息?
【发布时间】:2020-10-18 08:42:42
【问题描述】:

这是我尝试过的代码:

message.author.dmChannel.awaitMessages(msg => {
    console.log(msg.content)
});

但它返回此错误消息:

TypeError: Cannot read property 'awaitMessages' of null

更新代码:

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))

【问题讨论】:

  • 如果说can't read property of null,那说明你的dmChannel不存在。如果您查看文档,author.dmChannel 有一个空传播运算符,这意味着它可以是空的 DMChannel。您可能需要先创建一个。虽然,您似乎已经使用message.author.send() 完成了该操作。有趣的。您确定您的author.send() 行工作正常并且作者收到了消息吗?

标签: javascript node.js discord discord.js chatbot


【解决方案1】:

你没有正确使用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.id message.author.dmChannel.awaitMessages(filter) .then((collected) => console.log(collected.first().content)) 但它仍然返回相同的错误消息
【解决方案2】:

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

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

请注意 createDM() 返回一个 Promise,这将要求您将命令切换到异步函数(如果它已经不是)

【讨论】:

  • 如果我错了,请纠正我,但在机器人“awaitingMessages”之前它正在发送消息,那不是自动创建 DM 频道吗?
  • @Syntle 也许.. 我想找出答案的最好方法是尝试
猜你喜欢
  • 1970-01-01
  • 2021-02-11
  • 2021-03-01
  • 2020-07-02
  • 1970-01-01
  • 2020-11-21
  • 2020-11-06
  • 2018-05-27
  • 2021-09-21
相关资源
最近更新 更多