问题是我试图创建一个显示用户拥有多少硬币的命令,但是每次我键入命令时,它只会返回“无法读取未定义的属性” id”。
代码如下:
const Discord = require("discord.js");
let coins = require("../coins.json");
module.exports.run = async (bot, message, args) => {
//!coins
let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
if(!coins[pUser.id]){
coins[pUser.id] = {
coins: 0
};
}
if(!coins[message.author.id]){
coins[message.author.id] = {
coins: 0
};
}
let pCoins = coins[pUser.id].coins;
let uCoins = coins[message.author.id].coins;
if (!pUser) {
message.channel.send(`**${message.author}**: Ai manglit **${uCoins}** puncte de neață!`);
} else {
message.channel.send(`**${pUser}**: Ai manglit **${pCoins}** puncte de neață!`);
}
}
module.exports.help = {
name: "neti"
}
这也是我的coin.json文件:
{
"108225935509057536":{
"coins":3,
"id":"108225935509057536"
},
"513103473571790857":{
"coins":579
},
"274234269944119296":{
"coins":436
},
"289874882974711808":{
"coins":48
},
"282255872871235584":{
"coins":372
},
"260746723805233153":{
"coins":721
},
"595994062864121872":{
"coins":18
},
"225239396339679232":{
"coins":362
},
"346946888634728450":{
"coins":59
},
"186871446125936644":{
"coins":159
},
"279263622247743488":{
"coins":669
},
"126321478550552576":{
"coins":1
},
"469899490686664714":{
"coins":1
},
"242381361158029314":{
"coins":13
},
"224095971955441665":{
"coins":11
},
"547093167040757770":{
"coins":26
},
"252882616297062400":{
"coins":4
},
"261602781981310976":{
"coins":59
},
"254002772679196682":{
"coins":6
},
"371414290156093440":{
"coins":20
},
"188347467874435073":{
"coins":9
},
"449120976870047744":{
"coins":122
},
"286178947148939265":{
"coins":10
},
"539794625972404225":{
"coins":0
},
"491701834193305600":{
"coins":2
},
"280730839946493953":{
"coins":13
}
}
答案 0 :(得分:1)
此块将始终是未定义的,pUser是guild.member,并且没有属性id
if(!coins[pUser.id]){
coins[pUser.id] = {
coins: 0
};
}
此代码的第一部分将返回message.author
的集合,因此您将看到[object,object]
if (!pUser) {
message.channel.send(`**${message.author}**: Ai manglit **${uCoins}** puncte de neață!`);
} else {
message.channel.send(`**${pUser}**: Ai manglit **${pCoins}** puncte de neață!`);
}
正确的方法是:
const Discord = require("discord.js");
let coins = require("../coins.json");
module.exports.run = async (bot, message, args) => {
let targetMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0])
if(!targetMember) targetMember = message.member
if(!coins[targetMember.user.id]){
coins[targetMember.user.id] = {
coins: 0
};
}
let pCoins = coins[targetMember.user.id].coins;
message.channel.send(`**${targetMember.user.id}**: Ai manglit **${pCoins}** puncte de neață!`);
}
module.exports.help = {
name: "neti"
}
答案 1 :(得分:0)
实际上,在您的代码中,您得到的用户是被提及的用户,或者如果您在第一个arg中键入ID的用户,则得到的用户
/ coin @ john#0000或/ coin 192367487362(这是一个示例)
您必须添加一个条件来保护您的代码免遭诸如此类的错误:
module.exports.run = async (bot, message, args) => {
//!coins
let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
if(!pUser) {
// Do something if no user was mentionned and no id was sent with the first argument
return;
}
if(!coins[pUser.id]){
coins[pUser.id] = {
coins: 0
};
}
if(!coins[message.author.id]){
coins[message.author.id] = {
coins: 0
};
}
let pCoins = coins[pUser.id].coins;
let uCoins = coins[message.author.id].coins;
if (!pUser) {
message.channel.send(`**${message.author}**: Ai manglit **${uCoins}** puncte de neață!`);
} else {
message.channel.send(`**${pUser}**: Ai manglit **${pCoins}** puncte de neață!`);
}
}
答案 2 :(得分:0)
const data = {“ 108225935509057536”:{硬币:3,编号:“ 108225935509057536”}};
console.log(data [“ 108225935509057536”]);
尝试