Ich versuche, einen Bot mit Commando zu erstellen, aber ich kann nicht herausfinden, wie der Bot Befehle ignorieren (oder besser löschen und ignorieren) kann, die nicht in einem definierten Kanal gesendet werden. Wenn Sie den Befehl beispielsweise nicht in #botchat senden, wird die Nachricht gelöscht.

Ich weiß, dass ich dem Bot in den anderen Kanälen die Leseberechtigung verweigern könnte, aber ich habe andere Module ausgeführt, und sie erfordern Lesekanäle.

Ich könnte zu Beginn jeder Ausführungsfunktion eine Prüfung hinzufügen, dies hat jedoch keine Auswirkungen auf die Standardbefehle.

Gibt es eine Möglichkeit, eine Prüffunktion zu schreiben, die für jeden Befehl ausgeführt wird, bevor die eigentliche Ausführungsfunktion beginnt? (Vielleicht mit der Command-Klasse?)

0
Federico Grandi 23 Juni 2018 im 23:35

3 Antworten

Beste Antwort

Ich habe herausgefunden: Sie können Inhibitoren verwenden. Danke an Gawdl3y # 4269 in der Discord.js Gilde

//in main file
client.dispatcher.addInhibitor(msg => {
  return (msg.channel.name == "blockme"); //you return whether the command should be blocked
})
2
Federico Grandi 25 Juni 2018 im 14:43

Befinden sich Ihre Befehle in einem IF / ELSE IF-Baum?

Wenn ja, würde ich als Anfang davon tun, bevor es überhaupt nach einem Befehl sucht (aber unter dem Teil, in dem es auf jeder Nachricht auf dem Server ausgeführt wird), eine Variable als Kanal der Nachricht deklariert haben. Etwas wie;

var ChannelID = message.channel.id

Oder wenn du es nicht mit Namen machen willst

var ChannelName = message.channel.name

Wenn Ihr Befehl vom Kanal abhängig ist, gehen Sie wie folgt vor:

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

Ich hoffe das hilft? Wenn Sie die Dinge anders machen, muss die Syntax möglicherweise angepasst werden, und der Haftungsausschluss muss nicht getestet werden, aber sie sollte die Logik und das Denken dahinter erklären.

Wenn Sie zum späteren Nachschlagen einen Teil Ihres Codes bereitstellen, den Sie bereits haben, ist es außerdem einfacher, eine relevante Antwort zu geben :)

0
callum siciliano 23 Juni 2018 im 22:30

Alles was Sie tun müssen ist:

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
    }
}

Hoffe ich habe geholfen! Vielen Dank.

0
James 5 Jän. 2019 im 03:02