Как мне записать измененную переменную в мой файл config.js для постоянного изменения? - PullRequest
0 голосов
/ 15 октября 2019

Моя проблема

В настоящее время я пишу бот Discord для использования на одном сервере в данный момент. Я настроил команду, которая изменит префикс команд бота, но как только я перезапущу свой репл, он сбрасывается к исходному префиксу. Я хотел бы изменить команду так, чтобы она записывала в мой файл config.js, чтобы этого не происходило.


Что я уже пробовал

Если честно, я еще ничего не пробовал, так как понятия не имею, с чего начать


Мой код Файлы

config.js file:

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

файл change-prefix.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. В данный момент у меня нет ошибок, но я хотел бы изменить это, поскольку это значительно улучшило бы пользовательский опыт для моего бота.

1 Ответ

0 голосов
/ 16 октября 2019

Если вы хотите записать файл, вы можете использовать модуль 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);
...