Как я могу сказать, что мой бот Discord не реагирует на прямые сообщения, только в канале чата на сервере? - PullRequest
0 голосов
/ 11 февраля 2019
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, а не в прямых сообщениях.

1 Ответ

0 голосов
/ 11 февраля 2019

Согласно документации на 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 с typcript), он выглядит так:

import { TextChannel } from "discord.js"
...