首页 > 解决方案 > Java/Discord.js ReferenceError: X 未定义

问题描述

我在这方面很新,我创建了一个工作级别系统,将数据存储在 JSON 中以用于特定的不和谐,在他们达到一定的“经验”后,他们得到提升并可以访问越来越多的后端渠道。一种奖励系统,用户可以更轻松地与我和我的团队(我是内容创建者)进行交流。

我知道这段代码远非完美,但以我目前的知识,它可以解决问题。但是我有一个问题,我希望用户看到他们当前的排名,这也很好,但是每次使用“命令”(.xp)时,它都会在我的控制台中返回一个错误。不过,它确实会以不和谐的方式输出所需的东西。非常感谢有关如何解决此问题的任何想法。

编码

//Levelup system.
var stats = {};
if (fs.existsSync('stats.json')) {
   stats = jsonfile.readFileSync('stats.json');
}

client.on('message', (message) => {

 if (message.guild.id != '335008833267040256')return;{

   if (message.author.id == client.user.id)
       return;

   if (message.guild.id in stats === false) {
       stats[message.guild.id] = {};
   }

   const guildStats = stats[message.guild.id];
   if (message.author.id in guildStats === false) {
       guildStats[message.author.id] = {
           xp: 0,
           level: 0,
           last_message: 0
       };
   }

   const userStats = guildStats[message.author.id];
   if (Date.now() - userStats.last_message > 10000) {
       userStats.xp += random.int(10, 25);
       userStats.last_message = Date.now();

       const xpToNextLevel = 5 * Math.pow(userStats.level, 2) + 50 * userStats.level + 100;
       if (userStats.xp >= xpToNextLevel) {
           userStats.level++;

           if (userStats.level >= 5) {
             message.member.addRole('495558358380838913');
           }
           if (userStats.level >= 10) {
             message.member.addRole('634538508618301445');
           }
           if (userStats.level >= 25) {
             message.member.addRole('634538456265261081');
           }
            if (userStats.level >= 50) {
             message.member.addRole('634539458594865154');
           }
            if (userStats.level >= 100) {
             message.member.addRole('634539508444168203');
           }

           userStats.xp = userStats.xp - xpToNextLevel;
           message.channel.send(message.author + ' has reached level ' + userStats.level + '. **' + xpToNextLevel + '** XP needed for next level.');
       }


       jsonfile.writeFileSync('stats.json', stats);

       console.log(message.author.username + ' now has ' + userStats.xp + 'XP. ' + xpToNextLevel + 'XP needed for next level.');
             if (message.content.startsWith (".xp")) {
                  message.reply ('you are level '+ userStats.level + ', with ' + userStats.xp + ' exp. ' + xpToNextLevel + ' exp is needed for next level.');
                   }

   }
}
   const parts = message.content.split(' ');
     });

fs.readFile('stats.json', (err, data) => {
   if (err) throw err;
   let ShowStats = JSON.parse(data);
   console.log(data);
   //change to ^ stats to show better info
});

控制台输出日志

(node:11) UnhandledPromiseRejectionWarning: ReferenceError: userStats is not defined
at Client.client.on (/home/container/index.js:272:64)
at Client.emit (events.js:203:15)
at MessageCreateHandler.handle (/home/container/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
at WebSocketPacketManager.handle (/home/container/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
at WebSocketConnection.onPacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (/home/container/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
at WebSocket.onMessage (/home/container/node_modules/discord.js/node_modules/ws/lib/event-target.js:120:16)
at WebSocket.emit (events.js:198:13)
at Receiver.receiverOnMessage (/home/container/node_modules/discord.js/node_modules/ws/lib/websocket.js:789:20)
at Receiver.emit (events.js:198:13)
(node:11) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

标签: javascriptdiscord.js

解决方案


我很抱歉。我搞砸了,忘记删除一些旧代码,这些代码将其称为不存在此变量的命令。


推荐阅读