Discord.js命令处理-变量问题

时间:2020-04-02 14:46:44

标签: javascript node.js discord.js

遵循Discord.js关于命令处理(https://discordjs.guide/command-handling/adding-features.html)的教程之后,我找不到如何在所有文件中声明变量的信息。

例如,这就是我在index.js中说的话:

const Discord = require('discord.js');
const fs = require('fs');
const config = require('./config.json');
const client = new Discord.Client();
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('./db.json')
const db = low(adapter)
const adapter2 = new FileSync('./tokens.json')
const tokens = low(adapter2)
const adapter3 = new FileSync('./usedTokens.json')
const used = low(adapter3)
const prefix = config.prefix;
const version = config.version; 

如果我在./commands/command中添加包含命令的文件,则必须重新声明以前在index.js中输入的所有变量:

module.exports = {
    name: 'profile',
    description: 'Checker les infos de son profil avec la commande !profile',
    execute(message, args) {
    //Déclaration de toute les variables
    const low = require('lowdb')
    const FileSync = require('lowdb/adapters/FileSync')
    const adapter = new FileSync('./db.json')
    const db = low(adapter)
    const adapter2 = new FileSync('./tokens.json')
    const tokens = low(adapter2)
    const adapter3 = new FileSync('./usedTokens.json')
    const used = low(adapter3)
    const Discord = require('discord.js');
    const version = config.version;
    var config = require('../config.json');

我正在寻找解决方案,因此不必在每个新命令文件中重新声明所有内容...

1 个答案:

答案 0 :(得分:0)

似乎您的问题中有95%是数据库问题。您的数据库资料应只加载一次,然后绝对将其作为“上下文”传递给命令。在discord.js中,我个人喜欢将此类内容粘贴在客户端实例上,因为可以确保将其传递到您可能需要的任何地方。

index.js

client.db = { users: db, tokens: tokens, used: used };

./commands/command.js

execute(message, args) {
  let client = message.client;
  let token = client.db.tokens.get(message.author.id); //for example
  //do other stuff
}

值得一提的是:您很可能不需要仍然需要重新声明所有变量。您是否在此命令中专门使用versionDiscord呢?如果您不使用它们,请不要导入它们。