使用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变量,导致原方法被覆盖
附带代码优化建议
你的提现命令还有两个潜在问题,顺便修正:
args[1]大概率是笔误(通常命令参数从args[0]开始,比如!withdraw 100中金额是args[0]),且未做输入校验,会导致无输入或非法输入时出错- 使用
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
相关产品推荐
相关产品推荐

