https://github.com/nonebot/adapter-satori
NoneBot2 Satori 适配器 / Satori Protocol adapter for nonebot2
https://github.com/nonebot/adapter-satori
Last synced: 11 months ago
JSON representation
NoneBot2 Satori 适配器 / Satori Protocol adapter for nonebot2
- Host: GitHub
- URL: https://github.com/nonebot/adapter-satori
- Owner: nonebot
- License: mit
- Created: 2023-10-07T15:06:22.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-16T11:11:49.000Z (over 1 year ago)
- Last Synced: 2024-10-29T23:44:19.129Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 240 KB
- Stars: 85
- Watchers: 2
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NoneBot-Adapter-Satori
_✨ NoneBot2 Satori Protocol适配器 / Satori Protocol Adapter for NoneBot2 ✨_
## 协议介绍
[Satori Protocol](https://satori.js.org/zh-CN/)
### 协议端
目前提供了 `satori` 协议实现的有:
- [Chronocat](https://chronocat.vercel.app)
- [nekobox](https://github.com/wyapx/nekobox)
- Koishi (搭配 `@koishijs/plugin-server`, 其余内容请自行阅读 koishi 文档)
## 配置
修改 NoneBot 配置文件 `.env` 或者 `.env.*`。
### Driver
参考 [driver](https://nonebot.dev/docs/appendices/config#driver) 配置项,添加 `HTTPClient` 和 `WebSocketClient` 支持。
如:
```dotenv
DRIVER=~httpx+~websockets
```
或
```dotenv
DRIVER=~aiohttp
```
### SATORI_CLIENTS
配置连接配置,如:
```dotenv
SATORI_CLIENTS='
[
{
"host": "localhost",
"port": "5500",
"path": "",
"token": "xxx"
}
]
'
```
`host` 与 `port` 为 Satori 服务端的监听地址与端口,
`path` 为 Satori 服务端自定义的监听路径,如 `"/satori"`,默认为 `""`
`token` 由 Satori 服务端决定是否需要 (例如,对接 Chronocat 就需要此项)。
### 以对接 Chronocat 为例
你需要从 Chronocat 的配置文件 `~/.chronocat/config/chronocat.yml` 中获取 `port`、`token`、`host`。
在单账号下,
- `host` 与配置文件下的 `servers[X].listen` 一致
- `port` 与配置文件下的 `servers[X].port` 一致
- `token` 与配置文件下的 `servers[X].token` 一致
```yaml
# ~/.chronocat/config/chronocat.yml
servers:
- type: satori
# Chronocat 已经自动生成了随机 token。要妥善保存哦!
# 客户端使用服务时需要提供这个 token!
token: DEFINE_CHRONO_TOKEN # token
# Chronocat 开启 satori 服务的端口,默认为 5500。
port: 5500 # port
# 服务器监听的地址。 如果你不知道这是什么,那么不填此项即可!
listen: localhost # host
```
而多账号下,
- `host` 与配置文件下下的 `overrides[QQ].servers[X].listen` 一致
- `port` 与配置文件下下的 `overrides[QQ].servers[X].port` 一致,并且一个 `QQ` 只能对应一个 `port`
- `token` 与配置文件下下的 `overrides[QQ].servers[X].token` 一致
```yaml
# ~/.chronocat/config/chronocat.yml
overrides:
1234567890:
servers:
- type: satori
# Chronocat 已经自动生成了随机 token。要妥善保存哦!
# 客户端使用服务时需要提供这个 token!
token: DEFINE_CHRONO_TOKEN # token
# Chronocat 开启 satori 服务的端口,默认为 5500。
port: 5501 # port
# 服务器监听的地址。 如果你不知道这是什么,那么不填此项即可!
listen: localhost
```
配置文件详细内容请参考 [Chronocat/config](https://chronocat.vercel.app/guide/config/)。
### 以对接 nekobox 为例
你可以通过 `nekobox show` 命令来获取当前的配置信息。
```shell
$ nekobox show xxxxxx
SignUrl: xxxxxxxxxxxxx
协议类型: linux
验证 token: *************
服务器绑定地址: 127.0.0.1
服务器绑定端口: 7788
服务器部署路径: neko
默认日志等级: INFO
```
此时
- `host` 与 `服务器绑定地址` 一致
- `port` 与 `服务器绑定端口` 一致
- `path` 与 `服务器部署路径` 一致
- `token` 与 `验证 token` 一致
## 示例
```python
from nonebot import on_command
from nonebot.adapters.satori import Bot
from nonebot.adapters.satori.event import MessageEvent
from nonebot.adapters.satori.message import MessageSegment
matcher = on_command("test")
@matcher.handle()
async def handle_receive(bot: Bot, event: MessageEvent):
if event.is_private:
await bot.send(event, MessageSegment.text("Hello, world!"))
```