【问题标题】:discord.js bot returns as undefined when trying to get SQLite value尝试获取 SQLite 值时,discord.js 机器人返回未定义
【发布时间】:2020-06-29 02:05:07
【问题描述】:

每当我运行命令时,我都会得到you have undefined,而不是在 SQLite 数据库中输入的数字。

if (command === "bal") {

        if (message.author.bot) return;

        const data = sql.prepare(`SELECT ${args} FROM ${'acc' + message.guild.id + message.member.id}`).get();

        message.channel.send(`You have ${data.args}`)
    }

【问题讨论】:

    标签: discord.js better-sqlite3


    【解决方案1】:

    尝试在选择请求之前添加.catch() 块来处理错误和等待。 像这样:

          if (command === "bal") {
    
                if (message.author.bot) return;
    
                const data =  await sql.prepare(`SELECT ${args} FROM ${'acc' + message.guild.id + message.member.id}`).get().catch((err) => {
                        console.log(err);
                });
    
    
                message.channel.send(`You have ${data.args}`)
            }
    

    您似乎尝试使用 name ${'acc' + message.guild.id + message.member.id} 从表中选择,但表不存在。

    正确的语法是这样的:

    SELECT COLUMNS NAMES FROM TABLE NAME HERE WHERE FIELD = somethink

    【讨论】:

    • 现在我收到了(node:50347) UnhandledPromiseRejectionWarning: RangeError: Too few parameter values were provided。忘了说在那之前,有一个常量是const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
    • 请更详细地写下您想要执行的操作。选择什么数据?从哪个表?什么价值?目前,如果不了解这些介绍性说明,很难为您提供任何帮助。也告诉我你在args中有哪些具体值
    • 好吧,基本上,这是经济系统的一部分。我想要做的是让用户使用'acc + guild ID + member ID'创建一个帐户。基本上,发生的情况是当他们运行创建帐户的命令时,它会产生一个名为acc1252325235475923或其他东西的表.在这里,我试图从之前使用ta create 创建的列中捕获数据,而args 是用户输入的名称。例如,假设有人创建了一个名为 Jeff 的数据库,ta bal Jeff 需要检索该列中写入的内容。
    • (上接前文)。该列来自表acc + guild id + member id,其中包含由用户自己创建的列。该机器人应该从表acc(guildid)(memberid) 中获取Jeff 列中的数据
    • 更正,表是以前用ta create创建的,而列是通过另一个命令ta addname (args)创建的
    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 2017-07-08
    • 2020-08-27
    • 1970-01-01
    • 2015-04-14
    • 2018-06-05
    • 2021-05-26
    • 2021-02-27
    相关资源
    最近更新 更多