首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用discordjs-commando setProvider()时,sqlite出现错误

当我使用discordjs-commando setProvider()时,sqlite出现错误
EN

Stack Overflow用户
提问于 2020-07-03 03:55:45
回答 3查看 223关注 0票数 1

我正在使用discordjs-commando和

代码语言:javascript
复制
client.setProvider(
    sqlite.open(path.join(__dirname, 'settings.sqlite3')).then(db => new Commando.SQLiteProvider(db))
).catch(console.error);

给了我这个错误Error: sqlite: filename is not defined

你知道怎么让它工作吗?

EN

回答 3

Stack Overflow用户

发布于 2021-01-14 14:03:38

我想我知道一种修复它的方法

代码语言:javascript
复制
client.setProvider(
     sqlite.open({ filename: path.join(__dirname, 'settings.sqlite3')}).then(db => new Commando.SQLiteProvider(db))
 ).catch(console.error);

使用这个

票数 0
EN

Stack Overflow用户

发布于 2021-02-02 04:49:15

Yo,所以这个回复可能是晚了asf。但是,我通过执行以下操作实现了这一点:

代码语言:javascript
复制
// This line simply checks to see if my Node.js version is version 12.
// If it isn't, it then tells me to update Node.js
if (Number(process.version.slice(1).split(".")[0]) < 12) throw new Error("Node 12.0.0 or higher is required. Update Node on your system.");


// These are my imports
const { CommandoClient, Commando } = require('discord.js-commando');
const { promisify } = require("util");
const readdir = promisify(require("fs").readdir);
const Enmap = require("enmap");
const path = require('path');

require('./.eslintrc.json');



require('dotenv').config();// I used dotenv to store my more secure info
const TOKEN = process.env.CLIENT_TOKEN;// This line reads my Client Token from dotenv
const PREFIX = process.env.CLIENT_PREFIX;// This line reads my Client Prefix from dotenv
const OWNER_ID = process.env.OWNER;// This line reads the bot's owner id from dotenv



const init = async () => {// I crteated an async wrapper for my client here


    const sqlite = require('sqlite');// I imported SQLite here

    const client = await new CommandoClient({// I set my client here
        commandPrefix: PREFIX,
        owner: OWNER_ID,
        disableEveryone: true,
        unknownCommandResponse: false
    });

    client.setProvider(// This line of code sets my SQLite DB Provider
        sqlite.open({ filename: path.join(__dirname, 'settings.sqlite3') }).then(db => new Commando.SQLiteProvider(db))
    ).then(console.log).catch(console.error);

// Since I'm wrapping my client in an async wrapper, my commands and groups are registered here
    client.registry
        .registerDefaultTypes()
        .registerGroups([
            ['admin', 'Administration'],
            ['mod', 'Moderation'],
            ['util', 'Utility'],
            ['misc', 'Miscellaneous'],
            ['twitch', 'Twitch']
        ])
        .registerDefaultGroups()
        .registerDefaultCommands()
        .registerCommandsIn(path.join(__dirname, 'commands'));


    client.commands = new Enmap();// This sets a new Enmap for my commands
    client.aliases = new Enmap();// This sets a new Enmap for my command aliases
    client.settings = new Enmap({ name: "settings" });//This sets a new Enmap for my settings

    client.logger = require("./modules/Logger.js");//This line makes my bot require the internal Logger.js file I have in my bot's modules folder
    require("./modules/functions.js")(client);// This line makes my bot require the internal functions.js file I have in my bot's modules folder

    const evtFiles = await readdir("./events/");
    client.logger.log(`Loading a total of ${evtFiles.length} events.`);
    evtFiles.forEach(file => {
        const eventName = file.split(".")[0];
        client.logger.log(`Loading Event: ${eventName}`);
        const event = require(`./events/${file}`);
        // Bind the client to any event, before the existing arguments
        // provided by the discord.js event. 
        client.on(eventName, event.bind(null, client));

        client.login(TOKEN).catch(console.error);// Since my client is in an async wrapper, I imported my TOKEN here
    });

};

init();// Now that I've finished with the rest of my index.js file I have ended the async wrapper here

它可能对你没有多大用处,但我希望这能在未来帮助其他人。

票数 0
EN

Stack Overflow用户

发布于 2021-07-10 11:23:22

代码语言:javascript
复制
client.setProvider(
    sqlite.open({ filename: 'database.db', driver: sqlite3.Database }).then(db => new Commando.SQLiteProvider(db))
).catch(console.error);

这肯定能解决这个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62704112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档