好的,所以我非常困惑。我已经尝试了几种方法来测试这个,我尝试了这些方法:
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
...这看起来很奇怪,因为它显然是定义的。
答案 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 放在该字段中,以便机器人无法识别它自己的消息。>