【发布时间】:2019-12-08 23:40:42
【问题描述】:
所以,我一直在编写一个不和谐的机器人,并且在尝试检查“mrole”是否具有“app”属性时出现此错误。我不知道为什么这不起作用。
我希望它读取团队的 id,这样我就可以像这样整理 json 文件:
let barney = message.guild.roles.find(r => r.name === "Barney")
let deadpool = message.guild.roles.find(r => r.name === "Deadpool")
let hulk = message.guild.roles.find(r => r.name === "Hulk")
let mario = message.guild.roles.find(r => r.name === "Mario")
let spiderman = message.guild.roles.find(r => r.name === "Spider-Man")
let umbreon = message.guild.roles.find(r => r.name === "Umbreon")
let app = message.guild.member(message.mentions.users.first());
let app2 = message.mentions.users.first().username
var mrole
if (app.roles.has(barney.id)){
mrole = barney.id
}
else if (app.roles.has(deadpool.id)){
mrole = deadpool.id
}
else if (app.roles.has(hulk.id)){
mrole = hulk.id
}
else if (app.roles.has(mario.id)){
mrole = mario.id
}
else if (app.roles.has(spiderman.id)){
mrole = spiderman.id
}
else if (app.roles.has(umbreon.id)){
mrole = umbreon.id
}
if(mrole = barney.id || deadpool.id || hulk.id || mario.id || spiderman.id || umbreon.id){
if (client.memberspoints.mrole[app.id].name != app2){
client.memberspoints [mrole] = {
[app2.id]: {
name: `${app2}`,
mpoints: `${+args[1]}`
}
}
message.channel.send(`${app} agora tem ${+args[1]} pontos`);
}
else{
let _mpoints = client.memberspoints.mrole[app.id].mpoints
var smpoints = +_mpoints + +args[1]
client.memberspoints [mrole] = {
[app.id]:{
name: `${app2}`,
mpoints: `${smpoints}`
}
}
message.channel.send(`${app} agora tem ${smpoints} pontos`);
}
fs.writeFile ('./memberspoints.json', JSON.stringify (client.memberspoints, null, 2), err => {
if (err) throw err;
console.log('Salvo');
});
这是我得到的错误:if (client.memberspoints.mrole[app.id].name != app2){
^
TypeError: Cannot read property 'app.id' of undefined
我基本上希望它检查“mrole”上是否已经包含人名,所以我按团队和名称对其进行排序。有什么想法吗?
【问题讨论】:
-
所以,你说有错误。它在哪里?您没有向我们提供任何解释代码或错误所在的信息。它不可重现,因为我们没有环境,因为您有自定义角色等。
-
添加,它。那是我的错,对不起。
-
app似乎是一个对象。那么,mrole[app]的目的是什么? -
mrole未定义 -
分解你的代码。控制台记录 app.id 以确保它是您所说的。然后看看mrole,看看它的属性。 mrole 听起来像一个对象,所以
app.id需要是该对象中的一个键。如果没有,它会抛出。您需要抓住这种可能性,因为我在您的 sn-p 中没有看到任何类型的对象验证。我还注意到您没有其他声明。是否有可能是未定义的?
标签: javascript node.js discord.js