From ccef8ca12572705518b2045c561f6fa5953f7a57 Mon Sep 17 00:00:00 2001 From: snowy Date: Sun, 24 Mar 2024 14:43:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E5=90=91=E8=BD=BB?= =?UTF-8?q?=E9=9B=AA=E6=9C=8D=E5=8A=A1=E5=99=A8=E4=B8=8A=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++++++++++++++++++++++--- liteyuki/utils/__init__.py | 45 +++++++++++++++++++++++++++++++++++--- liteyuki/utils/log.py | 4 ++-- requirements.txt | 3 ++- 4 files changed, 79 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8b65763..815513b 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,10 @@ - 基于[Nonebot2]("https://github.com/nonebot/nonebot2"),有良好的生态支持 - 开箱即用,无需复杂配置 - 新的点击交互模式,拒绝手打指令 -- 支持一切Onebot标准通信,后续会支持更多的平台 +- 全新可视化`npm`包管理,支持一键安装插件 +- 支持一切Onebot标准通信 -## 手动安装和部署 +## 1.手动安装和部署 1. 安装`Git`和`Python3.10+` 2. 克隆项目`git clone https://github.com/snowykami/LiteyukiBot` @@ -26,7 +27,7 @@ 4. 安装依赖`pip install -r requirements.txt`(如果多个Python环境请指定后安装`pythonx -m pip install -r requirements.txt`) 5. 启动`python main.py` -## 一键部署脚本 +## 1.一键部署脚本 #### 提前部署好`Python3.10+`环境和`Git`环境 @@ -42,6 +43,7 @@ echo Install finished! Please click "start.bat" to start the bot! ``` #### Linux + ```bash git clone https://github.com/snowykami/LiteyukiBot cd LiteyukiBot @@ -51,6 +53,25 @@ chmod +x start.sh echo Install finished! Please run "sh start.sh" to start the bot! ``` +## 2. 配置项(Nonebot插件配置项也可以写在此) + +```yaml +# 建议修改的配置项目 +command_start: [ "/", " " ] # 指令前缀 +host: 127.0.0.1 # 反向监听地址 +port: 20216 # 绑定端口 +nickname: [ "liteyuki" ] # 机器人昵称 +superusers: [ "1919810" ] # 超级用户 +show_icon: true # 是否显示日志等级图标(某些控制台不可用) + +# 下面是不建议修改,且默认没有列出的配置项,除非你有特殊需求 +log_level: "INFO" # 日志等级 + +# 其他Nonebot插件的配置项 +custom_config_1: "custom_value1" +... +``` + ## 注意事项 - 首次启动会提醒用户注册超级用户 @@ -65,16 +86,25 @@ echo Install finished! Please run "sh start.sh" to start the bot! | 地址 | ws://`host`:`port`/onebot/v11 | 地址取决于配置文件,默认为`20216`端口 | ### 推荐方案(QQ) + 1. 使用`Lagrange.OneBot`,点按交互目前仅支持`Lagrange.OneBot`,详细请看[Lagrange.OneBot]() 2. 云崽的`icqq-plugin`和`ws-plugin`进行通信 3. `Go-cqhttp`(目前已经半死不活了) 4. 人工实现的`Onebot`协议,自己整一个WebSocket客户端,看着QQ的消息,然后给轻雪传输数据 + ### 推荐方案(Minecraft) + 1. 我们有专门为Minecraft开发的服务器Bot,支持OnebotV11/12标准,详细请看[MinecraftOneBot](https://github.com/snowykami/MinecraftOnebot) 请先自行查阅文档,若有困难请联系相关开发者而不是Liteyuki的开发者 ## 其他 + - 有一个用`Nuitka`编译的C语言版本可用 +## 用户协议 +1. 本项目遵循`MIT`协议,你可以自由使用,修改,分发,但是请保留原作者信息 +2. 轻雪会收集使用者的设备信息,通过安全的方式传输到服务器,用于统计用户数量和设备信息,进行优化 +3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性 + ## 鸣谢 diff --git a/liteyuki/utils/__init__.py b/liteyuki/utils/__init__.py index 879cccb..1bd878d 100644 --- a/liteyuki/utils/__init__.py +++ b/liteyuki/utils/__init__.py @@ -1,14 +1,47 @@ -import nonebot +import json +import os.path +import platform -from .log import logger +import nonebot import sys +import pickle __NAME__ = "LiteyukiBot" -__VERSION__ = "6.2.1" # 60201 +__VERSION__ = "6.2.3" # 60201 + +import psutil +import requests + +from liteyuki.utils.config import load_from_yaml + major, minor, patch = map(int, __VERSION__.split(".")) __VERSION_I__ = major * 10000 + minor * 100 + patch +def register_bot(): + url = "https://api.liteyuki.icu/register" + data = { + "name" : __NAME__, + "version" : __VERSION__, + "version_i": __VERSION_I__, + "python" : f"{platform.python_implementation()} {platform.python_version()}", + } + try: + nonebot.logger.info("Waiting for register to Liteyuki...") + resp = requests.post(url, json=data) + if resp.status_code == 200: + data = resp.json() + if liteyuki_id := data.get("liteyuki_id"): + with open("data/liteyuki/liteyuki.json", "wb") as f: + f.write(json.dumps(data).encode("utf-8")) + nonebot.logger.success(f"Register {liteyuki_id} to Liteyuki successfully") + else: + raise ValueError(f"Register to Liteyuki failed: {data}") + + except Exception as e: + nonebot.logger.warning(f"Register to Liteyuki failed, but it's no matter: {e}") + + def init(): """ 初始化 @@ -20,6 +53,12 @@ def init(): nonebot.logger.error("This project requires Python3.10+ to run, please upgrade your Python Environment.") exit(1) + load_from_yaml("config.yml") + from .log import logger + + if not os.path.exists("data/liteyuki/liteyuki.json"): + register_bot() + print("\033[34m" + r""" __ ______ ________ ________ __ __ __ __ __ __ ______ / | / |/ |/ |/ \ / |/ | / |/ | / |/ | diff --git a/liteyuki/utils/log.py b/liteyuki/utils/log.py index 78fed63..1d5610f 100644 --- a/liteyuki/utils/log.py +++ b/liteyuki/utils/log.py @@ -49,10 +49,10 @@ logger_id = logger.add( level=0, diagnose=False, filter=default_filter, - format=get_format(load_from_yaml('config.yml').get("log_level", "INFO")), + format=get_format(config.get("log_level", "INFO")), ) - +show_icon = config.get("show_icon", True) logger.level("DEBUG", color="", icon=f"*️⃣==DEBUG") logger.level("INFO", color="", icon=f"ℹ️===INFO") logger.level("SUCCESS", color="", icon=f"✅SUCCESS") diff --git a/requirements.txt b/requirements.txt index 16f0b78..64fc67c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,5 @@ pytz==2024.1 PyYAML~=6.0.1 starlette~=0.36.3 loguru==0.7.2 -importlib_metadata==7.0.2 \ No newline at end of file +importlib_metadata==7.0.2 +requests==2.31.0 \ No newline at end of file