因此,我真的是不协调机器人编码的新手,我偶然发现了一个问题,我似乎无法全神贯注,到目前为止也没有在网络上寻找任何帮助。所以我想问一下:)
我想要的是一个变量,该变量对于每个不一致的“行会”(服务器)都是不同的,并且会随命令而变化。此变量是前缀(我希望每个服务器都可以自定义它)。现在我的问题是,每次重新加载bot时,前缀都会重置为默认前缀:(
代码:
const Discord = require('discord.js');
const { token, defaultPrefix } = require('./config.json');
const client = new Discord.Client();
const today = new Date();
var prefix = {}
client.on('ready', () => {
console.log(`[${today}] Logged in as ${client.user.tag}!`)
});
client.on('message', msg =>
{
let id = msg.guild.id
if (prefix[id] == undefined) {
prefix[id] = defaultPrefix;
};
if (msg.content.StartsWith(prefix[id] + 'prefix')) {
if (msg.content.split(" ")[1] && !msg.content.split(" ")[2]) {
msg.channel.send(`Successfully changed prefix!`)
prefix[id] = msg.content.split(" ")[1]
}
}
}
);
client.login(token);
预先感谢:)
答案 0 :(得分:0)
该机器人是用Javascript编写的,以供将来参考,因此,当查找参考时,查找“如何在Javascript中将数据存储到应用程序外部”比使用不和谐的bot会走得更远。
根据您的问题,所有变量都存储在ram中,并在应用程序关闭后清除。为了获得持久性数据,您将必须在外部存储它并访问它。您可以通过写入txt文件或Json来完成此操作,但这通常会损坏。 最好的选择是从建立一个sqlite数据库并将应用程序连接到该数据库以存储和访问数据开始。
这里是有关如何创建数据库和一些起始表以及如何将discord.js机器人连接到所述数据库的完整教程。