【问题标题】:How would I write a changed variable to my config.js file for a permanent change?如何将更改的变量写入我的 config.js 文件以进行永久更改?
【发布时间】:2020-02-12 10:08:58
【问题描述】:

我的问题

我目前正在编写一个 Discord 机器人,目前在一台服务器上使用。我已经设置了一个命令,它将更改机器人命令的前缀,但是一旦我重新启动我的 repl,它就会重置为原始前缀。我想更改命令,使其写入我的config.js 文件以阻止这种情况发生。


到目前为止我所做的尝试

说实话,我还没有尝试过任何东西,因为我不知道从哪里开始


我的代码文件

config.js 文件:

var config={};
config.token = "My Bot Token";
config.prefix = "//";
config.statusMessage = "video games | (" + config.prefix + "help)";
config.dbltoken = undefined;
module.exports = config;

更改前缀.js 文件:

config = require('../config.js');
module.exports = (client, message, args) => {
  config.prefix = args;
  message.reply("Prefix has been changed to: " + config.prefix);
  console.log("Command Used: Change-Prefix");
}

应该发生什么

change-prefix.js 文件应该成功地将用户确定的新前缀写入config.js 文件。目前,我没有任何错误,但我想更改它,因为它会极大地改善我的机器人的用户体验。

【问题讨论】:

    标签: node.js discord discord.js repl.it


    【解决方案1】:

    如果要写文件,可以使用fs模块。下面的代码将自定义前缀保存到 prefix.txt 文件,并在每次启动 repl 时检查它是否存在。如果不是,则使用默认值。

    注意:该代码没有任何错误处理或任何其他功能,它只是一个简单的代码来向您展示想法。在现实生活中,您可能希望将前缀保存到数据库,添加每个服务器的前缀设置,过滤来自其他机器人的消息,在命令调用中包含前缀。还有一件事 - 请将 Discord 令牌放入 .env,而不是配置文件中。

    const Discord = require('discord.js');
    const fs = require('fs');
    const config = require('./config.js');
    const client = new Discord.Client();
    
    // If prefix.txt exist, use it. Otherwise, get data from config file
    let prefix = fs.existsSync('prefix.txt') ? fs.readFileSync('prefix.txt').toString() : config.prefix;
    
    client.on('message', (msg) => {
      // 'set prefix XXX' to change your prefix to XXX
      if (/^set prefix /i.exec(msg.content)) {
        const newPrefix = msg.content.split(' ')[2];
        fs.writeFile("./prefix.txt", newPrefix, function(err) {
        if(err) {
            return console.log(err);
        }
        prefix = newPrefix;
        console.log(`Prefix changed to ${prefix}`);
    }); 
      }
      // 'show prefix' to show current prefix
      if (/^show prefix/i.exec(msg.content)) {
        console.log(`Prefix is ${prefix}`);
      }; 
      });
    
    client.on('ready', () => {
      console.log(`I'm in`);
    });
    
    client.login(process.env.DISCORD_TOKEN);
    

    【讨论】:

    • 感谢您的回复。我会试试看它是否有效
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2021-09-28
    • 2014-08-11
    • 2018-11-21
    • 1970-01-01
    • 2023-02-15
    相关资源
    最近更新 更多