几乎,我很难在用户的 Quick.db 库存中找到角色。我想这样做是为了:允许他们只购买一次角色;只有在他们的库存中找到自有角色时,才允许他们装备该角色。问题是用户可以多次购买一个角色,并且即使该角色不属于自己,也可以装备该角色。我相信我遇到的问题是if(db.has(message.author.id + '.items' + 'hot rod red'))
(可能是因为我正在寻找一个角色而不是一个纯文本项目?),但它可能是别的东西。
在这一点上,我完全迷失了并且没有想法,感谢任何帮助!
装备角色的代码:
let user = message.guild.members.cache.get(message.author.id)
let items = await db.fetch(message.author.id);
if(items === null) items = "Nothing"
let author = db.get(`items_${message.guild.id}_${user.id}`)
if (args[0] == 'red') {
let rejectEmbed = new Discord.MessageEmbed()
.setDescription('You do not own this role!');
if(db.has(message.author.id + '.items' + 'hot rod red')){
if (message.member.roles.cache.some(role => role.name === 'hot rod red')) {
let embed = new Discord.MessageEmbed().setDescription('You already have this role!');
return message.channel.send(embed); }
else {
await message.guild.members.cache.get(user.id).roles.add('733373020491481219');
let embed = new Discord.MessageEmbed().setDescription(`You now have the ${message.guild.roles.cache.get('733373020491481219')} role!`);
message.channel.send(embed);
user.roles.remove(user.roles.highest);
}
} else return message.channel.send(rejectEmbed)
}
购买命令代码:
let Embed = new Discord.MessageEmbed()
.setColor("#FFFFFF")
.setDescription(`> :no_entry_sign: You need 20,000 credits to purchase ${message.guild.roles.cache.get('733373020491481219')}`);
if (message.member.roles.cache.some(role => role.name === "level 25") ||(message.member.roles.cache.some(role => role.name === "frequent flyers"))){
if (console.log(db.has(message.author.id, 'hot rod red'))){
let EmbedError = new Discord.MessageEmbed()
.setColor('#FFFFFF')
.setDescription(`:no_entry_sign: You already own ${message.guild.roles.cache.get('733373020491481219')} !`);
return message.channel.send(EmbedError)
}else
if (amount < 20000) return message.channel.send(Embed)
let Embed3 = new Discord.MessageEmbed()
.setColor("#FFFFFF")
.setDescription(`:white_check_mark: You bought ${message.guild.roles.cache.get('733373020491481219')} for 20,000 credits!`);
message.channel.send(Embed3)
db.subtract(`money_${message.guild.id}_${user.id}`, 20000)
db.push(message.author.id, `${message.guild.roles.cache.get('733373020491481219')}`);
db.fetch(`hot_rod_red${message.guild.id}_${user.id}`);
db.set(`hot_rod_red_${message.guild.id}_${user.id}`, true)
}else {return message.channel.send('You do not have the required level to buy this role!')}
}