在official guide之后,我一直在制作discord.js机器人。
根据建议,我所有的命令都放在/commands
文件夹中。
然后,我按照同一指南中的this page,按照本课程创建了带有续集的货币系统。
我在commands文件夹中有一个balance.js
文件,但是当我调用它时,它给了我这个错误:
TypeError: currency.getBalance is not a function
我已经在app.js
文件中定义了该函数,但是如何在balance.js
文件所调用的app.js
内导出(或使用)该函数?
这是在主文件app.js
中定义的功能:
Reflect.defineProperty(currency, 'getBalance', {
value: function getBalance(id) {
const user = currency.get(id);
return user ? user.balance : 0;
},
});
这是balance.js
:
module.exports = {
name: 'balance',
description: 'Informs you about your balance.',
cooldown : 10,
guildOnly : true,
aliases: ['bal', 'cur', 'gem', 'gems'],
execute(message, args) {
const Discord = require('discord.js');
const { Users, CurrencyShop, UserItems, CardBase, UserCollec } = require('../dbObjects');
const currency = require('../app.js')
async () => { const storedBalances = await Users.findAll();
storedBalances.forEach(b => currency.set(b.user_id, b));
UserCollec.sync(); }
const target = message.author;
return message.channel.send(`${target} has ${currency.getBalance(target.id)}<:Gem:756059891465977886>`);
},
};
编辑:
我进步了。现在我知道我必须导入currency
变量,该变量在new Discord.Collection()
中已声明为app.js
。
我需要在模块中引用此变量,并且该模块似乎没有将其视为集合。如何导入?