Discord Bot:Per-Guild变量在重新加载时不会重置

时间:2019-09-15 22:03:41

标签: javascript discord.js

因此,我真的是不协调机器人编码的新手,我偶然发现了一个问题,我似乎无法全神贯注,到目前为止也没有在网络上寻找任何帮助。所以我想问一下:)

我想要的是一个变量,该变量对于每个不一致的“行会”(服务器)都是不同的,并且会随命令而变化。此变量是前缀(我希望每个服务器都可以自定义它)。现在我的问题是,每次重新加载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);

预先感谢:)

1 个答案:

答案 0 :(得分:0)

该机器人是用Javascript编写的,以供将来参考,因此,当查找参考时,查找“如何在Javascript中将数据存储到应用程序外部”比使用不和谐的bot会走得更远。

根据您的问题,所有变量都存储在ram中,并在应用程序关闭后清除。为了获得持久性数据,您将必须在外部存储它并访问它。您可以通过写入txt文件或Json来完成此操作,但这通常会损坏。 最好的选择是从建立一个sqlite数据库并将应用程序连接到该数据库以存储和访问数据开始。

这里是有关如何创建数据库和一些起始表以及如何将discord.js机器人连接到所述数据库的完整教程。

link