晚上好, 我正在开发Discord机器人,但存在逻辑问题。我添加了一些可自定义的变量,但是如果该漫游器脱机或得到了更新,则将删除所有用户添加的数据。我应该将其存储在外部文件还是数据库中,甚至使用webhooks。谢谢。
答案 0 :(得分:1)
我建议您将播放器变量存储在JSON文件中。它们易于读写,几乎不需要任何额外的代码。
存储xp和角色变量的播放器数据json文件示例:
{
"407362137430687745": {
"xpp": 2001,
"xppr": 999182,
"currentRole": "rank 4"
},
"389981749448409100": {
"xpp": 112,
"xppr": 148,
"currentRole": "rank 2"
},
"405809293204520980": {
"xpp": 100,
"xppr": 128,
"currentRole": "rank 1"
}
}
它们可以自动在不和谐的用户ID下列出,这样您就可以使用message.author.id
等在json中保存到播放器的键中。
写入json文件的示例:
const fs = require('fs') //importing file save
var xpPath = 'file path to json here'
var xpRead = fs.readFileSync(xpPath);
var xpFile = JSON.parse(xpRead); //ready for use
var userId = message.author.id //user id here
if (!xpFile[userId]) { //this checks if data for the user has already been created
xpFile[userId] = {xpp: 0, xppr: 0, currentRole: ""}; //if not, create it
fs.writeFileSync(xpPath, JSON.stringify(xpFile, null, 2));
} else {
//as an example, I will give the owner of the id 50 xp and the role "Awesome Role"
var xppVar = Number(xpFile.xpp) + 50 //add 50 to their original xp
var xpprVar = Number(xpFile.xppr)
var roleToGive = "Awesome Role"
xpFile[userId] = {xpp: xppVar, xppr: xpprVar, currentRole: roleToGive};
fs.writeFileSync(xpPath, JSON.stringify(xpFile, null, 2));
console.log(`Changed that player's xp to ${xppVar} and gave him the role ${roleToGive}`)
}
在您的bot中实现此操作非常简单,因为您要做的就是将json文件中的键更改为所需的代码并创建一个json文件。
答案 1 :(得分:0)
这实际上取决于您要保存的数据的类型/数量。但是,如果要保存用户数据,则可能需要设置数据库。尝试签出MongoDB或rethinkDb