我怎么能说我的Discord机器人仅在服务器聊天通道中不对直接消息做出反应?

时间:2019-02-11 16:22:42

标签: javascript discord

client.on('message', function(message) { // COMMAND CLEAR [+]
    if (message.content.startsWith('/dm ') && message.mentions.users.size){
      message.send("ERROR")
    } 
    if (message.content == ".c") {
        if (message.member.hasPermission("MANAGE_MESSAGES")) {
            message.channel.fetchMessages(1000)
               .then(function(list){
                    message.channel.bulkDelete(list);
                }, function(err){message.channel.send()})                 
        }
    }

}); // COMMAND CLEAR [-]

我只希望机器人仅在Discord服务器通道上对此命令做出反应,而不在直接消息中做出反应。

2 个答案:

答案 0 :(得分:0)

根据discord.js文档,属性.channel存在于Message上,类型为TextChannel | DMChannel | GroupDMChannel

因此检查消息来源的最好方法是检查instanceof通道属性:

client.on("message", message => {
   if (message instanceof TextChannel) {
      // Was posted in a text channel, and not a DM
   }
})

注意:您将需要从模块中导入TextChannel。假设您正在使用TypeScript(我只用discord.js和typescript),它看起来像这样:

import { TextChannel } from "discord.js"

答案 1 :(得分:0)

您可以告诉漫游器忽略一条消息,如果它是dm

i

如果您想回复一条消息,可以执行以下操作:

client.on("message", msg => {

    if (msg.type == "dm") {
        return;
    }