我如何确保此人从商店购买了某件商品?
How do I make sure that the person has a certain item from the shop?
我已经遇到这个问题好几个小时了,我无法确保人们在与宠物进行活动之前已经购买了宠物。
它没有显示错误,但它不能正常工作,而且我不知道如何引用玩家物品栏中的特定物品,因为我正在尝试实现可以与宠物战斗的宠物功能与其他人一起,也将能够喂养您的宠物,并且会有宠物比赛和统计数据等活动
const db = require('quick.db');
const Discord = require('discord.js');
module.exports = {
name: "fight",
description: "fight someone",
async run(client, message, args) {
let target = message.mentions.users.first();
if (!target) return message.channel.send('please provide a person to fight');
let user = message.author;
let theitemsofuser = await db.fetch(message.author.id, {
items: []
});
if (target === user) return message.channel.send('You can\'t fight yourself!')
if (db.has(user.id + !'.items.hamster')) return message.channel.send('you need a pet to fight');
if (db.has(user.id + !'.items.dog')) return message.channel.send('you need a pet to fight');
if (db.has(user.id + !'.items.cat')) return message.channel.send('you need a pet to fight');
if (db.has(target.id + !'.items.hamster')) return message.channel.send('your opponent needs a pet to fight');
if (db.has(target.id + !'.items.dog')) return message.channel.send('your opponent needs a pet to fight');
if (db.has(target.id + !'.items.cat')) return message.channel.send('your opponent needs a pet to fight');
message.channel.send('your all good!')
}
}
您的字符串连接错误。 target.id.
后的字符串前不能有感叹号
如果你这样做,它会连接真值,转换为字符串,所以在这种情况下 'false'。
你现在拥有的(不好)
'test' + !'string'
// >> 'testfalse'
你需要什么(好)
'test' + 'string'
// >> 'teststring'
如果您只删除 !来自 db.has
试试这个结构
async run(client, message, args) {
...
const match = {
userPet : "",
targetPet : ""
}
["hamster","dog","cat"].forEach(pet => {
if (db.has(user.id.items[pet])) match.userPet = pet
if (db.has(target.id.items[pet])) match.targetPet = pet
});
if (!match.userPet) { message.channel.send('You need a pet to fight'); return }
if (!match.targetPet) {message.channel.send('Your opponent needs a pet to fight'); return; }
message.channel.send('your all good!')
}
我用这段代码修复了它:
const Discord = require('discord.js');
module.exports = {
name:"fight",
description:"fight someone",
async run (client, message, args){
let target = message.mentions.users.first();
if(!target)return message.channel.send('please provide a person to fight');
let user = message.author;
let theitemsofuser = await db.fetch(message.author.id, { items: []});
if(target === user) return message.channel.send('You can\'t fight yourself!')
if(!db.has(user.id + '.items', 'hamster'))return message.channel.send('you need a pet to fight');
if(!db.has(user.id + '.items', 'dog'))return message.channel.send('you need a pet to fight');
if(!db.has(user.id + '.items', 'cat'))return message.channel.send('you need a pet to fight');
if(!db.has(target.id + '.items', 'hamster'))return message.channel.send('your opponent needs a pet to fight');
if(!db.has(target.id + '.items', 'dog'))return message.channel.send('your opponent needs a pet to fight');
if(!db.has(target.id + '.items', 'cat'))return message.channel.send('your opponent needs a pet to fight');
message.channel.send('your all good!')
}}```
Fixes: I used !db.has(user.id + '.items', 'dog') return message.channel.send('you dont have a dog at the moment') Instead of db.has(user.id + '.items', 'dog') return message.channel.send('you dont have a dog at the moment')
我已经遇到这个问题好几个小时了,我无法确保人们在与宠物进行活动之前已经购买了宠物。
它没有显示错误,但它不能正常工作,而且我不知道如何引用玩家物品栏中的特定物品,因为我正在尝试实现可以与宠物战斗的宠物功能与其他人一起,也将能够喂养您的宠物,并且会有宠物比赛和统计数据等活动
const db = require('quick.db');
const Discord = require('discord.js');
module.exports = {
name: "fight",
description: "fight someone",
async run(client, message, args) {
let target = message.mentions.users.first();
if (!target) return message.channel.send('please provide a person to fight');
let user = message.author;
let theitemsofuser = await db.fetch(message.author.id, {
items: []
});
if (target === user) return message.channel.send('You can\'t fight yourself!')
if (db.has(user.id + !'.items.hamster')) return message.channel.send('you need a pet to fight');
if (db.has(user.id + !'.items.dog')) return message.channel.send('you need a pet to fight');
if (db.has(user.id + !'.items.cat')) return message.channel.send('you need a pet to fight');
if (db.has(target.id + !'.items.hamster')) return message.channel.send('your opponent needs a pet to fight');
if (db.has(target.id + !'.items.dog')) return message.channel.send('your opponent needs a pet to fight');
if (db.has(target.id + !'.items.cat')) return message.channel.send('your opponent needs a pet to fight');
message.channel.send('your all good!')
}
}
您的字符串连接错误。 target.id.
后的字符串前不能有感叹号如果你这样做,它会连接真值,转换为字符串,所以在这种情况下 'false'。
你现在拥有的(不好)
'test' + !'string'
// >> 'testfalse'
你需要什么(好)
'test' + 'string'
// >> 'teststring'
如果您只删除 !来自 db.has
试试这个结构
async run(client, message, args) {
...
const match = {
userPet : "",
targetPet : ""
}
["hamster","dog","cat"].forEach(pet => {
if (db.has(user.id.items[pet])) match.userPet = pet
if (db.has(target.id.items[pet])) match.targetPet = pet
});
if (!match.userPet) { message.channel.send('You need a pet to fight'); return }
if (!match.targetPet) {message.channel.send('Your opponent needs a pet to fight'); return; }
message.channel.send('your all good!')
}
我用这段代码修复了它:
const Discord = require('discord.js');
module.exports = {
name:"fight",
description:"fight someone",
async run (client, message, args){
let target = message.mentions.users.first();
if(!target)return message.channel.send('please provide a person to fight');
let user = message.author;
let theitemsofuser = await db.fetch(message.author.id, { items: []});
if(target === user) return message.channel.send('You can\'t fight yourself!')
if(!db.has(user.id + '.items', 'hamster'))return message.channel.send('you need a pet to fight');
if(!db.has(user.id + '.items', 'dog'))return message.channel.send('you need a pet to fight');
if(!db.has(user.id + '.items', 'cat'))return message.channel.send('you need a pet to fight');
if(!db.has(target.id + '.items', 'hamster'))return message.channel.send('your opponent needs a pet to fight');
if(!db.has(target.id + '.items', 'dog'))return message.channel.send('your opponent needs a pet to fight');
if(!db.has(target.id + '.items', 'cat'))return message.channel.send('your opponent needs a pet to fight');
message.channel.send('your all good!')
}}```
Fixes: I used !db.has(user.id + '.items', 'dog') return message.channel.send('you dont have a dog at the moment') Instead of db.has(user.id + '.items', 'dog') return message.channel.send('you dont have a dog at the moment')