A Bot-style event scheduling framework, asynchronous and high-performance
💡核心库 | 应用手册 | 🏠社区
> 走过路过,不要忘记留下闪亮亮的 ⭐ 喔~ <
Simple Robot
是一个基于 KMP 的多平台 Bot 风格高性能异步事件调度框架(下文简称simbot),
提供统一的异步API和易用的风格设计,可以协助你更快速高效的编写 Bot 风格的事件调度应用。
目前主要应用于对接各种类型的 Bot 应用平台/框架,并提供部分组件库实现。
simbot
通过 Kotlin 语言开发、
基于 KMP 支持多平台,
并兼容Java(jdk11+)等JVM平台语言,
且提供大量 Java 友好 API 和 Spring Boot starter,协助你快速开发!
- 🔥基于 Kotlin Multiplatform,支持多平台!
- 🔥得益于Kotlin与挂起特性,简洁、简单、异步、高效!
- 🔥Java友好! 不会Kotlin?没关系,我们为Java开发者提供了阻塞、异步、响应式等多种风格的API!
- 🔥支持SpringBoot,助力你快速整合simbot、高效开发!
- 🔥组件化,不仅易于支持组件间的协同与应用,也使得任意组件库的开发成为可能!
- 🔥不仅仅是API调库侠!simbot提供更完备的实现与更多高级功能。
屏蔽掉你不想知道的细节,让你更加专注于你的逻辑本身!发送消息?send
就完事儿了!
核心库是所有组件的前置、标准API的制定者、也是绝大多数统一功能实现的地方。
组件 | 描述 | 手册 | API文档 | 版本参考 |
---|---|---|---|---|
QQ机器人组件 | 对接QQ官方API的QQ机器人多平台组件库,支持QQ群聊、单聊与QQ频道 | 📕前往手册 | API文档 | |
OneBot组件 | 对接OneBot客户端协议的多平台组件库 | 📕前往手册 | API文档 | |
KOOK(开黑啦)组件 | 对接KOOK官方API的多平台组件库 | 📕前往手册 | API文档 | |
🚧 Telegram组件 | 对接Telegram官方API的多平台组件库 | 📕前往手册 | API文档 | |
🚧 Discord组件 | 对接Discord官方API的多平台组件库 | 📕前往手册 | 暂无 | 暂无 |
⏱️钉钉组件 | 对接钉钉机器人的组件库。 暂无,期待贡献(☆▽☆) |
暂无 | 暂无 | 暂无 |
⏱️飞书组件 | 对接飞书机器人的组件库。 暂无,期待贡献(☆▽☆) |
暂无 | 暂无 | 暂无 |
⏱️订阅号组件 | 对接微信订阅号机器人的组件库。 暂无,期待贡献(☆▽☆) |
暂无 | 暂无 | 暂无 |
前往 应用手册 来了解如何安装、使用,或参考其中的快速开始等章节,并了解更多细节。
我们也提供了一个 在线项目生成器,可以快速生成一个 simbot 的整合项目包, 前往生成或参考 文档中描述 了解更多!
核心库于各式各样的组件库体积庞大,我们很难面面俱到。如果你遇到了任何预期外的问题、错误,或有你想要却不支持的功能,欢迎随时积极地通过 issues 反馈你的问题或建议, 也欢迎通过 讨论区 与我们积极交流、提出问题。 我们也同样会积极地对你的反馈、建议或问题做出回应与交流!
Kotlin & simbot-core
suspend fun main() {
val application = launchSimpleApplication {
findAndInstallAllPlugins(true)
findAndInstallAllComponents(true)
}
application.listeners {
// 事件监听
process<ContactMessageEvent> { event -> // this: EventProcessingContext
event.reply("Hello, Simbot")
}
}
application.join()
}
Java & Spring Boot
@SpringBootApplication
@EnableSimbot // 启用simbot
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
// 可以选择阻塞、异步或响应式等多种不同风格的 Java API
// 前排提醒:这里仅供示例,不建议混用多种风格,尤其是阻塞和异步混用。
/** 事件监听,监听一个通用的标准事件类型 */
@Listener
public void onFriendMessage(ChatChannelMessageEvent event) {
event.replyBlocking("Hello, Simbot!");
}
/**
* 假设:你在使用Telegram组件,那么此处为监听 Telegram 的普通群消息事件
* 并且这里以 reactor API 为例
*/
@Listener
public Mono<Void> onTelegramChatGroupMessage(TelegramChatGroupMessageEvent event) {
return event.replyReserve("Hello, Simbot!").transform(SuspendReserve.mono()).then();
}
/**
* 假设:你在使用KOOK组件,那么此处为监听KOOK的聊天子频道消息事件
* 并且这里以 Java async API 为例
*/
@Listener
public CompletableFuture<?> onKookChannelMessage(KookChannelMessageEvent event) {
return event.replyAsync("Hello, Simbot!");
}
}
Kotlin 构建消息
// 单个消息元素
val text = "你好".toText()
val at = At(123456.ID)
// 组装消息链
val messages = text + at
// 构建消息链
val built = buildMessages {
+"你好"
+at
+Face(666.ID)
}
Java 构建消息
// 单个消息元素
var text = Text.of("你好");
var at = new At(Identifies.of(123456));
// 组装消息链
var messages = Messages.of(text, at);
// 构建消息链
var built = MessagesBuilder.create()
.add("你好")
.add(at)
.add(new Face(Identifies.of(666)))
.build();
Note
针对不同的平台,各组件还可能会提供更多组件专属的消息元素类型,比如QQ频道中的 Ark 或 markdown 等。
👉 展开查看 Discord
Discord: 点击加入Discord
✨除了前往社群,一同建设 社区 是我们最推荐的相互交流的方式。如果你发现了一些问题,也可以通过 Issues 进行反馈。 与他人交流,并留下你的足迹吧!
是一个不仔细看的坏孩子呢。文档的话,在最上面的 官网 就是喔。核心库的API文档(KDoc)也可以在那里面找到。
当然,我们也提供了一个 文档引导站点 供你选择。
你也许可以去 这个B站视频合集 中看看。
你有在使用simbot吗? 通过为你的仓库 添加 simbot
主题 (也就是 GitHub 的仓库tag) 来告诉我们吧!
除了直接使用组件开发应用,simbot也支持使用 Kotlin 开发任意的自定义组件。
我们从 simbot4 开始会持续提供一些用于开发组件库/插件库的模板项目,如果你感兴趣, 在阅读组件开发相关文档之余也可以试试它们喔!
开发模板
Warning
组件开发与应用开发不同,不要搞混喔。
模板项目不一定会更新的很及时,如果你有发现任何描述错误、落后的版本、错误的逻辑,也都欢迎为其提交 issue 或 pr,感谢您的协助!
如果你想要找核心库或者各个组件的 API Doc 或者文档地址的话,也许你可以去 📚 图书馆 看看~
⭐ 为你青睐的仓库贡献一枚star或参与到社区的活跃建设中就是对我们最大的鼓励与帮助!
⭐ 如果你希望参与项目的建设,欢迎通过PR对某一仓库进行贡献!
⭐ 我们的开发团队生产力非常低,因为人手总是不足。如果你也想要参与到我们的团队中来,欢迎通过邮箱、社区、QQ频道 或 QQ群 联系我们~
如果你喜欢 Simple Robot, 那么不妨前往核心库以及你所青睐的组件为它点个可爱的🌟~
你的支持就是最优质的更新动力,非常感谢❤️
powered by Star History