【问题标题】:No Sequelize instance passed for discordjs没有为 discordjs 传递 Sequelize 实例
【发布时间】:2021-06-15 16:49:28
【问题描述】:

https://github.com/qaiswaz/ticket 听到的是代码,请帮助我,我已经找了一个星期的解决方案。 每次我尝试运行机器人时,都会听到它所说的内容

机器人在线

执行(默认):SELECT 1+1 AS 结果

连接到数据库

错误:未传递 Sequelize 实例 在 Function.init (C:\Users\qaisw\OneDrive\Desktop\ALL FILES\discording\ticket\node_modules\sequelize\lib\model.js:921:13) 在 Function.init (C:\Users\qaisw\OneDrive\Desktop\ALL FILES\discording\ticket\models\TicketConfig.js:5:20) 在 C:\Users\qaisw\OneDrive\Desktop\ALL FILES\discording\ticket\bot.js:13:22 在 processTicksAndRejections (internal/process/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' && 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 && 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',
        })
    }
}

【问题讨论】:

    标签: mysql sequelize.js discord.js


    【解决方案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',
            })
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2019-04-04
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多