Closed ParNal3355 closed 3 months ago
看一下你的配置文件(记得隐藏敏感信息),在 https://github.com/simple-robot/simbot-component-qq-guild/pull/163 中(大概从QQ组件的 v4.0.0-beta6 开始)迁移到了官方文档内推荐的新的鉴权方式,这种方式要求配置 appId 和 secret 而不再要求 token
以及可以开启 love.forte.simbot.qguild.api
的 debug 日志,查看出现异常之前最后所请求的API的相关日志
看一下你的配置文件(记得隐藏敏感信息),在 simple-robot/simbot-component-qq-guild#163 中(大概从QQ组件的 v4.0.0-beta6 开始)迁移到了官方文档内推荐的新的鉴权方式,这种方式要求配置 appId 和 secret 而不再要求
token
{
"component": "simbot.qqguild",
"ticket": {
"appId": "********",
"secret": "",
"token": "****************"
},
"config": {
"serverUrl": "SANDBOX",
"intents": {
"type": "raw",
"intents": 1073741827
}
}
}
配置上 secret
后再做尝试
看一下你的配置文件(记得隐藏敏感信息),在 simple-robot/simbot-component-qq-guild#163 中(大概从QQ组件的 v4.0.0-beta6 开始)迁移到了官方文档内推荐的新的鉴权方式,这种方式要求配置 appId 和 secret 而不再要求
token
!添加secret后没事了,非常感谢——
是否会提供贡献?
否
版本号
4.6.0
附加版本
使用IDEA创建Spring Boot项目,将依赖更新到最新版本(核心:4.6.0。QQ组件库:4.0.0。Ktor:2.3.12。)。 安装后立刻启动,无异常。使用@EnableSimbot注释启动类,启动后报错。 经测试,疑似QQ组件库问题。代码以及报错内容在下方写到。 测试组合: ----核心------QQ组件库--Ktor-----结果 4.0.0-dev18--4.0.0-dev8--2.3.8----正常 ---4.6.0------4.0.0-dev8--2.3.8----正常 ---4.6.0------4.0.0-dev8--2.3.12---正常 ---4.6.0---------4.0.0-----2.3.12---报错
涉及的编程语言
Java
项目构建工具
Maven
涉及的组件库
QQ机器人
问题描述
pom.xml内容:
补全机器人配置文件,直接运行结果:
在启动类前加入@EnableSimbot注释:
启动项目,运行报错: 为方便阅读,我将报错内容分割以方便滑动。
复现方式
无
相关日志
No response
其他补充
我有以前旧版本框架下的机器人,运行正常,在备份后更新版本,结果仍然报错。 我将报错内容询问过AI,不知以下内容是否有帮助:
据您提供的错误日志,问题出在 love.forte.simbot.qguild.QQGuildResultSerializationException,这表明在反序列化 QQ 公会 API 的响应时失败了。具体来说,Fields [access_token, expires_in] are required for type with serial name 'love.forte.simbot.qguild.api.app.AppAccessToken', but they were missing at path: $ 指出了在尝试将响应解析为 AppAccessToken 类型时,必要的字段 access_token 和 expires_in 缺失了 。
这个问题可能是由于 API 响应的格式与预期不匹配导致的。解决这个问题,您可能需要:
1.检查 API 的响应确保所有必要的字段都存在。 2.确认您的 AppAccessToken 类型是否正确地映射了这些字段。 3.如果 API 响应格式有更新,您可能需要更新您的代码以匹配新的格式。 另外,从日志中可以看到应用程序因为异常而被取消启动,这通常是因为在 Spring Boot 应用程序中,@Async 异步任务抛出了未捕获的异常。Spring Boot 默认的 SimpleAsyncTaskExecutor 线程池会捕获并记录异常,但不会传播异常,导致应用程序启动流程中无法感知到这些异常。您可以通过自定义线程池并设置 setRejectedExecutionHandler 来处理这种异常传播问题 。
最后,您可能需要查看 kotlinx.serialization 文档来确保您的序列化和反序列化逻辑正确无误 。 如果您需要进一步的帮助来解决这个问题,您可以查看相关的社区讨论或文档