【发布时间】:2021-04-09 15:40:57
【问题描述】:
我正在尝试将临时信息发送到一个 json 文件,我可以在其中将它们存储为对象数组,然后在一段时间后自动将文件重置为空数组。
代码起初读得很好并存储了信息,但是一旦它设置回一个空数组,代码就不再读取它是空的,并且仍然在不应该做的事情。当使用下面的 join 命令时,它应该检查它是否为空,如果是则返回并且不存储任何东西,直到那里首先有敌人。 “用户加入战斗”的响应仍然发生,并且数组中没有存储任何内容。
这是连接命令
const Discord = require('discord.js');
const fs = require('fs');
const enemySpawn = require('../EnemySpawn.json');
const { rpgbot } = require('../colors.json');
module.exports = {
name: 'join',
description: 'Used to join the grouping of players to fight an enemy that spawns',
execute(message, args) {
if (enemySpawn.length == 0) return message.channel.send('There\'s no enemy to fight!');
if (enemySpawn.some(user => user.id === message.author.id)) return message.channel.send('You already joined the current fight!');
// TODO add users stats
enemySpawn.push({
name: message.author.username,
id: message.author.id
})
fs.writeFile('./EnemySpawn.json', JSON.stringify(enemySpawn), err => {
if (err) console.error(err);
});
// TODO add current level of the user
const embed = new Discord.MessageEmbed()
.setColor(rpgbot)
.addField(`${message.author.username} joined the fight!`, '\u200B')
message.channel.send(embed);
},
};
这里是先获取敌人并储存的功能
const fs = require('fs');
const enemySpawn = require('./EnemySpawn.json');
const enemies = require('./Enemies.json')
getEnemy: function (message) {
if (!(enemySpawn.length == 0)) return;
let randomEnemy = enemies[Math.floor(Math.random() * enemies.length)];
enemySpawn.push({
enemy: randomEnemy.name,
health: randomEnemy.health
})
fs.writeFile('./EnemySpawn.json', JSON.stringify(enemySpawn), err => {
if (err) console.error(err);
});
message.channel.send(`Watch out! A ${randomEnemy.name} appeared!`);
}
这里是当有人发送一条消息时调用它的地方,该消息还具有超时功能,可在 3 秒后清除数组以进行测试
const fs = require('fs');
const functions = require('./functions.js');
let used = false;
if (!used) {
functions.getEnemy(message);
used = true;
setTimeout(function () {
used = false;
fs.writeFile('./EnemySpawn.json', JSON.stringify([]), err => {
if (err) console.error(err);
});
}, 3000);
}
【问题讨论】:
-
考虑重新编写问题,只关注问题。抽象出不必要的代码,关注不为空的数组。
标签: javascript node.js arrays discord.js fs