узел discord js экспортирует функцию

#function #sequelize.js #export #discord.js

#функция #sequelize.js #экспорт #discord.js

Вопрос:

Я делал discord.js бот следует официальному руководству. У меня есть все мои команды в /commands папке, как рекомендовано.

Затем я последовал курсу по созданию валютной системы с sequelize, следуя этой странице из того же руководства.

У меня есть balance.js файл внутри папки commands, но когда я его вызываю, он выдает мне эту ошибку:

 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() in app.js .

Мне нужно ссылаться на эту переменную в модуле, и этот модуль, похоже, не рассматривает его как коллекцию. Как мне ее импортировать?

Комментарии:

1. Я рекомендую перейти const currency = new Discord.Collection() на client.currency = new Discord.Collection() . Таким образом, вы можете получить доступ к коллекции везде, где вы можете получить доступ к объекту клиента. Таким образом, в вашей команде вы можете использовать message.client.currency

2. Ты действительно исправил весь мой плохой и любительский английский ? Я был удивлен. Спасибо, спасибо 🙂 Я протестирую это, как только смогу.