#node.js #discord.js #sequelize.js
Вопрос:
Итак, я создаю бота discord и столкнулся с проблемой, из-за которой, если я перезапущу (разверну) своего бота, он не создаст таблицу при синхронизации. Я сделал это в прошлый раз, и я думаю, что сделал это правильно, но в прошлый раз все прошло успешно, в то время как сейчас это не делает стол. Он возвращает ноль, поэтому данные не сохраняются. И нет, это не ошибка.
Я также размещаю бота на heroku.
data.js
const Sequelize = require("sequelize") const sequelize = new Sequelize('database', 'user', 'password', { host: 'localhost', dialect: 'sqlite', logging: false, storage: 'database.sqlite', }) module.exports = class Data { constructor(name, attributes) { this.data = sequelize.define(name, attributes) } async create(values) { return await this.data.create(values) } async find(pk) { return await this.data.findByPk(pk) } async update(values, pk, pkv) { return await this.data.update(values, { where: { [pk]: pkv } }) } async sync() { return this.data.sync() } }
start.js
const Data = require("./data") const Sequelize = require("sequelize") const client = new Client({ intents: ["GUILDS", "GUILD_MEMBERS", "GUILD_MESSAGES"] }) const userData = new Data("User", { id: { type: Sequelize.INTEGER, unique: true, primaryKey: true }, wallet: { type: Sequelize.BIGINT, defaultValue: 0 }, bank: { type: Sequelize.BIGINT, defaultValue: 100 } }) client.once("ready", async () =gt; { await userData.sync() client.guilds.cache.forEach(async (guild) =gt; { require("./registrator")(guild.id) await guild.members.fetch() .then((members) =gt; { members.forEach(async ({ id }) =gt; { const user = await userData.find(id) if (!user) { await userData.create({ id: id }) } }) }) }) console.log("Ready") })
cash.js
async cmd(interaction, utils, userData) { const user = await userData.find(interaction.member.id) const wallet = user.wallet const bank = user.bank const amount = interaction.options.getNumber("amount") || bank if (amount gt; 0) { if (bank gt;= amount) { await userData.update({ wallet: wallet amount, bank: bank-amount }, "id", interaction.member.id) interaction.reply({ embeds: [ utils.embed( "Withdrawn", interaction.member.displayAvatarURL(), `Successfully withdrawn ${amount} from your wallet from your bank!` ) ] }) } else { utils.error("You don't have enough money in the bank!") } } else { utils.error("Amount must be greater than 0") } }