https://github.com/nonebot/adapter-kritor
NoneBot2 Kritor 协议适配器 / Kritor Protocol adapter for nonebot2
https://github.com/nonebot/adapter-kritor
Last synced: 11 months ago
JSON representation
NoneBot2 Kritor 协议适配器 / Kritor Protocol adapter for nonebot2
- Host: GitHub
- URL: https://github.com/nonebot/adapter-kritor
- Owner: nonebot
- License: mit
- Created: 2024-03-27T06:03:41.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-05T06:57:25.000Z (over 1 year ago)
- Last Synced: 2025-04-11T05:23:21.159Z (11 months ago)
- Language: Python
- Size: 353 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NoneBot-Adapter-Kritor
_✨ NoneBot2 Kritor Protocol适配器 / Kritor Protocol Adapter for NoneBot2 ✨_
> [!NOTE]
> Kritor 项目目前处于开发阶段, 所定义的 proto api 可能会有较大变动
>
> 若出现异常情况请确定本仓库使用的 kritor api 与所对接的协议端使用的 kritor api 是否相同
## 协议介绍
[Kritor Protocol](https://github.com/KarinJS/kritor)
### 协议端
目前提供了 `kritor` 协议实现的有:
- [Lagrange.Kritor](https://github.com/LagrangeDev/Lagrange.Kritor)
- Shamrock
## 配置
修改 NoneBot 配置文件 `.env` 或者 `.env.*`。
### Driver
因本适配器基于 `gRPC`,Nonebot 没有现有的相关驱动器,所以驱动请直接写 `none`:
```dotenv
DRIVER=~none
```
### KRITOR_CLIENTS
配置机器人帐号,如:
```dotenv
KRITOR_CLIENTS='
[
{
"host": "xxx",
"port": xxx,
"account": "xxx",
"ticket": "xxx"
}
]
'
KRITOR_SKIP_AUTH=false
```
其中,
- `host`: 服务端的地址,默认为 localhost
- `port`: 服务端的端口
- `account`: bot 登录的账号
- `ticket`: bot 登录用的凭证/密码
- `KRITOR_SKIP_AUTH`: 若协议端未启用鉴权功能,则启用此配置项。此时 `ticket` 留空即可。
### 以对接 Lagrange.Kritor 为例
首先按照 [Lagrange.Kritor](https://github.com/LagrangeDev/Lagrange.Kritor) 的 README 进行配置。进行下一步前你应当已经创建好了 `appsettings.json`:
```json5
// appsettings.json
{
"Logging": {
"LogLevel": {
// Log level, please modify to `Trace` when providing feedback on issues
"Default": "Information"
}
},
"Core": {
"Protocol": {
// Protocol platform, please modify according to the Signer version
// Type: String ("Windows", "MacOs", "Linux")
// Default: "Linux"
"Platform": "Linux",
"Signer": {
// Signer server url
// Type: String (HTTP URL, HTTPS URL)
"Url": "",
// Signer server proxy
// Type: String (HTTP URL)
"Proxy": ""
}
},
"Server": {
// Whether to automatically reconnect to the TX server
// Type: bool
// Default: false
"AutoReconnect": true,
// Whether to get optimum server
// Type: bool
// Default: false
"GetOptimumServer": true
}
},
"Kritor": {
"Network": {
// Address of the Kritor service binding
// Type: String (ip)
"Address": "0.0.0.0",
// Port of the Kritor service binding
// Type: Number ([1-65535])
"Port": 9000
},
"Authentication": {
// Whether to enable authentication
// Type: bool
"Enabled": false,
// Ticket with maximum privileges
// Type: String
"SuperTicket": "",
// Ticket list
// Type: String[]
"Tickets": []
},
"Message": {
// Whether to ignore your own messages
// Type: bool
"IgnoreSelf": false
}
}
}
```
对于配置项:
- `host` 与 `Kritor.Network.Address` 一致
- `port` 与 `Kritor.Network.Port` 一致
- 若 `Kritor.Authentication.Enabled` 为 true, 则 `ticket` 应存在于 `.SuperTicket` 或 `.Tickets` 中
- `account` 为你登录的账号
## 克隆
因为该仓库包含一个 submodule, 请使用以下命令克隆本仓库:
```bash
git clone --recursive https://github.com/nonebot/adapter-kritor.git
```
## 示例
```python
from nonebot import on_command
from nonebot.adapters.kritor import Bot
from nonebot.adapters.kritor.message import MessageSegment
from nonebot.adapters.kritor.permission import PRIVATE
matcher = on_command("test", permission=PRIVATE)
@matcher.handle()
async def handle_receive(bot: Bot):
await bot.send(event, MessageSegment.text("Hello, world!"))
```