我目前正在为我的机器人做一个等级系统,我想给达到特定分数的用户以获得特定的角色(例如:如果你获得 5 级,你将获得角色5 级)
这是我目前拥有的关卡系统:
const Discord = require('discord.js');
const bot = new Discord.Client();
const fs = require('fs')
const xpfile = require('./xp.json')
bot.on("message", function(message){
if(message.author.bot) return;
var addXP = Math.floor(Math.random() * 8) + 3;
if(!xpfile[message.author.id]){
xpfile[message.author.id] = {
xp: 0,
level: 1,
reqxp: 1000
}
fs.writeFile("./xp.json", JSON.stringify(xpfile), function(err){
if(err) console.log(err)
})
}
xpfile[message.author.id].xp += addXP
if(xpfile[message.author.id].xp > xpfile[message.author.id].reqxp){
xpfile[message.author.id].xp -= xpfile[message.author.id].reqxp //remove xp after level up
xpfile[message.author.id].reqxp *= 1.5 //add difficulty to get a higher level
xpfile[message.author.id].reqxp = Math.floor(xpfile[message.author.id].reqxp) //reqxp better number ig (In german: reqxp runden)
xpfile[message.author.id].level += 1 //add 1 level
message.reply("Is now Level **"+xpfile[message.author.id].level+"**! :tada:")
}
fs.writeFile("./xp.json", JSON.stringify(xpfile), function(err){
if(err) console.log(err)
})
if (message.content.startsWith(".level")){
message.delete()
let user = message.mentions.users.first() || message.author
if(user.bot) return message.reply("Bots dont have XP or Levels :(")
const embed = new Discord.RichEmbed()
.setThumbnail(message.author.avatarURL)
.setTitle('Level for '+message.author.username)
.setColor ('#12A5F1')
.addField("Level: ",xpfile[user.id].level)
.addField("XP: ",xpfile[user.id].xp+"/"+xpfile[user.id].reqxp)
message.channel.send(embed)
}
这是获得不起作用的角色的想法(自动会更酷,但不知道它是如何工作的):
if (message.content.startsWith(".reward")){
message.delete()
try{
if([user.id].level = '2'){
message.guild.roles.fetch('816587197868015646')
let member = message.mentions.members.first();
member.roles.add(role).catch(console.error);
}
}
catch {
return message.reply("There are currently no rewards to claim!")
}
}
这里是我的xp.json:
{"751092600890458203":{"xp":740,"level":2,"reqxp":1500}}