Discord.js 更新discord bot后如何存储值以防止松动?

Discord.js 更新discord bot后如何存储值以防止松动?,discord.js,Discord.js,我目前正在创建一个discord bot(node.js+discord.js),我得到了基础(命令、配置文件)。我成功地将我的机器人加载到我的服务器,但我相信我会随着时间的推移改进它 那么如何存储值/数据呢?(用户级别、用户点、用户自定义计数器等) 我知道数据库和json文件的存在,但我不确定它是否会起作用。 我想知道是否可以从我的机器人下载/检索文件,然后在更新后重新加载它。可能吗?正确的解决方案是使用数据库。你可以拿mysql为例。 并使用guild.id和user.id作为选择键 例如:

我目前正在创建一个discord bot(node.js+discord.js),我得到了基础(命令、配置文件)。我成功地将我的机器人加载到我的服务器,但我相信我会随着时间的推移改进它

那么如何存储值/数据呢?(用户级别、用户点、用户自定义计数器等)

我知道数据库和json文件的存在,但我不确定它是否会起作用。
我想知道是否可以从我的机器人下载/检索文件,然后在更新后重新加载它。可能吗?

正确的解决方案是使用数据库。你可以拿mysql为例。 并使用guild.id和user.id作为选择键

例如:

创建数据库

创建数据库myBase
使用myBase
创建表“用户”(
`id`bigint主键自动递增,
`Guidid`varchar(255),
`userId`varchar(255),
`里夫
);
创建用于连接到数据库的池

constmysql=require('mysql');
constpool=mysql.createPool({
连接限制:15,
主机:“localhost”,
用户:'根',
密码:“password”,
数据库:“myBase”,
});
module.exports=池;
使用选择、创建和更新mysql数据创建文件

const pool=require('./pool');
const get=(guildId,userId)=>{
返回新承诺((解决、拒绝)=>{
query(`SELECT*FROM userId=${userId}&&guildId=${guildId}`,其中userId=${userId},,(err,rows)=>{
如果(错误)抛出错误;
如果(rows.length==0){
解析(创建(guildId,userId));
}else if(行){
解析(行[0]);
}否则{
拒绝(错误);
}
});
});
};
const create=(guildId,userId)=>{
返回新承诺((解决、拒绝)=>{
让数据={
吉尔迪德:吉尔迪德,
userId:userId,
级别:1,
};
pool.query('INSERT INTO users SET?',data,(err,result)=>{
解析(get(guildId,userId));
});
});
};
const update=(guildId、userId、data)=>{
返回新承诺((解决、拒绝)=>{
get(guildId,userId)。然后(user=>{
pool.query(`updateusersset?WHERE _id=${user.id}`,data,(err,result)=>{
如果(错误)抛出错误;
解析(get(guildId,userId));
});
});
});
};
module.exports.get=get
module.exports.create=创建
module.exports.update=更新
在bot中使用的一些示例

const Discord=require('Discord.js');
const client=new Discord.client();
常量前缀='?';
const-token=require('./token.json').token;
const mysqlUser=require('./mysqlUser');
client.on('ready',()=>{
log(`Bot已准备就绪`);
});
client.on('消息',(消息)=>{
/*s*检查消息以前缀开头*/
如果(!message.content.startsWith(prefix))返回;
/*将消息拆分到数组*/
设args=message.content.substring(prefix.length).split(“”);
/*获得命令*/
let command=args.shift();
如果(命令=='lvl'){
mysqlUser.get(message.guild.id,message.author.id)。然后((user)=>{
message.channel.send(`message.author}您的lvl是${user.lvl}`);
});
}
});
client.login(令牌);