我正在使用Discord机器人,为高级会员提供命令。
buyers.json:
buyers.json:
{
"buyers": [
{
"id": "331499609509724162"
},
{
"id": "181336616164392960"
},
{
"id": "266389854122672128"
}
]
}
代码片段:
case "spotify":
var uID = message.author.id;
for (let i = 0; i < ftpr.buyers.length; i++) {
if (uID === ftpr.buyers[i]) {
var _embed = new Discord.RichEmbed()
.setTitle("Spotify")
.addField("Username", "testsda@yahoo.com")
.addField("Password", "ithastobe8")
.setColor(0x00FFFF)
.setFooter("Sincerely, LajgaardMoneyService")
.setThumbnail(message.author.avatarURL);
message.author.send(_embed);
console.log(message.author + " Just used the command !spotify")
}
}
break;
除了for循环和if语句之外,一切都有效。就像它没有得到id一样。
var fptr = require("./buyers.json");
修改 我的json文件看起来像这样:
{
"buyers": [
{
"id": "331499609509724162"
},
{
"id": "181336616164392960"
},
{
"id": "266389854122672128"
}
]
}
它有一些人的身份。
在我的app.js var file = require("./file.json");
用于导入。让我们说我更改了其中一个ID然后我必须重新加载app.js来更新它。如果我不这样做,我的检查机制没有使用file.json
的更新版本
每次使用函数时,我该如何更新文件?
答案 0 :(得分:1)
您正在将 uID (我假设是一个字符串)与数组中的每个对象(包含字符串)进行比较。
尝试与买家对象的id属性进行比较:
if (uID === ftpr.buyers[i].id) { }
答案 1 :(得分:0)
确保message.author.id
和ftpr.buyers id具有相同的类型,ftpr.buyers
是包含id为string的对象数组。你应该通过message.author.id
console.log(typeof message.author.id,message.author.id)
的类型
您可以通过在切换案例之前使用包含ID的字符串数组来简化代码:
const ids = ftpr.buyers.map(b = b.id);//this is now ["331499609509724162",...]
case "spotify":
if (ids.includes(message.author.id)) {
var _embed = new Discord.RichEmbed()
.setTitle("Spotify")
.addField("Username", "testsda@yahoo.com")
.addField("Password", "ithastobe8")
.setColor(0x00FFFF)
.setFooter("Sincerely, LajgaardMoneyService")
.setThumbnail(message.author.avatarURL);
message.author.send(_embed);
console.log(message.author + " Just used the command !spotify")
}
break;