在回复机器人消息时,日志报错:leveldb: not found 的解决方法

本帖内容存在严重的副作用,内容已经折叠

**注意**:以下方法虽然可以解决回复机器人消息时leveldb报错的问题,但不确定是否能够解决其它比如编码问题造成的leveldb报错。在使用后续方法规避报错,并且开发插件时,请先判断发送者的QQ是否是机器人QQ(具体原因看1楼),实例: import { Context, Schema } from 'koishi' export const name = 'plugin2023' export interface Config {} export const Config: Schema = Schema.object({}) export function apply(ctx: Context) { ctx.on("message", async (session) => { //收到新消息 if(session.userId == session.selfId) return; //检测发送者是不是bot自身 //不是botQQ继续 session.send("你好~") }) }

问题描述:
在群里回复机器人消息的时候,出现了下图中的报错:

通过调试插件,输出session数据,发现数据正常,但是 quote: undefined 了
image

调试输出原始数据也是正常的:
image

这就说明不是消息解析上的问题。
继续测试,同群内回复其他QQ(不是bot的正常QQ),一切正常,没有任何报错,并且quote字段是有效的:
image

所以真正的问题在于,获取botQQ自身消息的这个过程发生了错误,正常罗辑下,除了botQQ以外的QQ消息数据都是正常的,那会不会是 因为gocq没有上报botQQ自己的消息 导致的问题呢?!

打开 koishi > 进入插件列表 > [gocqhttp] > [消息设置]


开启它
image

重载配置
image

重启koishi。

image

image

问题解决!

1 个赞

后续看到此贴的小伙伴请注意:如果你并非开发者,那么不要尝试本贴的使用方法。

quote 为 undefined 是由于上游导致的另外的 bug,和消息的 上报 没有关系。

如果你对 OneBot 和 go-cqhttp 不熟悉,千万不要打开「上报自身消息」的开关。这会使你的 bot 无限发送特定的消息并最终导致限流、风控或封禁。

2 个赞