检查消息是否为 DM。 (Discord.js 和 discord.js-commando)

新手上路,请多包涵

如何在 Discord.js 中检查消息是否为 DM?我已经尝试了几种方法来对此进行测试,我已经尝试了这些方法:

 if (msg.channel.isDM) ... Produced undefined
if (msg.isDM) ... Produced undefined
if (msg.channel.DMChannel.isDM) ... produced undefined
if (msg.DMChannel) ... produced undefined
if (msg.channel.DMChannel.dm) ... produced undefined
if (msg.channel.dm) ... produced undefined

在控制台中生成 msg 并试图破译我在哪里做这件事后,我已经尝试了一切。即使是文档也不是很清楚在哪里检查这个。我看过多个“解决方案”,它们只是喷出 <message>.channel.dm 。嗯……这行不通。

编辑:所以它似乎是 <message>.isDM 。但是,在我的命令中这不起作用。我可以在数组中找到 isDM 当我 console.log(msg) 它产生 true 这是预期的。但是,执行 console.log(msg.isDM) 正在打印出 undefined 。这看起来很奇怪,因为它显然是被定义的。

原文由 William 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答

我找到了几种处理方法:

<message>.channel.type === 'dm' 但是这只包括单个DM,但允许组等。

message.guild === null 将检查所有 DM(如果消息服务器为 null,如果消息不是通过服务器发送,则返回 true,则必须是 dm。)

原文由 William 发布,翻译遵循 CC BY-SA 4.0 许可协议

DMChannel 是一个类,所以 message.channel instanceof DMChannel 应该可以工作。

原文由 sean 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题