Simple Robot v4.7.0 Help

常见问题

包引用异常/找不到注解/无法引用注解

如果你发现你的代码所有simbot相关的内容都出现了包引用异常,并且它们的特点是:

  • 你使用的IDE是 IntelliJ IDEA,而且版本不是最新的。

  • 你实际正常引入了相关的依赖,也可以在依赖树/库中找到对应的类,换言之警告的类实际上是存在的

  • 红色警告附着在类上 ,而不是某个包路径节点上。

  • 强行运行的话是可正常运行的。

例如图例所示:

FAQ-包引用异常.png

那么这通常是因为Kotlin插件版本过低而导致类型无法解析。

那么你可以:

1.更新IDEA

你需要确保你的IDEA的版本不能太落后,至少要在当前最新版本的三个小版本范围内。 举个例子,假如目前IDEA的最新版本为 2023.1 ,那么你现在使用的IDEA至少也得是 2022.1+

2.禁用Kotlin插件

如果你真的不想更新IDEA,那么你可以尝试禁用IDEA的 Kotlin 插件, 如果你不打算也没有使用Kotlin的话。只要你编写的语言不是 Kotlin ,那么禁用掉此插件也是可以使用simbot的。

如何主动获取Bot/主动发送消息

在非事件的情况下(例如一个定时任务或初始化任务),你可以通过构建的 Application 获取到 BotManagers, 而又可以通过各个 BotManager 进一步获取到你想要的 Bot

val application: Application = ... // 你的 Application // 可以得到 BotManagers val botManagers = application.botManagers // 你可以选择直接使用 allBots()、firstBot() 等辅助API来遍历或快捷获取某种bot botManagers.allBots().forEach { bot -> ... } // 也可以自行遍历,精准选择你所需要的bot for (botManager in botManagers) { // 假设这里你想要寻找QQ机器人的BotManager if (botManager is QQGuildBotManager) { // 找到指定 appid 的bot, // 然后你可以保存、操作,或者做点儿什么。 val bot = botManager[123456789.ID] // 你已经找到了你需要的bot,结束循环 break } }
var application = ...; // 你的 Application // 可以得到 BotManagers var botManagers = application.getBotManagers(); // 你可以选择直接使用 allBots()、firstBot() 等辅助API来遍历或快捷获取某种bot botManagers.allBots().iterator().forEachRemaining(bot -> { ... }); // 也可以自行遍历,精准选择你所需要的bot for (var botManager : botManagers) { // 假设这里你想要寻找QQ机器人的BotManager if (botManager instanceof QQGuildBotManager qgBotManager) { // 找到指定 appid 的bot, // 然后你可以保存、操作,或者做点儿什么。 var bot = qgBotManager.get(Identifies.of(123456789)); // 你已经找到了你需要的bot,结束循环 break; } }

在集成 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官方文档的这些内容:

因此,在Maven中如果想要修复此问题,使用 properties 为属性 kotlin.version 指定一个较高的 Kotlin 版本即可。

<properties> <kotlin.version>2.0.20</kotlin.version> </properties>

如果你的情况与上述不同,可前往 讨论区issues 反馈详情。

QQ机器人组件监听不到群聊消息

首先确保你配置了沙箱群(如果是测试环境),并启动成功无误。

然后,检查你配置中的 config.intents 的值 是否包含群聊相关 的事件的订阅值。

由于群聊相关的事件不是默认的,因此你需要自行添加对其的订阅配置。

你可以在 《QQ机器人 - Bot配置文件 - intents》 中了解到更多。

Last modified: 15 November 2024