简介
这是一个通用机器人开发框架,是simple-robot(下文简称simbot
)的2.x版本。
simbot
是一个JVM平台的通用机器人开发框架,基于simbot核心API并对接开发不同平台的机器人应用,你可以使用相同的代码风格来开发不同平台的机器人。
simbot
在发展过程中,很多功能的使用灵感来自于springboot,例如基础依赖注入与注解监听,并且对于一些主要组件专门提供了springboot-starter模块以方便开发者快速整合springboot(当然,如果可以,我依旧更希望你使用原生simbot环境)。
simbot
提供了丰富的api接口与各种模块以支持机器人开发者与组件开发者使用,对于机器人开发者,你可以通过功能丰富的注解来实现各种较为复杂的事件匹配逻辑。对于组件开发者,你拥有很高的可选择性与灵活性来针对一个平台进行对接。
以及更多高级特性等待你的发现...
旧版本考古 -> simple-robot 1.x
支持平台
目前支持的机器人平台:
计划中准备支持的平台:
- QQ
- onebot(QQ机器人通用协议)
- TG
- discord
- 钉钉
- 企业内建应用事件
- 企业内建群BOT
文档
simpler-robot文档:https://www.yuque.com/simpler-robot/simpler-robot-doc
Demo
各个组件的Demo项目正在逐步建设。 目前已经存在的Demo:
新特性
既然是相对于1.x版本的新版本,那么必然会有更优异的特性。
- 更明确的实例定义。不再将较为混乱的各种方法堆在事件中,而是使用容器将他们整齐归类。
- 更好的消息构建。提供更多的消息发送方式来适应各种场景下的消息发送效率。
- 更高的效率。知识是需要沉淀的。每一次的版本更新都会比以往更多的考虑效率问题。
- 更好的日志。日志整合
slf4j
api,可以无缝兼容其他任意slf4j
下的日志框架。 - 更灵活的开发。降低核心、组件之间的强耦合,更多的借助IOC模块实现更灵活的开发与拓展。
- 更灵活的配置。支持
properties
、yaml
类型配置的解析,同时也支持指定特定启动参数、通过网络获取在线配置文件等多种方式。 - 更灵活的事件监听。优化核心注解
@Listen
的使用。 - 更灵活的事件过滤。优化核心注解
@Filter
的使用。 - 分工更明确的模块。核心、组件、序列化、http客户端、定时任务...各司其职,并提供丰富的实现模块来减少你的项目冗余依赖量。
- 更好的问题反馈。所有的官方模块都会汇总于此。开启一个 issue 来反馈问题的效率远远高于在群里茫然的提问。
- 以及更多...
其他模块
simpler-robot所独立的公共模块项目:
simpler-robot所使用的特殊码CatCode:
极简示例
文档-快速开始:https://www.yuque.com/simpler-robot/simpler-robot-doc/qeyorq
监听消息
@Beans
public class TestListener {
/** 发送一句“我收到了”,并再复读收到的所有消息 */
@OnPrivate
public void listen(PrivateMsg msg, MsgSender sender) {
sender.SENDER.sendPrivateMsg(msg, "我收到了");
sender.SENDER.sendPrivateMsg(msg, msg.getMsgContent());
}
}
监听并筛选消息
@Beans
public class TestListener {
/** 监听群里的 'hi! simbot' 消息并作出回应 */
@OnGroup
@Filter("hi! simbot")
public void listenGroup(GroupMsg msg, MsgSender sender) {
// 获取发消息的人的账号
String accountCode = m.getAccountInfo().getAccountCode();
// 准备at这个人的CatCode
String at = CatCodeUtil.INSTANCE.getStringTemplate().at(accountCode);
// 发送消息
sender.SENDER.sendGroupMsg(m, at + " 我在哦");
}
}
或
@Beans
public class TestListener {
/** 通过依赖注入得到消息构建器工厂。 */
@Depend
private MessageContentBuilderFactory builderFactory;
/** 监听群里的 'hi! simbot' 消息并作出回应 */
@OnGroup
@Filter("hi! simbot")
public void listenGroup(GroupMsg msg, MsgSender sender){
// 获取发消息的人的账号
String accountCode = msg.getAccountInfo().getAccountCode();
// 获取消息构建器
MessageContentBuilder builder = builderFactory.getMessageContentBuilder();
// 构建消息实例
MessageContent msgContent = builder.at(accountCode).text(" 我在哦").build();
// 发送消息
sender.SENDER.sendGroupMsg(msg, msgContent);
}
}
协助我
- 你可以通过 pr 为项目代码作出贡献。
- 你可以通过 issue 提出一个建议或者反馈一个问题。
- 你可以通过 讨论区 与其他人或者simbot开发团队相互友好交流。
- 如果你通过此项目创建了一个很酷的项目,欢迎通过 issue 、讨论区 、QQ群寻找群主 等方式联系团队开发人员,并将你酷酷的项目展示在作品展示区。
捐助我
如果你喜欢这个项目,不妨试着 捐助 一下我们,十分感谢。
特别鸣谢
感谢 jetbrains 为团队提供的免费 IntelliJ IDEA 授权,也希望大家能够支持IDEA,支持正版。
感谢 猫猫码 为本项目提供支持并绘制项目LOGO。