因此,我有一个不和谐的机器人,带有一个脏话过滤器,我下达了添加和删除单词的命令。删除功能可以正常工作,但是在您键入c!setconf swearWords不带参数的情况下,添加操作将失败,它会发送一条错误消息,直到它在删除操作中起作用,但是在添加操作中,它会发送“未定义的词已被添加”
我已经查了一下代码,以及2种情况下的确切代码,所以我真的不知道这是什么错误。
if(args[0] === "swearWords") {
if(!args[1]) return message.channel.send(
new Discord.RichEmbed()
.setDescription(`Add banned words by typing \`${client.guildConf.prefix}csetconf swearWords add <word>\` and remove one by typing \`${client.guildConf.prefix}csetconf swearWords remove <word>\``)
.setColor(vars.good)
)
if(args[1] === "add") {
if(client.configs.get(message.guild.id, args[2], "swearWords")) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Word \`${args[2]}\` has been already added!`)
.setColor(vars.error)
)
return;
} else if(!args[2]) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Specify a valid word to add!`)
.setColor(vars.error)
)
} else {
client.configs.push(message.guild.id, args[2], "swearWords")
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Banned word \`${args[2]}\` added`)
.setColor(vars.good)
)
}
} else if(args[1] === "remove") {
if(!client.configs.get(message.guild.id, args[2], "swearWords")) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Word \`${args[2]}\` is not a banned word here!`)
.setColor(vars.error)
)
return;
} else if(!args[2]) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Specify a valid word to remove!`)
.setColor(vars.error)
)
} else {
client.configs.remove(message.guild.id, args[2], "swearWords")
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Banned word \`${args[2]}\` removed`)
.setColor(vars.error)
)
}
} else {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Invalid action! Use \`add\` or \`remove\` instead.`)
.setColor(vars.error)
)
}
}
对不起,所有代码都可以,但是必要 另外,没有错误控制台日志输出。 预期的结果是使c!setconf swearWords添加以else if(!args [2]事物进行回复,remove选项运行良好,但是添加失败。 谢谢您的帮助!
答案 0 :(得分:0)
据我对您的问题的了解,您想确保添加单词时该值不是未定义的。从外观上,您正在检查在另一条语句之后args[2]
是否为undefined
与!args[2]
的情况,这似乎是在返回true
。我建议将它们交换一下。
...
if(args[1] === "add") {
//Check that args[2] isn't undefined first
if(!args[2]) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Specify a valid word to add!`)
.setColor(vars.error)
)
} else if(client.configs.get(message.guild.id, args[2], "swearWords")) {
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Word \`${args[2]}\` has been already added!`)
.setColor(vars.error)
)
return;
} else {
client.configs.push(message.guild.id, args[2], "swearWords")
message.channel.send(
new Discord.RichEmbed()
.setDescription(`Banned word \`${args[2]}\` added`)
.setColor(vars.good)
)
}
}
...