遵循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');
我正在寻找解决方案,因此不必在每个新命令文件中重新声明所有内容...
答案 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
}
值得一提的是:您很可能不需要仍然需要重新声明所有变量。您是否在此命令中专门使用version
? Discord
呢?如果您不使用它们,请不要导入它们。