mirror of
https://github.com/TriM-Organization/LiteyukiBot-TriM.git
synced 2024-11-25 00:25:04 +08:00
feat: 对nb-cli的支持
This commit is contained in:
parent
6a4c88a6ba
commit
e2779bdfd7
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,6 +18,7 @@ compile.bat
|
|||||||
liteyuki/resources/templates/latest-debug.html
|
liteyuki/resources/templates/latest-debug.html
|
||||||
# vuepress
|
# vuepress
|
||||||
.github
|
.github
|
||||||
|
pyproject.toml
|
||||||
|
|
||||||
# nuitka
|
# nuitka
|
||||||
main.build/
|
main.build/
|
||||||
|
@ -46,7 +46,7 @@ export default hopeTheme({
|
|||||||
|
|
||||||
// 在这里配置主题提供的插件
|
// 在这里配置主题提供的插件
|
||||||
plugins: {
|
plugins: {
|
||||||
searchPro: true,
|
search: true,
|
||||||
// search: true,
|
// search: true,
|
||||||
comment: {
|
comment: {
|
||||||
provider: "Giscus",
|
provider: "Giscus",
|
||||||
|
@ -11,7 +11,7 @@ heroText: LiteyukiBot
|
|||||||
tagline: 轻雪机器人,一个以轻量和简洁为设计理念基于Nonebot2的OneBot标准聊天机器人
|
tagline: 轻雪机器人,一个以轻量和简洁为设计理念基于Nonebot2的OneBot标准聊天机器人
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
- text: 快速开始
|
- text: 快速部署
|
||||||
icon: lightbulb
|
icon: lightbulb
|
||||||
link: ./deployment/install.html
|
link: ./deployment/install.html
|
||||||
type: primary
|
type: primary
|
||||||
|
@ -8,19 +8,22 @@ tag:
|
|||||||
- 部署
|
- 部署
|
||||||
---
|
---
|
||||||
|
|
||||||
### 轻雪配置项(Nonebot插件配置项也可以写在此,与dotenv格式不同,应为小写)
|
首次运行后生成`config.yml`,你可以修改配置项后重启轻雪,绝大多数情况下,你只需要修改`superusers`和`nickname`字段即可
|
||||||
|
|
||||||
配置文件会在首次启动后生成,你可以在`config.yml`中修改配置项后重启轻雪,绝大多数情况下,你只需要修改`superusers`和`nickname`。如果不确定字段的含义,请不要修改(部分在自动生成配置文件中未列出,需手动添加)
|
## **基础配置项**
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# 生成文件的配置项
|
|
||||||
command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
|
command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
|
||||||
host: 127.0.0.1 # 监听地址,默认为本机,若要对外开放请填写0.0.0.0或者你的公网IP
|
host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
|
||||||
port: 20216 # 绑定端口
|
port: 20216 # 绑定端口
|
||||||
nickname: [ "liteyuki" ] # 机器人昵称
|
nickname: [ "liteyuki" ] # 机器人昵称列表
|
||||||
superusers: [ "1919810" ] # 超级用户
|
superusers: [ "1919810" ] # 超级用户列表
|
||||||
|
```
|
||||||
|
|
||||||
# 未列出的配置项(如要自定义请手动修改)
|
## **其他配置**
|
||||||
|
以下为默认值,如需自定义请手动添加
|
||||||
|
|
||||||
|
```yaml
|
||||||
onebot_access_token: "" # 访问令牌,对公开放时建议设置
|
onebot_access_token: "" # 访问令牌,对公开放时建议设置
|
||||||
default_language: "zh-CN" # 默认语言
|
default_language: "zh-CN" # 默认语言
|
||||||
log_level: "INFO" # 日志等级
|
log_level: "INFO" # 日志等级
|
||||||
@ -44,19 +47,21 @@ custom_config_2: "custom_value2"
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
### Onebot实现端配置
|
> [!tip]
|
||||||
|
> 如果要使用dotenv配置文件,请自行创建`.env.{ENVIRONMENT}`,并在`config.yml`中添加`environment:{ENVIRONMENT}`字段
|
||||||
|
|
||||||
|
## **OneBot实现端配置**
|
||||||
|
|
||||||
|
生产环境中推荐反向WebSocket
|
||||||
不同的实现端给出的字段可能不同,但是基本上都是一样的,这里给出一个参考值
|
不同的实现端给出的字段可能不同,但是基本上都是一样的,这里给出一个参考值
|
||||||
|
|
||||||
| 字段 | 参考值 | 说明 |
|
| 字段 | 参考值 | 说明 |
|
||||||
|-------------|---------------------------|----------------------------------|
|
|-------------|------------------------------------|----------------------------------|
|
||||||
| 协议 | 反向WebSocket | 推荐使用反向ws协议进行通信,即轻雪作为服务端 |
|
| 协议 | 反向WebSocket | 推荐使用反向ws协议进行通信,即轻雪作为服务端 |
|
||||||
| 地址 | ws://`address`/onebot/v11/ws | 地址取决于配置文件,本机默认为`127.0.0.1:20216` |
|
| 地址 | ws://127.0.0.1:20216/onebot/v11/ws | 地址取决于配置文件,本机默认为`127.0.0.1:20216` |
|
||||||
| AccessToken | `""` | 如果你给轻雪配置了`AccessToken`,请在此填写相同的值 |
|
| AccessToken | `""` | 如果你给轻雪配置了`AccessToken`,请在此填写相同的值 |
|
||||||
|
|
||||||
### 其他通信方式
|
## **其他**
|
||||||
|
|
||||||
- 实现端与轻雪的通信方式不局限为反向WebSocket,但是推荐使用反向WebSocket。
|
- 要使用其他通信方式请访问[OneBot Adapter](https://onebot.adapters.nonebot.dev/)获取详细信息
|
||||||
- 反向WebSocket的优点是轻雪作为服务端,可以更好的控制连接,适用于生产环境。
|
- 轻雪不局限于OneBot适配器,你可以使用NoneBot2支持的任何适配器
|
||||||
- 在某些情况下,你也可以使用正向WebSocket,比如你在开发轻雪插件时,可以使用正向WebSocket主动连接实现端
|
|
||||||
- 有更多疑问请访问[OneBot Adapter](https://onebot.adapters.nonebot.dev/)获取详细信息
|
|
||||||
|
@ -8,7 +8,7 @@ tag:
|
|||||||
- 部署
|
- 部署
|
||||||
---
|
---
|
||||||
|
|
||||||
### 常见问题
|
## **常见问题**
|
||||||
|
|
||||||
- 设备上Python环境太乱了,pip和python不对应怎么办?
|
- 设备上Python环境太乱了,pip和python不对应怎么办?
|
||||||
- 请使用`/path/to/python -m pip install -r requirements.txt`来安装依赖,
|
- 请使用`/path/to/python -m pip install -r requirements.txt`来安装依赖,
|
||||||
@ -31,7 +31,7 @@ tag:
|
|||||||
- 其他问题
|
- 其他问题
|
||||||
- 加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
|
- 加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
|
||||||
|
|
||||||
#### 推荐方案(QQ)
|
## **推荐方案(QQ)**
|
||||||
|
|
||||||
1. [Lagrange.OneBot](https://github.com/KonataDev/Lagrange.Core),基于NTQQ的OneBot实现,目前Markdown消息支持Lagrange
|
1. [Lagrange.OneBot](https://github.com/KonataDev/Lagrange.Core),基于NTQQ的OneBot实现,目前Markdown消息支持Lagrange
|
||||||
2. [LLOneBot](https://github.com/LLOneBot/LLOneBot),NTQQ的OneBot插件,需要安装NTQQ
|
2. [LLOneBot](https://github.com/LLOneBot/LLOneBot),NTQQ的OneBot插件,需要安装NTQQ
|
||||||
@ -41,13 +41,13 @@ tag:
|
|||||||
6. [Gensokyo](https://github.com/Hoshinonyaruko/Gensokyo),基于 OneBot QQ官方机器人Api Golang 原生实现,需要官方机器人权限
|
6. [Gensokyo](https://github.com/Hoshinonyaruko/Gensokyo),基于 OneBot QQ官方机器人Api Golang 原生实现,需要官方机器人权限
|
||||||
7. 人工实现的`Onebot`协议,自己整一个WebSocket客户端,看着QQ的消息,然后给轻雪传输数据
|
7. 人工实现的`Onebot`协议,自己整一个WebSocket客户端,看着QQ的消息,然后给轻雪传输数据
|
||||||
|
|
||||||
#### 推荐方案(Minecraft)
|
## **推荐方案(Minecraft)**
|
||||||
|
|
||||||
1. [MinecraftOneBot](https://github.com/snowykami/MinecraftOnebot),我们专门为Minecraft开发的服务器Bot,支持OneBotV11标准
|
1. [MinecraftOneBot](https://github.com/snowykami/MinecraftOnebot),我们专门为Minecraft开发的服务器Bot,支持OneBotV11标准
|
||||||
|
|
||||||
使用其他项目连接请先自行查阅文档,若有困难请联系对应开发者而不是Liteyuki的开发者
|
使用其他项目连接请先自行查阅文档,若有困难请联系对应开发者而不是Liteyuki的开发者
|
||||||
|
|
||||||
### 鸣谢
|
## **鸣谢**
|
||||||
|
|
||||||
- [Nonebot2](https://nonebot.dev)提供的框架支持
|
- [Nonebot2](https://nonebot.dev)提供的框架支持
|
||||||
- [nonebot-plugin-htmlrender](https://github.com/kexue-z/nonebot-plugin-htmlrender/tree/master)提供的渲染功能
|
- [nonebot-plugin-htmlrender](https://github.com/kexue-z/nonebot-plugin-htmlrender/tree/master)提供的渲染功能
|
||||||
|
@ -7,30 +7,31 @@ tag:
|
|||||||
- 安装
|
- 安装
|
||||||
---
|
---
|
||||||
|
|
||||||
### 设备要求
|
|
||||||
|
|
||||||
|
## **开始安装**
|
||||||
|
1. 安装 [`Git`](https://git-scm.com/download/) 和 [`Python3.10+`](https://www.python.org/downloads/release/python-31010/) 环境
|
||||||
|
2. 克隆项目 `git clone https://github.com/snowykami/LiteyukiBot`
|
||||||
|
3. 进入轻雪目录 `cd LiteyukiBot`
|
||||||
|
4. 安装依赖 `pip install -r requirements.txt`
|
||||||
|
5. 启动 `python main.py`
|
||||||
|
|
||||||
|
## **设备要求**
|
||||||
- Windows系统版本最低`Windows10+`/`Windows Server 2019+`
|
- Windows系统版本最低`Windows10+`/`Windows Server 2019+`
|
||||||
- Linux系统要支持Python3.10+,推荐`Ubuntu 20.04+`(~~别用你那b CentOS~~)
|
- Linux系统要支持Python3.10+,推荐`Ubuntu 20.04+`(~~别用你那b CentOS~~)
|
||||||
- CPU: 至少`1vCPU`
|
- CPU: 至少`1vCPU`
|
||||||
- 内存: Bot无其他插件会占用`200~300MB`,其他插件占用视具体插件而定,建议`1GB`以上
|
- 内存: Bot无其他插件会占用`200~300MB`,其他插件占用视具体插件而定,建议`1GB`以上
|
||||||
- 硬盘: 至少`1GB`空间
|
- 硬盘: 至少`1GB`空间
|
||||||
|
|
||||||
### 开始安装
|
|
||||||
1. 安装 `Git` 和 `Python3.10+` 环境
|
|
||||||
2. 克隆项目 `git clone https://github.com/snowykami/LiteyukiBot`
|
|
||||||
3. 切换目录`cd LiteyukiBot`
|
|
||||||
4. 安装依赖`pip install -r requirements.txt`
|
|
||||||
5. 启动`python main.py`
|
|
||||||
|
|
||||||
> [!warning]
|
> [!warning]
|
||||||
> 请确保你的Python环境正确,如果设备上有多个环境,请使用`path/to/python -m pip install -r requirements.txt`来安装依赖,`path/to/python`为你的Python可执行文件路径
|
> 如果设备上有多个环境,请使用`path/to/python -m pip install -r requirements.txt`来安装依赖,`path/to/python`为你的Python可执行文件路径
|
||||||
|
|
||||||
> [!tip]
|
> [!tip]
|
||||||
> 推荐使用虚拟环境来运行轻雪,以避免依赖冲突,你可以使用`python -m venv venv`来创建虚拟环境,然后使用`venv\Scripts\activate`来激活虚拟环境
|
> 推荐使用虚拟环境来运行轻雪,以避免依赖冲突,你可以使用`python -m venv venv`来创建虚拟环境,然后使用`venv\Scripts\activate`来激活虚拟环境
|
||||||
|
|
||||||
> [!warning]
|
> [!warning]
|
||||||
> 轻雪的更新功能依赖Git,如果你没有安装Git,你将无法使用更新功能
|
> 轻雪的更新功能依赖Git,如果你没有安装Git,你将无法使用更新功能
|
||||||
>
|
|
||||||
|
|
||||||
#### 其他问题请移步至[答疑](/deployment/fandq)
|
#### 其他问题请移步至[答疑](/deployment/fandq)
|
||||||
|
|
||||||
#### 想在Linux命令行中拥有更好的体验?试试[TRSS_Liteyuki轻雪机器人管理脚本](https://timerainstarsky.github.io/TRSS_Liteyuki/),该功能仅供参考,不是LiteyukiBot官方提供的功能
|
[//]: # (#### 想在Linux命令行中拥有更好的体验?试试[TRSS_Liteyuki轻雪机器人管理脚本](https://timerainstarsky.github.io/TRSS_Liteyuki/),该功能仅供参考,不是LiteyukiBot官方提供的功能)
|
||||||
|
@ -6,7 +6,7 @@ from .runtime import *
|
|||||||
|
|
||||||
__author__ = "snowykami"
|
__author__ = "snowykami"
|
||||||
__plugin_meta__ = PluginMetadata(
|
__plugin_meta__ = PluginMetadata(
|
||||||
name="轻雪主程序",
|
name="轻雪核心插件",
|
||||||
description="轻雪主程序插件,包含了许多初始化的功能",
|
description="轻雪主程序插件,包含了许多初始化的功能",
|
||||||
usage="",
|
usage="",
|
||||||
homepage="https://github.com/snowykami/LiteyukiBot",
|
homepage="https://github.com/snowykami/LiteyukiBot",
|
||||||
|
@ -4,8 +4,8 @@ from .rpm import *
|
|||||||
|
|
||||||
__author__ = "snowykami"
|
__author__ = "snowykami"
|
||||||
__plugin_meta__ = PluginMetadata(
|
__plugin_meta__ = PluginMetadata(
|
||||||
name="轻雪插件管理",
|
name="轻雪包管理器",
|
||||||
description="本地插件管理和插件商店支持,支持启用/停用,安装/卸载插件",
|
description="本地插件管理和插件商店支持,资源包管理,支持启用/停用,安装/卸载插件",
|
||||||
usage=(
|
usage=(
|
||||||
"npm list\n"
|
"npm list\n"
|
||||||
"npm enable/disable <plugin_name>\n"
|
"npm enable/disable <plugin_name>\n"
|
||||||
|
24
liteyuki/plugins/liteyuki_status/__init__.py
Normal file
24
liteyuki/plugins/liteyuki_status/__init__.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from nonebot.plugin import PluginMetadata
|
||||||
|
from .status import *
|
||||||
|
|
||||||
|
__author__ = "snowykami"
|
||||||
|
__plugin_meta__ = PluginMetadata(
|
||||||
|
name="状态查看器",
|
||||||
|
description="",
|
||||||
|
usage=(
|
||||||
|
"MARKDOWN### 状态查看器\n"
|
||||||
|
"查看机器人的状态\n"
|
||||||
|
"### 用法\n"
|
||||||
|
"- `/status` 查看基本情况\n"
|
||||||
|
"- `/status memory` 查看内存使用情况\n"
|
||||||
|
"- `/status process` 查看进程情况\n"
|
||||||
|
),
|
||||||
|
type="application",
|
||||||
|
homepage="https://github.com/snowykami/LiteyukiBot",
|
||||||
|
extra={
|
||||||
|
"liteyuki": True,
|
||||||
|
"toggleable" : False,
|
||||||
|
"default_enable" : True,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
0
liteyuki/plugins/liteyuki_status/api.py
Normal file
0
liteyuki/plugins/liteyuki_status/api.py
Normal file
29
liteyuki/plugins/liteyuki_status/status.py
Normal file
29
liteyuki/plugins/liteyuki_status/status.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from nonebot import require
|
||||||
|
|
||||||
|
require("nonebot_plugin_alconna")
|
||||||
|
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Subcommand, Arparma
|
||||||
|
|
||||||
|
status_alc = on_alconna(
|
||||||
|
aliases={"status"},
|
||||||
|
command=Alconna(
|
||||||
|
"status",
|
||||||
|
Subcommand(
|
||||||
|
"memory",
|
||||||
|
alias={"mem", "m", "内存"},
|
||||||
|
),
|
||||||
|
Subcommand(
|
||||||
|
"process",
|
||||||
|
alias={"proc", "p", "进程"},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@status_alc.assign("memory")
|
||||||
|
async def _():
|
||||||
|
print("memory")
|
||||||
|
|
||||||
|
|
||||||
|
@status_alc.assign("process")
|
||||||
|
async def _():
|
||||||
|
print("process")
|
14
liteyuki/resources/templates/js/card.js
Normal file
14
liteyuki/resources/templates/js/card.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
const bgs = [
|
||||||
|
"bg1.png",
|
||||||
|
"bg2.png",
|
||||||
|
"bg3.png",
|
||||||
|
"bg4.png",
|
||||||
|
"bg5.png",
|
||||||
|
"bg6.png",
|
||||||
|
"bg7.png",
|
||||||
|
"bg8.png",
|
||||||
|
"bg9.png",
|
||||||
|
"bg10.png",
|
||||||
|
]
|
||||||
|
// 随机选择背景图片
|
||||||
|
document.body.style.backgroundImage = `url(./img/${bgs[Math.floor(Math.random() * bgs.length)]})`;
|
@ -3,12 +3,17 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Liteyuki Status</title>
|
<title>Liteyuki Status</title>
|
||||||
<link rel="stylesheet" href="css/card.css">
|
<link rel="stylesheet" href="./css/card.css">
|
||||||
|
<link rel="stylesheet" href="./css/status.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="data-storage" id="data">{{ data | tojson }}</div>
|
<div class="data-storage" id="data">{{ data | tojson }}</div>
|
||||||
<div class="info-box" id="system-info"></div>
|
<div class="info-box" id="system-info"></div>
|
||||||
<div class="info-box" id="disk-info"></div>
|
<div class="info-box" id="disk-info"></div>
|
||||||
<div class="info-box" id="motto-info"></div>
|
<div class="info-box" id="motto-info"></div>
|
||||||
|
|
||||||
|
<script src="./js/card.js"></script>
|
||||||
|
<script src="./js/status.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -60,6 +60,10 @@ def init():
|
|||||||
if not os.path.exists("data/liteyuki/liteyuki.json"):
|
if not os.path.exists("data/liteyuki/liteyuki.json"):
|
||||||
register_bot()
|
register_bot()
|
||||||
|
|
||||||
|
if not os.path.exists("pyproject.toml"):
|
||||||
|
with open("pyproject.toml", "w", encoding="utf-8") as f:
|
||||||
|
f.write("[tool.nonebot]\n")
|
||||||
|
|
||||||
nonebot.logger.info(
|
nonebot.logger.info(
|
||||||
f"Run Liteyuki with Python{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} "
|
f"Run Liteyuki with Python{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} "
|
||||||
f"at {sys.executable}"
|
f"at {sys.executable}"
|
||||||
|
3
main.py
3
main.py
@ -1,3 +1,5 @@
|
|||||||
|
import os.path
|
||||||
|
|
||||||
import nonebot
|
import nonebot
|
||||||
from nonebot.adapters.onebot import v11, v12
|
from nonebot.adapters.onebot import v11, v12
|
||||||
|
|
||||||
@ -21,6 +23,7 @@ for adapter in adapters:
|
|||||||
driver.register_adapter(adapter)
|
driver.register_adapter(adapter)
|
||||||
|
|
||||||
nonebot.load_plugin("liteyuki.liteyuki_main")
|
nonebot.load_plugin("liteyuki.liteyuki_main")
|
||||||
|
nonebot.load_from_toml("pyproject.toml")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
|
@ -4,10 +4,11 @@ colored==2.2.4
|
|||||||
dash==2.16.1
|
dash==2.16.1
|
||||||
GitPython==3.1.42
|
GitPython==3.1.42
|
||||||
jieba==0.42.1
|
jieba==0.42.1
|
||||||
|
nb-cli==1.4.1
|
||||||
nonebot2[fastapi,httpx,websockets]==2.2.1
|
nonebot2[fastapi,httpx,websockets]==2.2.1
|
||||||
nonebot-plugin-htmlrender==0.3.1
|
nonebot-plugin-htmlrender==0.3.1
|
||||||
nonebot-adapter-onebot==2.4.3
|
nonebot-adapter-onebot==2.4.3
|
||||||
nonebot-plugin-alconna==0.41.0
|
nonebot-plugin-alconna==0.42.3
|
||||||
nonebot_plugin_apscheduler==0.4.0
|
nonebot_plugin_apscheduler==0.4.0
|
||||||
playwright==1.17.2
|
playwright==1.17.2
|
||||||
psutil==5.9.8
|
psutil==5.9.8
|
||||||
|
Loading…
Reference in New Issue
Block a user