Ограничение команд для определенных каналов - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь построить бота с помощью Commando, но я не могу найти способ заставить бота игнорировать команды (или, лучше, удалять и игнорировать) команды, которые не отправляются в определенный канал. Например, если вы не отправите команду в #botchat, сообщение будет удалено.

Я знаю, что могу запретить чтение для бота на других каналах, но у меня запущены другие модули, и они требуют чтения каналов.

Я мог бы добавить проверку в начале каждой функции запуска, но это не повлияет на команды по умолчанию.

Есть ли способ написать функцию проверки, которая запускается для каждой команды до начала фактической функции запуска? (Может быть, с использованием класса Command?)

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Я узнал: вы можете использовать Ингибиторы .Благодаря Gawdl3y # 4269 в гильдии Discord.js

//in main file
client.dispatcher.addInhibitor(msg => {
  return (msg.channel.name == "blockme"); //you return whether the command should be blocked
})
0 голосов
/ 05 января 2019

Все, что вам нужно сделать, это:

var Channel = message.channel.name

if (message.content === "command") {
    if(Channel != "Channel name here") {
        message.channel.send('Cannot use command here, ' + message.author);
    } else {
        // Insert command code here
    }
}

Надеюсь, я помог! Спасибо.

0 голосов
/ 24 июня 2018

Ваши команды в дереве IF / ELSE IF?

Если это так, то я бы начал с того, что еще до того, как он проверит команду (но в той части, где она выполняется для каждого сообщения на сервере), переменная, объявленная как канал сообщения , Что-то вроде;

var ChannelID = message.channel.id

или если вы не хотите делать это по имени

var ChannelName = message.channel.name

тогда, когда ваша команда зависит от канала, сделайте что-то вроде этого:

if(command === "ChannelDependentCommand"){
    if(ChannelID !== "AllowedChannel"){
        message.delete();
    }ELSE {
        //**whatever you want the command to do**
    };
};

Надеюсь, это поможет? Очевидно, что если вы делаете что-то по-другому, синтаксис может нуждаться в доработке и отказе от ответственности, это вообще не проверялось, но должно объяснять логику и подходы к этому.

Кроме того, для дальнейшего использования, если вы предоставите часть своего кода, который вы уже получили, будет проще дать соответствующий ответ:)

...