Simple Robot | QQ频道 v4.0.0-beta5 Help

使用 SpringBoot

通过core模块配合 simbot starterSpring Boot 中轻松使用。

前提准备

首先你应当准备至少一个可用的 QQ频道机器人

项目构建

首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。

然后再额外添加我们需要的依赖:

// simbot core starter implementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:3.3.0") // 版本请参考下文的参考链接 // QQ频道组件 implementation("love.forte.simbot.component:simbot-component-qq-guild-core:3.2.0.0") // 或参考下文的参考链接
// simbot core starter implementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:3.3.0' // 版本请参考下文的参考链接 // QQ频道组件 implementation 'love.forte.simbot.component:simbot-component-qq-guild-core:3.2.0.0' // 或参考下文的参考链接
<!-- simbot core starter --> <dependency> <groupId>love.forte.simbot.boot</groupId> <artifactId>simboot-core-spring-boot-starter</artifactId> <version>\${SIMBOT_VERSION}</version><!-- 版本请参考下文的参考链接 --> </dependency> <!-- QQ频道组件 --> <dependency> <groupId>love.forte.simbot.component</groupId> <artifactId>simbot-component-qq-guild-core</artifactId> <version>3.2.0.0</version><!-- 或参考下文的参考链接 --> </dependency>

BOT配置

接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot.bot.json) , 而配置文件的内容则参考章节 BOT配置文件

${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json

启动类

像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot

@EnableSimbot @SpringBootApplication class App fun main(vararg args: String) { runApplication<App>(args = args) }
@EnableSimbot @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }

监听事件

接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。

此处我们监听 ChannelMessageEvent ,也就是 子频道的消息事件

假设:要求bot必须被AT ,并且说一句 你好 ,此时bot会引用用户发送的消息并回复 你也好! ,类似于:

用户: @BOT 你好 BOT: > 用户: @BOT 你好 你也好!
import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component class ExampleListener { @Listener @Filter(value = "你好", targets = Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 event.reply("你也好!") } }
import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = "你好", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public void onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // Java中的阻塞式API event.replyBlocking("你也好!"); } }
import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = "你好", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public CompletableFuture<?> onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 CompletableFuture 作为返回值,simbot会以非阻塞的形式处理它 return event.replyAsync("你也好!"); } }
import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = "你好", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public Mono<?> onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它 return Mono.fromCompletionStage(event.replyAsync("你也好!")); } }

启动

接下来,启动程序并在你的沙箱频道中@它试试看吧。

当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、 社区 提出疑问。

Last modified: 15 July 2024