常见问题
包引用异常/找不到注解/无法引用注解
如果你发现你的代码所有simbot相关的内容都出现了包引用异常,并且它们的特点是:
你使用的IDE是 IntelliJ IDEA,而且版本不是最新的。
你实际正常引入了相关的依赖,也可以在依赖树/库中找到对应的类,换言之警告的类实际上是存在的。
红色警告附着在类上 ,而不是某个包路径节点上。
强行运行的话是可正常运行的。
例如图例所示:
那么这通常是因为Kotlin插件版本过低而导致类型无法解析。
那么你可以:
1.更新IDEA
你需要确保你的IDEA的版本不能太落后,至少要在当前最新版本的三个小版本范围内。 举个例子,假如目前IDEA的最新版本为 2023.1
,那么你现在使用的IDEA至少也得是 2022.1+
。
2.禁用Kotlin插件
如果你真的不想更新IDEA,那么你可以尝试禁用IDEA的 Kotlin
插件, 如果你不打算也没有使用Kotlin的话。只要你编写的语言不是 Kotlin
,那么禁用掉此插件也是可以使用simbot的。
如何主动获取Bot/主动发送消息
在非事件的情况下(例如一个定时任务或初始化任务),你可以通过构建的 Application
获取到 BotManagers
, 而又可以通过各个 BotManager
进一步获取到你想要的 Bot
。
在集成 Spring 的情况下获取 Application
,你可以参考: 获取 Application、BotManager 或 Bot。
而对于主动发送消息,当你拿到了 Bot,就可以用来获取其中的行为对象了(比如群、频道等), 届时即可直接使用它们的 send
API 进行发送。
ClassNotFoundException: kotlin.enums.EnumEntriesKt
出现此问题,你大概率在通过 Maven 工具使用 Spring Boot,且版本大概率是 2.x 。 在Maven中,Spring Boot 的 spring-boot-parent
会通过 properties
标签中的 kotlin.version
控制一个 Kotlin 的版本, 有关这种版本管理的说明,你可以参考Spring官方文档的这些内容:
Spring Boot 3.2及以下 (包括 2.x) 文档: Dependency Versions / Version Properties
(有需要可自行更改链接路径中的版本号)
因此,在Maven中如果想要修复此问题,使用 properties
为属性 kotlin.version
指定一个较高的 Kotlin 版本即可。
QQ机器人组件监听不到群聊消息
首先确保你配置了沙箱群(如果是测试环境),并启动成功无误。
然后,检查你配置中的 config.intents
的值 是否包含群聊相关 的事件的订阅值。
由于群聊相关的事件不是默认的,因此你需要自行添加对其的订阅配置。
你可以在 《QQ机器人 - Bot配置文件 - intents》 中了解到更多。