Discord.js没有将数据写入.json文件 [英] Discord.js not writing data to .json file
问题描述
这是我的ban命令,我试图导出代码以在命令处理程序中工作。 iv对此命令有很多问题,但最终我几乎可以正常工作。该代码可以正常运行,直到应将其写入.json文件为止(我更改了.json目录以确保已找到它,并且抛出错误,因此上一行代码肯定正在运行,并且找到了。 json)。任何帮助将不胜感激,谢谢
This is my ban command, im trying to export the code to work within a command handler. Iv had numerous issues with this command but eventually i have almost everything working. The code runs perfectly until the point where it should write to .json file (I changed the .json directory to make sure it was being found, and it threw an error so the previous line of code is definitely running, and its finding the .json). Any help would be greatly appreciated, thank you
我也尝试过替换此行
let bannedIDs = require('../../bannedIDs.json').ids || []
with
let file = fs.readFileSync('../../bannedIDs.json')
let bannedIDs = JSON.parse(file).ids || []
仍然不会将任何数据写入.json
still results in no data being written to the .json
const { RichEmbed } = require("discord.js");
const fs = require('fs');
module.exports = {
config: {
name: "ban",
description: "Bans a user from the guild!",
usage: "!ban",
category: "moderation",
accessableby: "Administrators",
aliases: ["b", "banish", "remove"]
},
run: async (bot, message, args) => {
if (!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("You do not have permission to perform this command!");
const user1 = message.mentions.users.first();
let member = message.mentions.members.first();
if (member) {
const member = message.mentions.members.first();
let reason = args.slice(2).join(' ');
var user = message.mentions.users.first();
member.ban({ reason: `${args.slice(2).join(' ')}` }).then(() => {
let uEmbed = new RichEmbed()
.setTitle('**' + `Sucessfully Banned ${user1.tag}!` + '**')
.setThumbnail('https://i.gyazo.com/8988806671312f358509cf0fd69341006.jpg')
.setImage('https://media3.giphy.com/media/H99r2HtnYs492/giphy.gif?cid=ecf05e47db8ad81dd0dbb6b132bb551add0955f9b92ba021&rid=giphy.gif')
.setColor(0x320b52)
.setTimestamp()
.setFooter('Requested by ' + message.author.tag, 'https://i.gyazo.com/8988806671312f358509cf0fd69341006.jpg');
message.channel.send(uEmbed);
}).catch(err => {
message.channel.send('I was unable to kick the member');
console.log(err);
});
} else {
const PREFIX = '!';
let args = message.content.substring(PREFIX.length).split(" ");
let user = message.mentions.users.first(),
userID = user ? user.id : args[1];
if (isNaN(args[1])) return message.channel.send("You need to enter a vlaid @Member or UserID #");
if (args[1].length <= 17 || args[1].length >= 19) return message.channel.send("UserID # must be 18 Digits");
if (userID) {
let bannedIDs = require('../../bannedIDs.json').ids || [];
if (!bannedIDs.includes(userID)) bannedIDs.push(userID);
fs.writeFileSync('../../bannedIDs.json', JSON.stringify({ ids: bannedIDs }));
let reason = args.slice(2).join(' ');
let uEmbed = new RichEmbed()
.setTitle('**' + `UserID #${args[1]}\n Will be Banned on Return!` + '**')
.setThumbnail('https://i.gyazo.com/8988806671312f358509cf0fd69341006.jpg')
.setImage('https://i.imgur.com/6Sh8csf.gif')
.setColor(0x320b52)
.setTimestamp()
.setFooter('Requested by ' + message.author.tag, 'https://i.gyazo.com/8988806671312f358509cf0fd69341006.jpg');
message.channel.send(uEmbed);
let reason1 = args.slice(2).join(' ');
} else {
message.channel.send('Error');
}
}
}
};
推荐答案
要求('../../bannedIDs.json').ids || []
我猜这为什么不起作用是因为,如果 require(...)
不存在,您就不会能够访问 .id
,这在js中很常见,您通常只需执行 obj&& obj.property
或与babel obj?.property
require('../../bannedIDs.json').ids || []
I'm guessing why this doesn't work is because if require(...)
doesn't exist, you wouldn't be able to access .id
, this is a common thing in js which you can usually just do obj && obj.property
or with babel obj?.property
这是我个人的方式会做到
This is personally how I would do it
let file = require('../../bannedIDs.json') || { ids: [userID] };
const bannedIDs = file.bannedIDs;
if (!bannedIDs.includes(userID)) bannedIDs.push(userID);
fs.writeFile('../../bannedIDs.json', JSON.stringify(file));
您也可以这样做
const collection = await <Guild>.fetchBans();
const ids = collection.map(e => e.user.id).array();
要获取被禁止的用户或ID列表
To get a list of banned users or Ids
这篇关于Discord.js没有将数据写入.json文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!