具有角色的级别系统(discord.js、node.js)

具有角色的级别系统(discord.js、node.js),node.js,discord,discord.js,roles,Node.js,Discord,Discord.js,Roles,我目前正在为我的机器人做一个升级系统,我想让达到特定分数的用户获得一个特定角色(例如:如果你获得5级,你将获得5级角色) 以下是我目前拥有的级别系统: const Discord = require('discord.js'); const bot = new Discord.Client(); const fs = require('fs') const xpfile = require('./xp.json') bot.on("message", funct

我目前正在为我的机器人做一个升级系统,我想让达到特定分数的用户获得一个特定角色(例如:如果你获得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)
       }
在这里,我想得到一个不起作用的角色(自动的会更酷,但我想知道它是如何工作的):

这里是我的xp.json:


语法中缺少
缓存
。了解从V11到V12的更新

message.guild.roles.fetch('816587197868015646');
//旧V11语法→
message.guild.roles.cache.find(role=>role.id==“816587197868015646”);
//新V12语法✓
我强烈建议不要将任何用户数据存储在JSON中,试试SQL或MongoDB

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!")
      }
   }
{"751092600890458203":{"xp":740,"level":2,"reqxp":1500}}