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

如何修复Discord机器人使用simpl.db时用户信息无法正常入库的问题

问题核心原因

你的代码存在查询路径和写入路径不一致的低级错误:判断是否存在用户数据时,你给用户ID拼接了多余的@前缀,但实际写入时没有加这个前缀,两者指向的是数据库中完全不同的两个路径,自然无法匹配逻辑预期。

错误位置

// 这里的@前缀是多余的,和写入路径不匹配
if (db.has(`@${message.author.id}.Inventory`)) {

修正后的代码

client.on('message', message => {
  // 可选:过滤机器人自身发送的消息,避免无效入库
  if (message.author.bot) return;

  // 移除@前缀,和写入路径保持一致
  if (db.has(`${message.author.id}.Inventory`)) {
    // DO STUFF
  } else {
    db.push(`${message.author.id}.Inventory`, `Bread`)
    // 可选:手动触发数据库保存,避免缓存未同步
    db.save()
  }
});

如果你使用的是v14及以上版本的Discord.js,事件名已从message改为messageCreate,需要对应修改事件监听名。

异常复现逻辑说明

你遇到的触发异常是路径不匹配的连锁反应:

  1. 启动后第一个发消息的是新用户:带@的查询路径不存在,触发else分支写入不带@的正确路径,所以看起来功能正常。
  2. 启动后第一个发消息的是已入库用户:已入库用户的路径不带@,所以带@的查询路径依然不存在,触发else分支重复写入已有用户的库存,触发simpl.db的内部缓存逻辑异常,导致后续新用户的写入操作被阻塞。

修正路径不一致的问题后即可正常运行。

内容的提问来源于stack exchange,提问作者MysteeriMikitin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:00:02