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?)
3 Antworten
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
})
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 :)
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.
Verwandte Fragen
Neue Fragen
node.js
Node.js ist eine ereignisbasierte, nicht blockierende, asynchrone E / A-Laufzeit, die die V8-JavaScript-Engine und die libuv-Bibliothek von Google verwendet. Es wird für die Entwicklung von Anwendungen verwendet, die die Möglichkeit, JavaScript sowohl auf dem Client als auch auf dem Server auszuführen, stark nutzen und daher von der Wiederverwendbarkeit von Code und dem Fehlen von Kontextwechsel profitieren.