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

时间:2018-02-11 06:40:19

标签: node.js discord.js

好的,所以我非常困惑。我已经尝试了几种方法来测试这个,我尝试了这些方法:

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之后尝试了所有内容,然后尝试解读我在这里做的事情。甚至文档也不是很清楚,在哪里检查这个。我看过多个“solutiuons”,他们只是鲸鱼喷水<message>.channel.dm,好吧......那是行不通的。

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

4 个答案:

答案 0 :(得分:7)

找到了几种方法来解决这个问题:

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

message.guild === null将检查所有DM(如果它是DM公会将永远为空。)

答案 1 :(得分:0)

DMChannel是一门课程,因此message.channel instanceof DMChannel应该有效。

答案 2 :(得分:0)

client.GetDMChannelAsync(msg.Channel.Id).Result != null

这是您检查最新版本的方法

答案 3 :(得分:0)

client.on("message", msg =>  { 
    
   if(msg.guild==null &&msg.author.id!=='botDiscordId'){
    msg.reply('dosomethinghere')
   }
});

这使用 guild 类并将回复用户消息,您可以将 msg.reply 更改为任何内容,我建议将 botDiscordId 放在该字段中,以便机器人无法识别它自己的消息。