#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. Ты действительно исправил весь мой плохой и любительский английский ? Я был удивлен. Спасибо, спасибо 🙂 Я протестирую это, как только смогу.