Экземпляр Sequelize не передается для discordjs

#mysql #sequelize.js #discord.js

Вопрос:

https://github.com/qaiswaz/ticket вот код, пожалуйста, помогите мне, я уже неделю ищу решение. каждый раз, когда я пытаюсь запустить бота, слышу, что он говорит

бот находится в сети

Выполнение (по умолчанию): ВЫБЕРИТЕ 1 1 В качестве результата

подключено к БД

Ошибка: Экземпляр Sequelize не передается в функции.init (C:UsersqaiswOneDriveDesktopALL ФАЙЛЫдискордированиебилетnode_modulesпоследовательностьlibмодель.js:921:13) в функции.init (C:UsersqaiswOneDriveDesktopALL ФАЙЛЫдискордингбилетмоделиTicketConfig.js:5:20) в C:UsersqaiswOneDriveDesktopALL ФАЙЛЫдискордированиебилетбот.js:13:22 при обработке и запросах (внутренний/процесс/task_queues.js:88:5)

bot.js

   
require('dotenv').config();
const { Client } = require('discord.js');
const client  = new Client({ partials: ['MESSAGE', 'REACTION'] });
const db = require('./database');
const Ticket = require('./models/Ticket');
const TicketConfig = require('./models/TicketConfig');
client.once('ready', () => {
    console.log('bot is online');
    db.authenticate()
    .then(() => {
        console.log('connected to DB');
        Ticket.init(db);
        TicketConfig.init(db);
        Ticket.sync();
        TicketConfig.sync();
    }).catch((err) => console.log(err));
});


client.on('message', async message => {
    if (message.author.bot || message.channel.type === 'dm') return;

    if (message.content.toLowerCase() ==='?setup' amp;amp; message.guild.ownerID === message.author.id) {
        try {
            const filter = (m) => m.author.id === message.author.id;
            message.channel.send('please enter the message id for this ticket');
            const msgId = (await message.channel.awaitMessages(filter, { max: 1})).first().content;
            console.log(msgId)
            const fetchMsg = message.channel.messages.fetch(msgId);
            message.channel.send('please enter the category id for this ticket');
            const categoryId = (await message.channel.awaitMessages(filter, { max: 1})).first().content;
            console.log(categoryId)
            const categoryChannel = client.channels.catche.get(categoryId);
            message.channel.send('please enter all of the roles that have access to tickets');
            const roles = (await message.channel.awaitMessages(filter, {max: 1})).first().content.split(/,s*/);
            if (fetchMsg amp;amp; categoryChannel) {
                for (const roleId of roles)
                    if (!message.guild.roles.cache.get(roleId)) throw new Error('role does not exist');
                        
                    const ticketConfig = await TicketConfig.create({
                        messageId: msgId,
                        guildId: message.guild.id,
                        roles: json.stringify(roles),
                        parentId: categoryChannel.id
                    });

                    message.channel.send('saved config to db');
                
            }else throw new error('invaild fields');

        }catch (err) {
    }
}
});


client.login(process.env.BOT_TOKEN);



 

database.js

 const { Sequelize } = require('sequelize');

module.exports = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
    dialect: 'mysql',
    host: process.env.DB_HOST
});
 

*models/Ticket.js

 const { DataTypes, Model } = require('sequelize');

module.exports = class Tickets extends Model {
    static init(sequelize) {
        return super.init( {
            ticketId: {
                type: DataTypes.INTEGER,
                autoIncrement: true,
                primaryKey: true,
            },
            channelId: {
                type: DataTypes.STRING,
            },
            guildId: {
                type: DataTypes.STRING,
            },
            resolved:{
                type: DataTypes.BOOLEAN,
            },
            closedMessageId:{
                type: DataTypes.STRING,
            },
            authorId:{
                type: DataTypes.STRING,
            },
        },
        {
            sequelize: sequelize,
            modelName: 'Ticket'
                
        })
    }
}
 

models/TicketConfig.js

 const { DataTypes, Model } = require('sequelize');

module.exports = class TicketConfig extends Model {
     static init(sequelize) {
      return super.init({
        messegeId: {
        type: DataTypes.STRING,
         primaryKey: true 
        },
        guildld: {
        type: DataTypes.STRING
        },
        roles: {
        type: DataTypes.STRING
         },
        parentld: {
        type: DataTypes.STRING
         },
         sequelize: sequelize,
         modelName: 'TicketConfig',
        })
    }
}
 

Ответ №1:

Я добавил sequelizeInstance , пока определяю модель

*models/Ticket.js

 const { DataTypes, Model } = require('sequelize');

const sequelizeInstance = require('./database');

module.exports = class Tickets extends Model {
    static init(sequelize) {
        return super.init( {
            ticketId: {
                type: DataTypes.INTEGER,
                autoIncrement: true,
                primaryKey: true,
            },
            channelId: {
                type: DataTypes.STRING,
            },
            guildId: {
                type: DataTypes.STRING,
            },
            resolved:{
                type: DataTypes.BOOLEAN,
            },
            closedMessageId:{
                type: DataTypes.STRING,
            },
            authorId:{
                type: DataTypes.STRING,
            },
        },
        {
            sequelize: sequelizeInstance, // <- 
            modelName: 'Ticket'
                
        })
    }
}
 

models/TicketConfig.js

 const { DataTypes, Model } = require('sequelize');
const sequelizeInstance = require('./database')

module.exports = class TicketConfig extends Model {
     static init(sequelize) {
      return super.init({
        messegeId: {
        type: DataTypes.STRING,
         primaryKey: true 
        },
        guildld: {
        type: DataTypes.STRING
        },
        roles: {
        type: DataTypes.STRING
         },
        parentld: {
        type: DataTypes.STRING
         },
         sequelize: sequelizeInstance, // <- 
         modelName: 'TicketConfig',
        })
    }
}
 

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

1. и вы что-нибудь изменили в database.js

2. или проверьте этот код github.com/nkhs/node-sequelize , но это не то же самое с вашим проектом