2017-04-23 2 views
1

Linie 14 feuern sollte, wenn es keine Befehle mit der Gilde-ID sind,Wenn Anweisung Brennen, wenn es nicht sollte

Linie 15 sollte ausgelöst, wenn der Benutzer keine Befehle in dieser Gilde hat, aber

!commands @Rusty#2746 gibt No commands in this guild. im Server Go away zurück. (Ich habe einen Befehl in diesem Server)

!commands @Rusty#2746 kehrt No commands in this guild.UND der eigentliche Befehl in dem Server SurgicalGoblin. (Ich habe einen Befehl in diesem Server)

let user = message.mentions.users.first(); 
if (args.length !== 1) return message.reply("Incorrect arguments, " + args.length + " given, 1 required."); 
if (message.mentions.users.size !== 1) return message.reply("You must mention a user to view the commands of."); 

fs.readFile(path.join(__dirname, "../jsonFiles") + "/customCommands.json", "utf-8", function(err, data) { 
    if (err) throw err; 

    var arrayOfObjects = JSON.parse(data); 

    if (arrayOfObjects.commands.length === 0) return message.reply("No custom commands found."); 

    for (let i = 0; i < arrayOfObjects.commands.length; i++) { 
    console.log(message.guild.id) // matches the guild_id in json file 
    if (message.guild.id !== arrayOfObjects.commands[i].guild_id) return message.reply("No commands in guild."); 
    if (message.guild.id !== arrayOfObjects.commands[i].guild_id && user.id !== arrayOfObjects.commands[i].user_id) return message.reply(user.username + " has no commands in this guild."); 

    fs.writeFile(path.join(__dirname, "../jsonFiles") + "/customCommands.json", JSON.stringify(arrayOfObjects, null, 2), "utf-8", function(err) { 
     if (err) throw err; 
     const embed = new Discord.RichEmbed() 
     .setColor(0x08F258) 
     .setAuthor("Custom Commands for " + user.username, message.author.avatarURL) 
     .addField(arrayOfObjects.commands[i].command_name, arrayOfObjects.commands[i].command_reply) 
     return message.channel.sendEmbed(embed); 
    }); 
    } 
}); 

JSON: https://hastebin.com/zucogajita.json

+0

Ist es möglich, gibt es einen Typenkonflikt? Wir sehen nicht, wie 'message.guild.id' definiert ist ... ist es, wie' arrayOfObjects.commands [i] .guild_id', auch eine Zeichenkette? – nb1987

+0

In Zeile 13 loggte ich es und es gab mir die richtige Gilden ID. 'message.guild.id' ist in Discord.js (Framework, das ich verwende) eingebaut. –

+0

Aber selbst wenn der Wert basierend auf der Protokollanweisung offensichtlich übereinstimmt, kann der Typ unterschiedlich sein. Versuchen Sie zum Beispiel, Ihren Ungleichheitsoperator in Zeile 14 von '! ==' nach '! =' ... zu ändern. Wird die Bedingung 'if' immer noch als wahr ausgewertet? – nb1987

Antwort

0

Falls die Lösung aller anderer hilfreich ist, ich sprach darüber mit dem OP im Chat und entdecken, dass die Frage, weil der OP aufgetreten Ich wollte die aktuelle message Gilde mit der entsprechenden Gilde in den JSON Daten vergleichen. Deshalb schlug ich vollständig für Schleife der Entnahme und stattdessen die Zunft erste Suche (mit find()) und dann einen Vergleich zu tun:

let user = message.mentions.users.first(); 
if (args.length !== 1) return message.reply("Incorrect arguments, " + args.length + " given, 1 required."); 
if (message.mentions.users.size !== 1) return message.reply("You must mention a user to view the commands of."); 

fs.readFile(path.join(__dirname, "../jsonFiles") + "/customCommands.json", "utf-8", function(err, data) { 
    if (err) throw err; 

    var arrayOfObjects = JSON.parse(data); 

    if (arrayOfObjects.commands.length === 0) return message.reply("No custom commands found."); 

    var guild = arrayOfObjects.commands.find(function(obj) { return obj.guild_id == message.guild.id; }); 

    if (message.guild.id !== guild.guild_id) return message.reply("No commands in guild."); 
    if (message.guild.id !== guild.guild_id && user.id !== guild.user_id) return message.reply(user.username + " has no commands in this guild."); 

    fs.writeFile(path.join(__dirname, "../jsonFiles") + "/customCommands.json", JSON.stringify(arrayOfObjects, null, 2), "utf-8", function(err) { 
     if (err) throw err; 
     const embed = new Discord.RichEmbed() 
     .setColor(0x08F258) 
     .setAuthor("Custom Commands for " + user.username, message.author.avatarURL) 
     .addField(guild.command_name, guild.command_reply) 
     return message.channel.sendEmbed(embed); 
    }); 

}); 
Verwandte Themen