You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用quick.db开发Discord经济机器人时db.get()不是函数的问题

解决quick.db .get()函数无法识别的问题

最可能的原因:版本不兼容

quick.db在v10版本后修改了API使用逻辑,如果你安装的是v10+版本,直接require("quick.db")得到的对象不包含.get()这类方法,必须先初始化数据库实例:

修改代码中db的初始化部分:

// 替换原来的 const db = require("quick.db")
const { QuickDB } = require("quick.db");
const db = new QuickDB();

其他排查方向

  • 检查安装版本:执行npm list quick.db查看当前版本,若想沿用旧版直接调用.get()的逻辑,可以回退到v9版本:
npm uninstall quick.db
npm install quick.db@9
  • 重装依赖:如果安装过程有文件损坏,执行npm uninstall quick.db && npm install quick.db重新安装
  • 排查变量覆盖:确保代码中没有其他地方重新赋值db变量,导致原方法被覆盖

附带代码优化建议

你的提现命令还有两个潜在问题,顺便修正:

  1. args[1]大概率是笔误(通常命令参数从args[0]开始,比如!withdraw 100中金额是args[0]),且未做输入校验,会导致无输入或非法输入时出错
  2. 使用message.author作为键会被转成[object Object],应该用message.author.id作为用户唯一标识:
// 修正键的写法
let bank = db.get(`bank_${message.author.id}`)
let bal = db.get(`balance_${message.author.id}`)

// 增加输入校验
let wt = args[0];
if (!wt || isNaN(wt)) {
  return message.reply("请输入有效的提现金额");
}
wt = parseInt(wt);
if (wt > bank) {
  return message.reply("你的银行余额不足");
}

内容的提问来源于stack exchange,提问作者Daniel Ben Ari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:46:07