Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/misakatat/shiro
基于OneBot协议的QQ机器人快速开发框架
https://github.com/misakatat/shiro
chatbot cqhttp go-cqhttp java kotlin mirai-bot mirai-http-api onebot onebot-sdk qq qq-guild qqbot qqrobot springboot
Last synced: about 11 hours ago
JSON representation
基于OneBot协议的QQ机器人快速开发框架
- Host: GitHub
- URL: https://github.com/misakatat/shiro
- Owner: MisakaTAT
- License: agpl-3.0
- Created: 2021-08-26T07:28:08.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-12T04:20:37.000Z (3 days ago)
- Last Synced: 2024-11-12T05:21:02.044Z (3 days ago)
- Topics: chatbot, cqhttp, go-cqhttp, java, kotlin, mirai-bot, mirai-http-api, onebot, onebot-sdk, qq, qq-guild, qqbot, qqrobot, springboot
- Language: Java
- Homepage:
- Size: 777 KB
- Stars: 239
- Watchers: 6
- Forks: 30
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Shiro
_✨ 基于 [OneBot](https://github.com/howmanybots/onebot/blob/master/README.md) 协议的 QQ机器人 快速开发框架 ✨_
[![Repobeats analytics image](https://repobeats.axiom.co/api/embed/c0b4ba71b13fe79015de15fb9396651f97f3acf9.svg "Repobeats analytics image")](https://github.com/MisakaTAT/Shiro/pulse)
# Migration Guide
> 从 `v2` 版本开始仅支持 `JDK 17+` 与 `SpringBoot 3.0.0+`
>
>详见项目文档 [v2迁移指南](https://misakatat.github.io/shiro-docs/migration.html)# QuickStart
## 依赖引入
> 引入依赖时请替换版本 `latest` 为 `Maven Central` 实际的最新版本
### Maven
```xml
com.mikuac
shiro
latest```
### Gradle Kotlin DSL
```kotlin
implementation("com.mikuac:shiro:latest")
```### Gradle Groovy DSL
```groovy
implementation 'com.mikuac:shiro:latest'
```## 示例插件
### 注解调用
> 编写 `application.yaml` 配置文件
> 或参考 [进阶配置文件](https://misakatat.github.io/shiro-docs/advanced.html#进阶配置文件)```yaml
server:
port: 5000
``````java
@Shiro
@Component
public class ExamplePlugin {
// 更多用法详见 @MessageHandlerFilter 注解源码// 当机器人收到的私聊消息消息符合 cmd 值 "hi" 时,这个方法会被调用。
@PrivateMessageHandler
@MessageHandlerFilter(cmd = "hi")
public void fun1(Bot bot, PrivateMessageEvent event, Matcher matcher) {
// 构建消息
String sendMsg = MsgUtils.builder().face(66).text("Hello, this is shiro demo.").build();
// 发送私聊消息
bot.sendPrivateMsg(event.getUserId(), sendMsg, false);
}// 如果 at 参数设定为 AtEnum.NEED 则只有 at 了机器人的消息会被响应
@GroupMessageHandler
@MessageHandlerFilter(at = AtEnum.NEED)
public void fun2(GroupMessageEvent event) {
// 以注解方式调用可以根据自己的需要来为方法设定参数
// 例如群组消息可以传递 GroupMessageEvent, Bot, Matcher 多余的参数会被设定为 null
System.out.println(event.getMessage());
}// 同时监听群组及私聊消息 并根据消息类型(私聊,群聊)回复
@AnyMessageHandler
@MessageHandlerFilter(cmd = "say hello")
public void fun3(Bot bot, AnyMessageEvent event) {
bot.sendMsg(event, "hello", false);
}
}
```### 重写父类方法
- 注解方式编写的插件无需在插件列表 `plugin-list`定义
- 服务端配置文件 `resources/application.yaml` 追加如下内容
- 插件列表为顺序执行,如果前一个插件返回了 `MESSAGE_BLOCK` 将不会执行后续插件> 编写 `application.yaml` 配置文件
> 或参考 [进阶配置文件](https://misakatat.github.io/shiro-docs/advanced.html#进阶配置文件)```yaml
server:
port: 5000
shiro:
plugin-list:
- com.example.bot.plugins.ExamplePlugin
``````java
@Component
public class ExamplePlugin extends BotPlugin {@Override
public int onPrivateMessage(Bot bot, PrivateMessageEvent event) {
if ("hi".equals(event.getMessage())) {
// 构建消息
String sendMsg = MsgUtils.builder()
.face(66)
.text("hello, this is shiro example plugin.")
.build();
// 发送私聊消息
bot.sendPrivateMsg(event.getUserId(), sendMsg, false);
}
// 返回 MESSAGE_IGNORE 执行 plugin-list 下一个插件,返回 MESSAGE_BLOCK 则不执行下一个插件
return MESSAGE_IGNORE;
}@Override
public int onGroupMessage(Bot bot, GroupMessageEvent event) {
if ("hi".equals(event.getMessage())) {
// 构建消息
String sendMsg = MsgUtils.builder()
.at(event.getUserId())
.face(66)
.text("hello, this is shiro example plugin.")
.build();
// 发送群消息
bot.sendGroupMsg(event.getGroupId(), sendMsg, false);
}
// 返回 MESSAGE_IGNORE 执行 plugin-list 下一个插件,返回 MESSAGE_BLOCK 则不执行下一个插件
return MESSAGE_IGNORE;
}}
```# Client
Shiro 以 [OneBot-v11](https://github.com/howmanybots/onebot/tree/master/v11/specs)
标准协议进行开发,兼容所有支持反向WebSocket的OneBot协议客户端| 项目 | 描述 | 备注 |
| ----------------------------------------------------------- | ------------------------------------------------- | -------- |
| [LLOneBot](https://github.com/LLOneBot/LLOneBot) | 使你的 NTQQ 支持 OneBot11 协议进行 QQ 机器人开发 | |
| [Lagrange.Core](https://github.com/KonataDev/Lagrange.Core) | NTQQ 的协议实现 | |
| [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) | 基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现 | 停止维护 |
| [OpenShamrock](https://github.com/whitechi73/OpenShamrock) | 基于 Xposed 实现 OneBot 标准的机器人框架 | |# Contributors
See [Contributing](https://github.com/MisakaTAT/Shiro/graphs/contributors) for details. Thanks to all the people who already contributed![![contributors](https://stg.contrib.rocks/image?repo=MisakaTAT/Shiro)](https://github.com/MisakaTAT/Shiro/graphs/contributors)
# Credits
* [OneBot](https://github.com/botuniverse/onebot)
* [pbbot-spring-boot-starter](https://github.com/ProtobufBot/pbbot-spring-boot-starter)# License
This product is licensed under the GNU General Public License version 3. The license is as published by the Free
Software Foundation published at https://www.gnu.org/licenses/gpl-3.0.html.Alternatively, this product is licensed under the GNU Lesser General Public License version 3 for non-commercial use.
The license is as published by the Free Software Foundation published at https://www.gnu.org/licenses/lgpl-3.0.html.Feel free to contact us if you have any questions about licensing or want to use the library in a commercial closed
source product.# Thanks
[JetBrains](https://www.jetbrains.com/?from=Shiro) offers free licenses to support open source projects.
[](https://www.jetbrains.com/?from=shiro)
# Stargazers over time
[![Stargazers over time](https://starchart.cc/MisakaTAT/Shiro.svg)](https://starchart.cc/MisakaTAT/Shiro)