Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e33bf3a50 | ||
|
|
daa40ae8b8 | ||
|
|
0074483280 | ||
|
|
21bdb011e0 | ||
|
|
e37f1c6165 | ||
|
|
47f3518b04 | ||
|
|
4882546c66 | ||
|
|
997ce52d69 | ||
|
|
bd747cd0fd | ||
|
|
4bc433f049 | ||
|
|
a7bc1abf16 | ||
|
|
cf7e05e9c0 | ||
|
|
625f17a708 | ||
|
|
e10fee74b3 | ||
|
|
756ad3dfaf | ||
|
|
7c880497ed | ||
|
|
f15ee8fa17 | ||
|
|
95ad0e6aa5 | ||
|
|
a46cea5948 | ||
|
|
ee11893074 | ||
|
|
ab1d0d22dd | ||
|
|
72641c7983 | ||
|
|
61ab7ef3d3 | ||
|
|
f70b07e5a3 | ||
|
|
8fbb574228 | ||
|
|
af198dcfaa | ||
|
|
6f794e82a6 | ||
|
|
6fbc87b53f | ||
|
|
073cab5a85 | ||
|
|
b44332121a | ||
|
|
66e6f449cc | ||
|
|
65a6f608e6 | ||
|
|
69f09b92d3 | ||
|
|
8d6417b8ff | ||
|
|
35699f86e3 | ||
|
|
910542f2b5 | ||
|
|
1236a938c9 | ||
|
|
ceb8f663c0 | ||
|
|
7390799c80 | ||
|
|
77673f6bed | ||
|
|
c089395597 | ||
|
|
b10b806b76 | ||
|
|
413808300d | ||
|
|
a2c3f11680 | ||
|
|
68a71c516e | ||
|
|
0822512c21 | ||
|
|
45c6dbd2ce | ||
|
|
447c558957 | ||
|
|
638efd9e07 | ||
|
|
f69253616e | ||
|
|
e0f323fdeb | ||
|
|
28b7415581 | ||
|
|
a9ed5d144d | ||
|
|
4a9a856df5 | ||
|
|
7519bad64c | ||
|
|
1787123aac | ||
|
|
1401b31af8 | ||
|
|
ebecffec90 | ||
|
|
06b1af46ea | ||
|
|
7e7e88557d | ||
|
|
6679744ce5 | ||
|
|
7c163142c4 | ||
|
|
f578123acb | ||
|
|
2fe825f67d | ||
|
|
ef662a16df | ||
|
|
6d58f6a188 | ||
|
|
96ca33f878 | ||
|
|
fead5a87a8 | ||
|
|
4ed5cca0aa | ||
|
|
16e43de35e | ||
|
|
99774adc87 | ||
|
|
1f90490230 | ||
|
|
0fbe7be786 | ||
|
|
1c58a8f021 |
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
SUPERUSERS=[""]
|
||||
|
||||
COMMAND_START=[""]
|
||||
@@ -13,6 +11,18 @@ SESSION_EXPIRE_TIMEOUT=30
|
||||
# 全局图片统一使用bytes发送,当真寻与协议端不在同一服务器上时为True
|
||||
IMAGE_TO_BYTES = False
|
||||
|
||||
# 回复消息时自称
|
||||
SELF_NICKNAME="小真寻"
|
||||
|
||||
# 数据库配置
|
||||
# 示例: "postgres://user:password@127.0.0.1:5432/database"
|
||||
# 示例: "mysql://user:password@127.0.0.1:3306/database"
|
||||
# 示例: "sqlite:data/db/zhenxun.db" 在data目录下建立db文件夹
|
||||
DB_URL = ""
|
||||
|
||||
# 系统代理
|
||||
# SYSTEM_PROXY = "http://127.0.0.1:7890"
|
||||
|
||||
PLATFORM_SUPERUSERS = '
|
||||
{
|
||||
"qq": [""],
|
||||
@@ -22,6 +32,12 @@ PLATFORM_SUPERUSERS = '
|
||||
|
||||
DRIVER=~fastapi+~httpx+~websockets
|
||||
|
||||
|
||||
# LOG_LEVEL=DEBUG
|
||||
# 服务器和端口
|
||||
HOST = 127.0.0.1
|
||||
PORT = 8080
|
||||
|
||||
# kook adapter toekn
|
||||
# kaiheila_bots =[{"token": ""}]
|
||||
|
||||
@@ -51,11 +67,4 @@ DRIVER=~fastapi+~httpx+~websockets
|
||||
# '
|
||||
|
||||
# application_commands的{"*": ["*"]}代表将全部应用命令注册为全局应用命令
|
||||
# {"admin": ["123", "456"]}则代表将admin命令注册为id是123、456服务器的局部命令,其余命令不注册
|
||||
|
||||
# LOG_LEVEL=DEBUG
|
||||
# 服务器和端口
|
||||
HOST = 127.0.0.1
|
||||
PORT = 8080
|
||||
|
||||
|
||||
# {"admin": ["123", "456"]}则代表将admin命令注册为id是123、456服务器的局部命令,其余命令不注册
|
||||
@@ -0,0 +1,73 @@
|
||||
name: 检查bot是否运行正常
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["dev", "main"]
|
||||
paths:
|
||||
- zhenxun/**
|
||||
- tests/**
|
||||
- bot.py
|
||||
pull_request:
|
||||
branches: ["dev", "main"]
|
||||
paths:
|
||||
- zhenxun/**
|
||||
- tests/**
|
||||
- bot.py
|
||||
|
||||
jobs:
|
||||
bot-check:
|
||||
runs-on: ubuntu-latest
|
||||
name: bot check
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
id: setup_python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.10"
|
||||
|
||||
- name: Install Poetry
|
||||
run: pip install poetry
|
||||
|
||||
# Poetry cache depends on OS, Python version and Poetry version.
|
||||
- name: Cache Poetry cache
|
||||
id: cache-poetry
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.cache/pypoetry
|
||||
key: poetry-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}-${{ hashFiles('pyproject.toml') }}
|
||||
|
||||
- name: Cache playwright cache
|
||||
id: cache-playwright
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.cache/ms-playwright
|
||||
key: playwright-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}
|
||||
|
||||
- name: Cache Data cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: data
|
||||
key: data-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
if: steps.cache-poetry.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
rm -rf poetry.lock
|
||||
poetry source remove ali
|
||||
poetry install --no-root
|
||||
|
||||
- name: Run tests
|
||||
run: poetry run pytest --cov=zhenxun --cov-report xml
|
||||
|
||||
- name: Check bot run
|
||||
id: bot_check_run
|
||||
run: |
|
||||
mv scripts/bot_check.py bot_check.py
|
||||
sed -i "s|^.*\?DB_URL.*|DB_URL=\"${{ env.DB_URL }}\"|g" .env.dev
|
||||
sed -i "s/^.*\?LOG_LEVEL.*/LOG_LEVEL=${{ env.LOG_LEVEL }}/g" .env.dev
|
||||
poetry run python3 bot_check.py
|
||||
env:
|
||||
DB_URL: "sqlite://:memory:"
|
||||
LOG_LEVEL: DEBUG
|
||||
@@ -0,0 +1,65 @@
|
||||
name: Update Version
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
paths:
|
||||
- zhenxun/**
|
||||
- resources/**
|
||||
- bot.py
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
branches:
|
||||
- main
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
update-version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Read current version
|
||||
id: read_version
|
||||
run: |
|
||||
version_line=$(grep '__version__' __version__)
|
||||
version=$(echo $version_line | sed -E 's/__version__:\s*v([0-9]+\.[0-9]+\.[0-9]+)(-.+)?/\1/')
|
||||
echo "Current version: $version"
|
||||
echo "current_version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Check for version file changes
|
||||
id: check_diff
|
||||
run: |
|
||||
if git diff --name-only HEAD~1 HEAD | grep -q '__version__'; then
|
||||
echo "Version file has changes"
|
||||
echo "version_changed=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "Version file has no changes"
|
||||
echo "version_changed=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Get commit hash
|
||||
id: get_commit_hash
|
||||
run: echo "commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Update version file
|
||||
if: steps.check_diff.outputs.version_changed == 'false'
|
||||
run: |
|
||||
current_version="${{ steps.read_version.outputs.current_version }}"
|
||||
commit_hash="${{ steps.get_commit_hash.outputs.commit_hash }}"
|
||||
new_version="v${current_version}-${commit_hash}"
|
||||
echo "Updating version to: $new_version"
|
||||
echo "__version__: $new_version" > __version__
|
||||
git config --global user.name "${{ github.event.pull_request.user.login }}"
|
||||
git config --global user.email "${{ github.event.pull_request.user.login }}@users.noreply.github.com"
|
||||
git add __version__
|
||||
git remote set-url origin https://github.com/${{ github.event.pull_request.head.repo.full_name }}.git
|
||||
git commit -m "chore(version): Update version to $new_version"
|
||||
git push origin HEAD:${{ github.event.pull_request.head.ref }}
|
||||
|
||||
- name: Check updated version
|
||||
if: steps.check_diff.outputs.version_changed == 'false'
|
||||
run: cat __version__
|
||||
@@ -174,11 +174,9 @@ data/
|
||||
/resources/image/prts/
|
||||
/configs/config.py
|
||||
configs/config.yaml
|
||||
./.env
|
||||
./.env.dev
|
||||
plugins/csgo_server/
|
||||
plugins/activity/
|
||||
!/resources/image/genshin/alc/back.png
|
||||
!/data/genshin_alc/
|
||||
.vscode/launch.json
|
||||
/resources/template/my_info
|
||||
plugins_/
|
||||
@@ -0,0 +1,33 @@
|
||||
default_install_hook_types: [pre-commit, prepare-commit-msg]
|
||||
ci:
|
||||
autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks"
|
||||
autofix_prs: true
|
||||
autoupdate_branch: dev
|
||||
autoupdate_schedule: weekly
|
||||
autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks"
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.5.6
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
stages: [commit]
|
||||
|
||||
- repo: https://github.com/pycqa/isort
|
||||
rev: 5.13.2
|
||||
hooks:
|
||||
- id: isort
|
||||
stages: [commit]
|
||||
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 24.8.0
|
||||
hooks:
|
||||
- id: black
|
||||
stages: [commit]
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v4.0.0-alpha.8
|
||||
hooks:
|
||||
- id: prettier
|
||||
types_or: [javascript, jsx, ts, tsx, markdown, yaml, json]
|
||||
stages: [commit]
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"charliermarsh.ruff",
|
||||
"esbenp.prettier-vscode",
|
||||
"ms-python.black-formatter",
|
||||
"ms-python.isort",
|
||||
"ms-python.python",
|
||||
"ms-python.vscode-pylance"
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,37 @@
|
||||
"ujson",
|
||||
"unban",
|
||||
"userinfo",
|
||||
"zhenxun"
|
||||
"zhenxun",
|
||||
"jsdelivr"
|
||||
],
|
||||
"python.analysis.autoImportCompletions": true
|
||||
"python.analysis.autoImportCompletions": true,
|
||||
"python.testing.pytestArgs": ["tests"],
|
||||
"python.testing.unittestEnabled": false,
|
||||
"python.testing.pytestEnabled": true,
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "charliermarsh.ruff", // 默认使用 Ruff 格式化
|
||||
"editor.wordBasedSuggestions": "allDocuments",
|
||||
"editor.formatOnType": true,
|
||||
"editor.formatOnSave": true, // 保存时自动格式化
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.ruff": "explicit",
|
||||
"source.organizeImports": "explicit"
|
||||
}
|
||||
},
|
||||
"ruff.format.preview": false,
|
||||
"isort.check": true,
|
||||
"ruff.importStrategy": "useBundled",
|
||||
"ruff.organizeImports": false,
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[yaml]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[markdown]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,13 @@ WORKDIR /app/zhenxun
|
||||
|
||||
COPY . /app/zhenxun
|
||||
|
||||
RUN apt update && \
|
||||
apt upgrade -y && \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc \
|
||||
g++ && \
|
||||
apt clean
|
||||
|
||||
RUN pip install poetry -i https://mirrors.aliyun.com/pypi/simple/
|
||||
|
||||
RUN poetry install
|
||||
@@ -14,6 +21,8 @@ VOLUME /app/zhenxun/data /app/zhenxun/data
|
||||
|
||||
VOLUME /app/zhenxun/resources /app/zhenxun/resources
|
||||
|
||||
VOLUME /app/zhenxun/.env.dev /app/zhenxun/.env.dev
|
||||
|
||||
RUN poetry run playwright install --with-deps chromium
|
||||
|
||||
CMD ["poetry", "run", "python", "bot.py"]
|
||||
CMD ["poetry", "run", "python", "bot.py"]
|
||||
|
||||
@@ -14,12 +14,10 @@
|
||||
|
||||
<div align=center>
|
||||
|
||||
|
||||
[](https://github.com/HibiKier/zhenxun_bot/blob/main/LICENSE)
|
||||
[](https://jq.qq.com/?_wv=1027&k=u8PgBkMZ)
|
||||
[](https://qm.qq.com/q/YYYt5rkMYc)
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div align=center>
|
||||
@@ -30,11 +28,10 @@
|
||||
|
||||
<div align=center>
|
||||
|
||||
## 绪山真寻Bot
|
||||
## 绪山真寻 Bot
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div align=center>
|
||||
|
||||
“真寻是<strong>[椛椛](https://github.com/FloatTech/ZeroBot-Plugin)</strong>的好朋友!”
|
||||
@@ -42,11 +39,12 @@
|
||||
:tada:喜欢真寻,于是真寻就来了!:tada:
|
||||
|
||||
本项目符合 [OneBot](https://github.com/howmanybots/onebot) 标准,可基于以下项目与机器人框架/平台进行交互
|
||||
| 项目地址 | 平台 | 核心作者 | 备注 |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
| [LLOneBot](https://github.com/LLOneBot/LLOneBot) | NTQQ | linyuchen | 可用 |
|
||||
| [Napcat](https://github.com/NapNeko/NapCatQQ) | NTQQ | NapNeko | 可用 |
|
||||
| [Lagrange.Core](https://github.com/LagrangeDev/Lagrange.Core) | ? | LagrangeDev/Linwenxuan04 | 可用
|
||||
|
||||
| 项目地址 | 平台 | 核心作者 | 备注 |
|
||||
| :-----------------------------------------------------------: | :--: | :----------------------: | :--: |
|
||||
| [LLOneBot](https://github.com/LLOneBot/LLOneBot) | NTQQ | linyuchen | 可用 |
|
||||
| [Napcat](https://github.com/NapNeko/NapCatQQ) | NTQQ | NapNeko | 可用 |
|
||||
| [Lagrange.Core](https://github.com/LagrangeDev/Lagrange.Core) | | LagrangeDev/Linwenxuan04 | 可用 |
|
||||
|
||||
</div>
|
||||
|
||||
@@ -60,8 +58,9 @@
|
||||
|
||||
<div align=center>
|
||||
|
||||
<img width="400" height="400" src="https://raw.githubusercontent.com/HibiKier/zhenxun_bot/main/docs_image/help.png"/>
|
||||
<img width="350" height="350" src="https://raw.githubusercontent.com/HibiKier/zhenxun_bot/main/docs_image/help.png"/>
|
||||
<img width="250" height="500" src="https://raw.githubusercontent.com/HibiKier/zhenxun_bot/main/docs_image/html_help.png"/>
|
||||
<img width="180" height="450" src="https://github.com/HibiKier/zhenxun_bot/blob/dev/docs_image/zhenxun_help.png"/>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -69,8 +68,9 @@
|
||||
|
||||
### 1. 体验一下?
|
||||
|
||||
这是一个免费的,版本为dev的zhenxun,你可以通过napcat或拉格朗日等直接连接用于体验与测试
|
||||
这是一个免费的,版本为 dev 的 zhenxun,你可以通过 napcat 或拉格朗日等直接连接用于体验与测试
|
||||
(球球了测试君!)
|
||||
|
||||
```
|
||||
Url: 43.143.112.57:11451/onebot/v11/ws
|
||||
AccessToken: PUBLIC_ZHENXUN_TEST
|
||||
@@ -82,16 +82,15 @@ AccessToken: PUBLIC_ZHENXUN_TEST
|
||||
|
||||
<div align=center>
|
||||
|
||||
“不要害怕,你的背后还有千千万万的 <strong>伙伴</strong> 啊!”
|
||||
“不要害怕,你的背后还有千千万万的 <strong>伙伴</strong> 啊!”
|
||||
|
||||
| 项目名称 | 主要用途 | 仓库作者 | 备注 |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
| [WebUi](https://github.com/HibiKier/zhenxun_bot_webui) | 管理 | [hibikier](https://github.com/HibiKier) | 基于真寻WebApi的webui实现
|
||||
| [一键安装](https://github.com/zhenxun-org/zhenxun_bot-deploy) | 安装 | [AkashiCoin](https://github.com/AkashiCoin) | 新版本未测试
|
||||
| [Docker单机版](https://github.com/Sakuracio/zhenxun_bot_docker) | 安装 | [zhenxun-org](https://github.com/zhenxun-org) | 新版本未测试
|
||||
| [Docker全量版](https://shields.io/badge/GITHUB-SinKy--Yan-4476AF?logo=github&style=for-the-badge) | 安装 | [zhenxun-org](https://github.com/zhenxun-org) | 包含 真寻Bot PostgreSQL数据库 go-cqhttp webui等(新版本未测试)
|
||||
|
||||
PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能无法正常启动全量版容器**
|
||||
| 项目名称 | 主要用途 | 仓库作者 | 备注 |
|
||||
| :--------------------------------------------------------------------: | :------: | :-------------------------------------------------: | :---------------------------: |
|
||||
| [插件库](https://github.com/zhenxun-org/zhenxun_bot_plugins) | 插件 | [zhenxun-org](https://github.com/zhenxun-org) | 原 plugins 文件夹插件 |
|
||||
| [插件索引库](https://github.com/zhenxun-org/zhenxun_bot_plugins_index) | 插件 | [zhenxun-org](https://github.com/zhenxun-org) | 扩展插件索引库 |
|
||||
| [一键安装](https://github.com/soloxiaoye2022/zhenxun_bot-deploy) | 安装 | [soloxiaoye2022](https://github.com/soloxiaoye2022) | 第三方 |
|
||||
| [WebUi](https://github.com/HibiKier/zhenxun_bot_webui) | 管理 | [hibikier](https://github.com/HibiKier) | 基于真寻 WebApi 的 webui 实现 |
|
||||
| [安卓 app(WebUi)](https://github.com/YuS1aN/zhenxun_bot_android_ui) | 安装 | [YuS1aN](https://github.com/YuS1aN) | 第三方 |
|
||||
|
||||
<details>
|
||||
<summary> <strong> WebUI </strong>后台示例图 </summary>
|
||||
@@ -112,11 +111,11 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可
|
||||
|
||||
## ~~来点优点?~~ 可爱难道还不够吗
|
||||
|
||||
* 实现了许多功能,且提供了大量功能管理命令
|
||||
* 通过Config配置项将所有插件配置统计保存至config.yaml,利于统一用户修改
|
||||
* 方便增删插件,原生nonebot2 matcher,不需要额外修改,仅仅通过简单的配置属性就可以生成`帮助图片`和`帮助信息`
|
||||
* 提供了cd,阻塞,每日次数等限制,仅仅通过简单的属性就可以生成一个限制,例如:`PluginCdBlock` 等
|
||||
* **..... 更多详细请通过`传送门`查看文档!**
|
||||
- 实现了许多功能,且提供了大量功能管理命令
|
||||
- 通过 Config 配置项将所有插件配置统计保存至 config.yaml,利于统一用户修改
|
||||
- 方便增删插件,原生 nonebot2 matcher,不需要额外修改,仅仅通过简单的配置属性就可以生成`帮助图片`和`帮助信息`
|
||||
- 提供了 cd,阻塞,每日次数等限制,仅仅通过简单的属性就可以生成一个限制,例如:`PluginCdBlock` 等
|
||||
- **..... 更多详细请通过[[传送门](https://hibikier.github.io/zhenxun_bot/)]查看文档!**
|
||||
|
||||
## 简单部署
|
||||
|
||||
@@ -135,11 +134,7 @@ poetry install # 安装依赖
|
||||
poetry shell # 进入虚拟环境
|
||||
python bot.py
|
||||
|
||||
# 在Linux系统,你可能还需要运行此命令安装playwright依赖
|
||||
playwright install-deps
|
||||
|
||||
# 首次后会在data目录下生成database.json和config.yaml文件
|
||||
# database.json用户配置数据库信息
|
||||
# 首次后会在data目录下生成config.yaml文件
|
||||
# config.yaml用户配置插件
|
||||
```
|
||||
|
||||
@@ -157,173 +152,168 @@ playwright install-deps
|
||||
"kaiheila": [],
|
||||
"discord": []
|
||||
}
|
||||
'
|
||||
'
|
||||
# 此处填写你的数据库地址
|
||||
# 示例: "postgres://user:password@127.0.0.1:5432/database"
|
||||
# 示例: "mysql://user:password@127.0.0.1:5432/database"
|
||||
# 示例: "sqlite:data/db/zhenxun.db" 在data目录下建立db文件夹
|
||||
DB_URL = "" # 数据库地址
|
||||
|
||||
2.在data/database.json文件中修改数据库配置
|
||||
{
|
||||
"bind": "",
|
||||
"sql_name": "postgres",
|
||||
"user": "", # 用户们
|
||||
"password": "", # 密码
|
||||
"address": "", # 数据库地址ip
|
||||
"port": "", # 数据库端口
|
||||
"database": "" # 数据库名称
|
||||
}
|
||||
|
||||
3.在configs/config.yaml文件中 # 该文件需要启动一次后生成
|
||||
2.在configs/config.yaml文件中 # 该文件需要启动一次后生成
|
||||
* 修改插件配置项
|
||||
|
||||
```
|
||||
|
||||
## 功能列表 (旧版列表)
|
||||
<!-- ## 功能列表 (旧版列表)
|
||||
|
||||
<details>
|
||||
<summary>已实现的功能</summary>
|
||||
|
||||
### 已实现的常用功能
|
||||
|
||||
* [x] 昵称系统(群与群与私聊分开.)
|
||||
- [x] 昵称系统(群与群与私聊分开.)
|
||||
|
||||
* [x] 图灵AI(会把'你'等关键字替换为你的昵称),且带有 [AnimeThesaurus](https://github.com/Kyomotoi/AnimeThesaurus),够味
|
||||
* [x] 签到/我的签到/好感度排行/好感度总排行(影响色图概率和开箱次数,支持配置)
|
||||
* [x] 发送某文件夹下的随机图片(支持自定义,默认:美图,萝莉,壁纸)
|
||||
* [x] 色图(这不是基础功能嘛喂)
|
||||
* [x] coser
|
||||
* [x] 黑白草图生成器
|
||||
* [x] 鸡汤/语录
|
||||
* [x] 骂我(钉宫语音)
|
||||
* [x] 戳一戳(概率发送美图,钉宫语音或者戳回去)
|
||||
* [x] 模拟开箱/我的开箱/群开箱统计/我的金色/设置cookie(csgo,内置爬虫脚本,需要提前抓取数据和图片,需要session,可能需要代理,阿里云服务器等ip也许已经被ban了(我无代理访问失败),如果访问太多账号API调用可能被禁止访问api!)
|
||||
* [x] 鲁迅说过
|
||||
* [x] 构造假消息(自定义的分享链接)
|
||||
* [x] 商店/我的金币/购买道具/使用道具
|
||||
* [x] 8种手游抽卡 (查看 [nonebot_plugin_gamedraw](https://github.com/HibiKier/nonebot_plugin_gamedraw))
|
||||
* [x] 我有一个朋友想问问..(借鉴pcrbot插件)
|
||||
* [x] 原神黄历
|
||||
* [x] 原神今日素材
|
||||
* [x] 原神资源查询 (借鉴[Genshin_Impact_bot](https://github.com/H-K-Y/Genshin_Impact_bot)插件)
|
||||
* [x] 原神便笺查询
|
||||
* [x] 原神玩家查询
|
||||
* [x] 原神树脂提醒
|
||||
* [x] 原神签到/自动签到
|
||||
* [x] 金币红包
|
||||
* [x] 微博热搜
|
||||
* [x] B站主播/UP/番剧订阅
|
||||
- [x] 图灵 AI(会把'你'等关键字替换为你的昵称),且带有 [AnimeThesaurus](https://github.com/Kyomotoi/AnimeThesaurus),够味
|
||||
- [x] 签到/我的签到/好感度排行/好感度总排行(影响色图概率和开箱次数,支持配置)
|
||||
- [x] 发送某文件夹下的随机图片(支持自定义,默认:美图,萝莉,壁纸)
|
||||
- [x] 色图(这不是基础功能嘛喂)
|
||||
- [x] coser
|
||||
- [x] 黑白草图生成器
|
||||
- [x] 鸡汤/语录
|
||||
- [x] 骂我(钉宫语音)
|
||||
- [x] 戳一戳(概率发送美图,钉宫语音或者戳回去)
|
||||
- [x] 模拟开箱/我的开箱/群开箱统计/我的金色/设置 cookie(csgo,内置爬虫脚本,需要提前抓取数据和图片,需要 session,可能需要代理,阿里云服务器等 ip 也许已经被 ban 了(我无代理访问失败),如果访问太多账号 API 调用可能被禁止访问 api!)
|
||||
- [x] 鲁迅说过
|
||||
- [x] 构造假消息(自定义的分享链接)
|
||||
- [x] 商店/我的金币/购买道具/使用道具
|
||||
- [x] 8 种手游抽卡 (查看 [nonebot_plugin_gamedraw](https://github.com/HibiKier/nonebot_plugin_gamedraw))
|
||||
- [x] 我有一个朋友想问问..(借鉴 pcrbot 插件)
|
||||
- [x] 原神黄历
|
||||
- [x] 原神今日素材
|
||||
- [x] 原神资源查询 (借鉴[Genshin_Impact_bot](https://github.com/H-K-Y/Genshin_Impact_bot)插件)
|
||||
- [x] 原神便笺查询
|
||||
- [x] 原神玩家查询
|
||||
- [x] 原神树脂提醒
|
||||
- [x] 原神签到/自动签到
|
||||
- [x] 金币红包
|
||||
- [x] 微博热搜
|
||||
- [x] B 站主播/UP/番剧订阅
|
||||
|
||||
* [x] pil对图片的一些操作
|
||||
* [x] BUFF饰品底价查询(需要session)
|
||||
* [x] 天气查询
|
||||
* [x] 疫情查询
|
||||
* [x] bt磁力搜索(咳咳,这功能我想dddd)
|
||||
* [x] reimu搜索(上车) (使用[XUN_Langskip](https://github.com/Angel-Hair/XUN_Bot)的插件)
|
||||
* [x] 靠图识番 (使用[XUN_Langskip](https://github.com/Angel-Hair/XUN_Bot)的插件)
|
||||
* [x] 以图搜图 (使用[nonebot_plugin_picsearcher](https://github.com/synodriver/nonebot_plugin_picsearcher)插件)
|
||||
* [x] 搜番
|
||||
* [x] 点歌 [nonebot_plugin_songpicker2](https://github.com/maxesisn/nonebot_plugin_songpicker2)插件(删除了选歌和评论)
|
||||
* [x] epic免费游戏
|
||||
* [x] p站排行榜
|
||||
* [x] p站搜图
|
||||
* [x] 翻译(日英韩)
|
||||
* [x] pix图库(一个自己的图库,含有增删查改,黑名单等命令)
|
||||
- [x] pil 对图片的一些操作
|
||||
- [x] BUFF 饰品底价查询(需要 session)
|
||||
- [x] 天气查询
|
||||
- [x] 疫情查询
|
||||
- [x] bt 磁力搜索(咳咳,这功能我想 dddd)
|
||||
- [x] reimu 搜索(上车) (使用[XUN_Langskip](https://github.com/Angel-Hair/XUN_Bot)的插件)
|
||||
- [x] 靠图识番 (使用[XUN_Langskip](https://github.com/Angel-Hair/XUN_Bot)的插件)
|
||||
- [x] 以图搜图 (使用[nonebot_plugin_picsearcher](https://github.com/synodriver/nonebot_plugin_picsearcher)插件)
|
||||
- [x] 搜番
|
||||
- [x] 点歌 [nonebot_plugin_songpicker2](https://github.com/maxesisn/nonebot_plugin_songpicker2)插件(删除了选歌和评论)
|
||||
- [x] epic 免费游戏
|
||||
- [x] p 站排行榜
|
||||
- [x] p 站搜图
|
||||
- [x] 翻译(日英韩)
|
||||
- [x] pix 图库(一个自己的图库,含有增删查改,黑名单等命令)
|
||||
|
||||
* [x] 查看当前群欢迎消息
|
||||
* [x] 查看该群自己的权限
|
||||
* [x] 我的信息(只是为了看看什么时候入群)
|
||||
* [x] 更新信息(如果继续更新的话)
|
||||
* [x] go-cqhttp最新版下载和上传(不需要请删除)
|
||||
* [x] 撤回
|
||||
* [x] 滴滴滴-(用户对超级用户发送消息)
|
||||
* [x] 金币红包/金币排行
|
||||
* [x] 俄罗斯轮盘/胜场排行/败场排行/欧洲人排行/慈善家排行
|
||||
* [x] 网易云热评
|
||||
* [x] 念首古诗
|
||||
* [x] 获取b站视频封面
|
||||
* [x] 通过PID获取图片
|
||||
* [x] 功能统计可视化
|
||||
* [x] 词云
|
||||
* [x] 关于
|
||||
- [x] 查看当前群欢迎消息
|
||||
- [x] 查看该群自己的权限
|
||||
- [x] 我的信息(只是为了看看什么时候入群)
|
||||
- [x] 更新信息(如果继续更新的话)
|
||||
- [x] go-cqhttp 最新版下载和上传(不需要请删除)
|
||||
- [x] 撤回
|
||||
- [x] 滴滴滴-(用户对超级用户发送消息)
|
||||
- [x] 金币红包/金币排行
|
||||
- [x] 俄罗斯轮盘/胜场排行/败场排行/欧洲人排行/慈善家排行
|
||||
- [x] 网易云热评
|
||||
- [x] 念首古诗
|
||||
- [x] 获取 b 站视频封面
|
||||
- [x] 通过 PID 获取图片
|
||||
- [x] 功能统计可视化
|
||||
- [x] 词云
|
||||
- [x] 关于
|
||||
|
||||
### 已实现的管理员功能
|
||||
|
||||
* [x] 更新群组成员信息
|
||||
- [x] 更新群组成员信息
|
||||
|
||||
* [x] 95%的群功能开关
|
||||
* [x] 查看群内被动技能状态
|
||||
* [x] 自定义群欢迎消息(是真寻的不是管家的!)
|
||||
* [x] .ban/.unban(支持设置ban时长)= 黑白名单
|
||||
* [x] 刷屏禁言相关:刷屏检测设置/设置禁言时长/设置检测次数
|
||||
* [x] 上传图片/连续上传图片 (上传图片至指定图库)
|
||||
* [x] 移动图片 (同上)
|
||||
* [x] 删除图片 (同上)
|
||||
* [x] 群内B站订阅
|
||||
* [x] 词条设置
|
||||
* [x] 休息吧/醒来
|
||||
- [x] 95%的群功能开关
|
||||
- [x] 查看群内被动技能状态
|
||||
- [x] 自定义群欢迎消息(是真寻的不是管家的!)
|
||||
- [x] .ban/.unban(支持设置 ban 时长)= 黑白名单
|
||||
- [x] 刷屏禁言相关:刷屏检测设置/设置禁言时长/设置检测次数
|
||||
- [x] 上传图片/连续上传图片 (上传图片至指定图库)
|
||||
- [x] 移动图片 (同上)
|
||||
- [x] 删除图片 (同上)
|
||||
- [x] 群内 B 站订阅
|
||||
- [x] 词条设置
|
||||
- [x] 休息吧/醒来
|
||||
|
||||
### 已实现的超级用户功能
|
||||
|
||||
* [x] 添加/删除权限(是真寻的管理员权限,不是群管理员)
|
||||
- [x] 添加/删除权限(是真寻的管理员权限,不是群管理员)
|
||||
|
||||
* [x] 开启/关闭指定群的广播通知
|
||||
* [x] 广播
|
||||
* [x] 自检(检查系统状态)
|
||||
* [x] 所有群组/所有好友
|
||||
* [x] 退出指定群
|
||||
* [x] 更新好友信息/更新群信息
|
||||
* [x] /t(对用户进行回复或发送消息)
|
||||
* [x] 上传/删除/修改商品(需要编写对应的商品功能)
|
||||
* [x] 节日红包发送
|
||||
* [x] 修改群权限
|
||||
* [x] ban
|
||||
* [x] 更新色图
|
||||
* [x] 更新价格/更加图片(csgo开箱)
|
||||
* [x] 重载原神/方舟/赛马娘/坎公骑冠剑卡池
|
||||
* [x] 更新原神今日素材/更新原神资源信息
|
||||
* [x] PIX相关操作
|
||||
* [x] 检查更新真寻
|
||||
* [x] 重启
|
||||
* [x] 添加/删除/查看群白名单
|
||||
* [x] 功能开关(更多设置)
|
||||
* [x] 功能状态
|
||||
* [x] b了
|
||||
* [x] 执行sql
|
||||
* [x] 重载配置
|
||||
* [x] 清理临时数据
|
||||
* [x] 增删群认证
|
||||
* [x] 同意/拒绝好友/群聊请求
|
||||
* [x] 配置重载
|
||||
- [x] 开启/关闭指定群的广播通知
|
||||
- [x] 广播
|
||||
- [x] 自检(检查系统状态)
|
||||
- [x] 所有群组/所有好友
|
||||
- [x] 退出指定群
|
||||
- [x] 更新好友信息/更新群信息
|
||||
- [x] /t(对用户进行回复或发送消息)
|
||||
- [x] 上传/删除/修改商品(需要编写对应的商品功能)
|
||||
- [x] 节日红包发送
|
||||
- [x] 修改群权限
|
||||
- [x] ban
|
||||
- [x] 更新色图
|
||||
- [x] 更新价格/更加图片(csgo 开箱)
|
||||
- [x] 重载原神/方舟/赛马娘/坎公骑冠剑卡池
|
||||
- [x] 更新原神今日素材/更新原神资源信息
|
||||
- [x] PIX 相关操作
|
||||
- [x] 检查更新真寻
|
||||
- [x] 重启
|
||||
- [x] 添加/删除/查看群白名单
|
||||
- [x] 功能开关(更多设置)
|
||||
- [x] 功能状态
|
||||
- [x] b 了
|
||||
- [x] 执行 sql
|
||||
- [x] 重载配置
|
||||
- [x] 清理临时数据
|
||||
- [x] 增删群认证
|
||||
- [x] 同意/拒绝好友/群聊请求
|
||||
- [x] 配置重载
|
||||
|
||||
#### 超级用户的被动技能
|
||||
|
||||
* [x] 邀请入群提醒(别人邀请真寻入群)
|
||||
- [x] 邀请入群提醒(别人邀请真寻入群)
|
||||
|
||||
* [x] 添加好友提醒(别人添加真寻好友)
|
||||
- [x] 添加好友提醒(别人添加真寻好友)
|
||||
|
||||
### 已实现的被动技能
|
||||
|
||||
* [x] 进群欢迎消息
|
||||
- [x] 进群欢迎消息
|
||||
|
||||
* [x] 群早晚安
|
||||
* [x] 每日开箱重置提醒
|
||||
* [x] b站转发解析(解析b站分享信息,支持bv,bilibili链接,b站手机端转发卡片,cv,b23.tv),且5分钟内不解析相同url
|
||||
* [x] 丢人爬(爬表情包)
|
||||
* [x] epic通知(每日发送epic免费游戏链接)
|
||||
* [x] 原神黄历提醒
|
||||
* [x] 复读
|
||||
- [x] 群早晚安
|
||||
- [x] 每日开箱重置提醒
|
||||
- [x] b 站转发解析(解析 b 站分享信息,支持 bv,bilibili 链接,b 站手机端转发卡片,cv,b23.tv),且 5 分钟内不解析相同 url
|
||||
- [x] 丢人爬(爬表情包)
|
||||
- [x] epic 通知(每日发送 epic 免费游戏链接)
|
||||
- [x] 原神黄历提醒
|
||||
- [x] 复读
|
||||
|
||||
### 已实现的看不见的技能
|
||||
|
||||
* [x] 刷屏禁言检测
|
||||
- [x] 刷屏禁言检测
|
||||
|
||||
* [x] 功能调用统计
|
||||
* [x] 检测恶意触发命令(将被最高权限ban掉30分钟,只有最高权限(9级)可以进行unban)
|
||||
* [x] 自动同意好友请求,加群请求将会提醒管理员,退群提示,加群欢迎等等
|
||||
* [x] 群聊时间检测(当群聊最后一人发言时间大于当前36小时后将关闭该群所有通知(即被动技能))
|
||||
* [x] 群管理员监控,自动为新晋管理员增加权限,为失去群管理员的用户删除权限
|
||||
* [x] 群权限系统
|
||||
* [x] 定时更新权限
|
||||
* [x] 自动配置重载
|
||||
- [x] 功能调用统计
|
||||
- [x] 检测恶意触发命令(将被最高权限 ban 掉 30 分钟,只有最高权限(9 级)可以进行 unban)
|
||||
- [x] 自动同意好友请求,加群请求将会提醒管理员,退群提示,加群欢迎等等
|
||||
- [x] 群聊时间检测(当群聊最后一人发言时间大于当前 36 小时后将关闭该群所有通知(即被动技能))
|
||||
- [x] 群管理员监控,自动为新晋管理员增加权限,为失去群管理员的用户删除权限
|
||||
- [x] 群权限系统
|
||||
- [x] 定时更新权限
|
||||
- [x] 自动配置重载
|
||||
|
||||
</details>
|
||||
</details> -->
|
||||
|
||||
## [爱发电](https://afdian.net/@HibiKier)
|
||||
|
||||
@@ -333,7 +323,7 @@ playwright install-deps
|
||||
|
||||
### 感谢名单
|
||||
|
||||
(可以告诉我你的 **github** 地址,我偷偷换掉0v|)
|
||||
(可以告诉我你的 **github** 地址,我偷偷换掉 0v|)
|
||||
|
||||
[shenqi](https://afdian.net/u/fa923a8cfe3d11eba61752540025c377)
|
||||
[A_Kyuu](https://afdian.net/u/b83954fc2c1211eba9eb52540025c377)
|
||||
@@ -341,7 +331,7 @@ playwright install-deps
|
||||
[投冥](https://afdian.net/a/144514mm)
|
||||
[茶喵](https://afdian.net/u/fd22382eac4d11ecbfc652540025c377)
|
||||
[AemokpaTNR](https://afdian.net/u/1169bb8c8a9611edb0c152540025c377)
|
||||
[爱发电用户_wrxn](https://afdian.net/u/4aa03d20db4311ecb1e752540025c377)
|
||||
[爱发电用户\_wrxn](https://afdian.net/u/4aa03d20db4311ecb1e752540025c377)
|
||||
[qqw](https://afdian.net/u/b71db4e2cc3e11ebb76652540025c377)
|
||||
[溫一壺月光下酒](https://afdian.net/u/ad667a5c650c11ed89bf52540025c377)
|
||||
[伝木](https://afdian.net/u/246b80683f9511edba7552540025c377)
|
||||
@@ -351,26 +341,26 @@ playwright install-deps
|
||||
[本喵无敌哒](https://afdian.net/u/dffaa9005bc911ebb69b52540025c377)
|
||||
[椎名冬羽](https://afdian.net/u/ca1ebd64395e11ed81b452540025c377)
|
||||
[kaito](https://afdian.net/u/a055e20a498811eab1f052540025c377)
|
||||
[笑柒XIAO_Q7](https://afdian.net/u/4696db5c529111ec84ea52540025c377)
|
||||
[笑柒 XIAO_Q7](https://afdian.net/u/4696db5c529111ec84ea52540025c377)
|
||||
[请问一份爱多少钱](https://afdian.net/u/f57ef6602dbd11ed977f52540025c377)
|
||||
[咸鱼鱼鱼鱼](https://afdian.net/u/8e39b9a400e011ed9f4a52540025c377)
|
||||
[Kafka](https://afdian.net/u/41d66798ef6911ecbc5952540025c377)
|
||||
[墨然](https://afdian.net/u/8aa5874a644d11eb8a6752540025c377)
|
||||
[爱发电用户_T9e4](https://afdian.net/u/2ad1bb82f3a711eca22852540025c377)
|
||||
[笑柒XIAO_Q7](https://afdian.net/u/4696db5c529111ec84ea52540025c377)
|
||||
[爱发电用户\_T9e4](https://afdian.net/u/2ad1bb82f3a711eca22852540025c377)
|
||||
[笑柒 XIAO_Q7](https://afdian.net/u/4696db5c529111ec84ea52540025c377)
|
||||
[noahzark](https://afdian.net/a/noahzark)
|
||||
[腊条](https://afdian.net/u/f739c4d69eca11eba94b52540025c377)
|
||||
[ze roller](https://afdian.net/u/0e599e96257211ed805152540025c377)
|
||||
[爱发电用户_4jrf](https://afdian.net/u/6b2cdcc817c611ed949152540025c377)
|
||||
[爱发电用户_TBsd](https://afdian.net/u/db638b60217911ed9efd52540025c377)
|
||||
[爱发电用户\_4jrf](https://afdian.net/u/6b2cdcc817c611ed949152540025c377)
|
||||
[爱发电用户\_TBsd](https://afdian.net/u/db638b60217911ed9efd52540025c377)
|
||||
[烟寒若雨](https://afdian.net/u/067bd2161eec11eda62b52540025c377)
|
||||
[ln](https://afdian.net/u/b51914ba1c6611ed8a4e52540025c377)
|
||||
[爱发电用户_b9S4](https://afdian.net/u/3d8f30581a2911edba6d52540025c377)
|
||||
[爱发电用户_c58s](https://afdian.net/u/a6ad8dda195e11ed9a4152540025c377)
|
||||
[爱发电用户_eNr9](https://afdian.net/u/05fdb41c0c9a11ed814952540025c377)
|
||||
[爱发电用户\_b9S4](https://afdian.net/u/3d8f30581a2911edba6d52540025c377)
|
||||
[爱发电用户\_c58s](https://afdian.net/u/a6ad8dda195e11ed9a4152540025c377)
|
||||
[爱发电用户\_eNr9](https://afdian.net/u/05fdb41c0c9a11ed814952540025c377)
|
||||
[MangataAkihi](https://github.com/Sakuracio)
|
||||
[炀](https://afdian.net/u/69b76e9ec77b11ec874f52540025c377)
|
||||
[爱发电用户_Bc6j](https://afdian.net/u/8546be24f44111eca64052540025c377)
|
||||
[爱发电用户\_Bc6j](https://afdian.net/u/8546be24f44111eca64052540025c377)
|
||||
[大魔王](https://github.com/xipesoy)
|
||||
[CopilotLaLaLa](https://github.com/CopilotLaLaLa)
|
||||
[嘿小欧](https://afdian.net/u/daa4bec4f24911ec82e552540025c377)
|
||||
@@ -378,15 +368,15 @@ playwright install-deps
|
||||
[十年くん](https://github.com/shinianj)
|
||||
[哇](https://afdian.net/u/9b266244f23911eca19052540025c377)
|
||||
[yajiwa](https://github.com/yajiwa)
|
||||
[爆金币](https://afdian.net/u/0d78879ef23711ecb22452540025c377)
|
||||
[爆金币](https://afdian.net/u/0d78879ef23711ecb22452540025c377)
|
||||
|
||||
</details>
|
||||
|
||||
## 更新
|
||||
<!-- ## 更新
|
||||
|
||||
### 2024/8/11
|
||||
|
||||
* 更新dev
|
||||
- 更新 dev -->
|
||||
|
||||
<!-- ### 2024/1/25
|
||||
|
||||
@@ -828,20 +818,20 @@ playwright install-deps
|
||||
|
||||
## Todo
|
||||
|
||||
* [x] web管理
|
||||
- [x] web 管理
|
||||
|
||||
## 感谢
|
||||
|
||||
[botuniverse / onebot](https://github.com/botuniverse/onebot) :超棒的机器人协议
|
||||
[Mrs4s / go-cqhttp](https://github.com/Mrs4s/go-cqhttp) :cqhttp的golang实现,轻量、原生跨平台.
|
||||
[nonebot / nonebot2](https://github.com/nonebot/nonebot2) :跨平台Python异步机器人框架
|
||||
[Angel-Hair / XUN_Bot](https://github.com/Angel-Hair/XUN_Bot) :一个基于NoneBot和酷Q的功能性QQ机器人
|
||||
[pcrbot / cappuccilo_plugins](https://github.com/pcrbot/cappuccilo_plugins) :hoshino插件合集
|
||||
[Mrs4s / go-cqhttp](https://github.com/Mrs4s/go-cqhttp) :cqhttp 的 golang 实现,轻量、原生跨平台.
|
||||
[nonebot / nonebot2](https://github.com/nonebot/nonebot2) :跨平台 Python 异步机器人框架
|
||||
[Angel-Hair / XUN_Bot](https://github.com/Angel-Hair/XUN_Bot) :一个基于 NoneBot 和酷 Q 的功能性 QQ 机器人
|
||||
[pcrbot / cappuccilo_plugins](https://github.com/pcrbot/cappuccilo_plugins) :hoshino 插件合集
|
||||
[MeetWq /nonebot-plugin-withdraw](https://github.com/MeetWq/nonebot-plugin-withdraw) :A simple withdraw plugin for Nonebot2
|
||||
[maxesisn / nonebot_plugin_songpicker2](https://github.com/maxesisn/nonebot_plugin_songpicker2) :适用于nonebot2的点歌插件
|
||||
[maxesisn / nonebot_plugin_songpicker2](https://github.com/maxesisn/nonebot_plugin_songpicker2) :适用于 nonebot2 的点歌插件
|
||||
[nonepkg / nonebot-plugin-manager](https://github.com/nonepkg/nonebot-plugin-manager) :Nonebot Plugin Manager base on import hook
|
||||
[H-K-Y / Genshin_Impact_bot](https://github.com/H-K-Y/Genshin_Impact_bot) :原神bot,这是一个基于nonebot和HoshinoBot的原神娱乐及信息查询插件
|
||||
[NothAmor / nonebot2_luxun_says](https://github.com/NothAmor/nonebot2_luxun_says) :基于nonebot2机器人框架的鲁迅说插件
|
||||
[Kyomotoi / AnimeThesaurus](https://github.com/Kyomotoi/AnimeThesaurus) :一个~~特二刺螈~~(文爱)的适用于任何bot的词库
|
||||
[Ailitonia / omega-miya](https://github.com/Ailitonia/omega-miya) :基于nonebot2的qq机器人
|
||||
[KimigaiiWuyi / GenshinUID](https://github.com/KimigaiiWuyi/GenshinUID) :一个基于HoshinoBot/NoneBot2的原神UID查询插件
|
||||
[H-K-Y / Genshin_Impact_bot](https://github.com/H-K-Y/Genshin_Impact_bot) :原神 bot,这是一个基于 nonebot 和 HoshinoBot 的原神娱乐及信息查询插件
|
||||
[NothAmor / nonebot2_luxun_says](https://github.com/NothAmor/nonebot2_luxun_says) :基于 nonebot2 机器人框架的鲁迅说插件
|
||||
[Kyomotoi / AnimeThesaurus](https://github.com/Kyomotoi/AnimeThesaurus) :一个~~特二刺螈~~(文爱)的适用于任何 bot 的词库
|
||||
[Ailitonia / omega-miya](https://github.com/Ailitonia/omega-miya) :基于 nonebot2 的 qq 机器人
|
||||
[KimigaiiWuyi / GenshinUID](https://github.com/KimigaiiWuyi/GenshinUID) :一个基于 HoshinoBot/NoneBot2 的原神 UID 查询插件
|
||||
|
||||
@@ -1 +1 @@
|
||||
__version__: v0.2
|
||||
__version__: v0.2.3
|
||||
|
||||
@@ -5,9 +5,10 @@ from nonebot.adapters.dodo import Adapter as DoDoAdapter
|
||||
from nonebot.adapters.kaiheila import Adapter as KaiheilaAdapter
|
||||
from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter
|
||||
|
||||
nonebot.init()
|
||||
|
||||
from zhenxun.services.db_context import disconnect, init
|
||||
|
||||
nonebot.init()
|
||||
driver = nonebot.get_driver()
|
||||
driver.register_adapter(OneBotV11Adapter)
|
||||
driver.register_adapter(KaiheilaAdapter)
|
||||
@@ -18,7 +19,7 @@ driver.register_adapter(DoDoAdapter)
|
||||
driver.on_startup(init)
|
||||
driver.on_shutdown(disconnect)
|
||||
|
||||
nonebot.load_builtin_plugins("echo") # 内置插件
|
||||
# nonebot.load_builtin_plugins("echo")
|
||||
nonebot.load_plugins("zhenxun/builtin_plugins")
|
||||
nonebot.load_plugins("zhenxun/plugins")
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 917 KiB |
@@ -4,6 +4,7 @@ version = "0.1.1"
|
||||
description = "基于 Nonebot2 和 go-cqhttp 开发,以 postgresql 作为数据库,非常可爱的绪山真寻bot"
|
||||
authors = ["HibiKier <775757368@qq.com>"]
|
||||
license = "AGPL"
|
||||
package-mode = false
|
||||
|
||||
[[tool.poetry.source]]
|
||||
name = "ali"
|
||||
@@ -15,7 +16,7 @@ python = "^3.10"
|
||||
playwright = "^1.41.1"
|
||||
nonebot-adapter-onebot = "^2.3.1"
|
||||
nonebot-plugin-apscheduler = "^0.3.0"
|
||||
tortoise-orm = {extras = ["asyncpg"], version = "^0.20.0"}
|
||||
tortoise-orm = { extras = ["asyncpg"], version = "^0.20.0" }
|
||||
cattrs = "^23.2.3"
|
||||
ruamel-yaml = "^0.18.5"
|
||||
strenum = "^0.4.15"
|
||||
@@ -24,6 +25,7 @@ ujson = "^5.9.0"
|
||||
nonebot-adapter-kaiheila = "^0.3.0"
|
||||
nb-cli = "^1.3.0"
|
||||
nonebot2 = "^2.1.3"
|
||||
pydantic = "1.10.18"
|
||||
nonebot-adapter-discord = "^0.1.3"
|
||||
nonebot-adapter-dodo = "^0.1.4"
|
||||
pillow = "9.5"
|
||||
@@ -43,11 +45,100 @@ cn2an = "^0.5.22"
|
||||
aiohttp = "^3.9.5"
|
||||
dateparser = "^1.2.0"
|
||||
bilireq = "0.2.3post0"
|
||||
python-jose = {extras = ["cryptography"], version = "^3.3.0"}
|
||||
python-jose = { extras = ["cryptography"], version = "^3.3.0" }
|
||||
python-multipart = "^0.0.9"
|
||||
nonebot-plugin-alconna = "^0.51.1"
|
||||
nonebot-plugin-alconna = "0.51.1"
|
||||
arclet-alconna = "1.8.23"
|
||||
aiocache = "^0.12.2"
|
||||
py-cpuinfo = "^9.0.0"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
nonebug = "^0.3.2"
|
||||
pytest-cov = "^5.0.0"
|
||||
pytest-mock = "^3.6.1"
|
||||
pytest-asyncio = "^0.23.5"
|
||||
pytest-xdist = "^3.3.1"
|
||||
respx = "^0.21.1"
|
||||
|
||||
[tool.nonebot]
|
||||
plugins = [
|
||||
"nonebot_plugin_apscheduler",
|
||||
"nonebot_plugin_session",
|
||||
"nonebot_plugin_htmlrender",
|
||||
"nonebot_plugin_userinfo",
|
||||
"nonebot_plugin_alconna",
|
||||
]
|
||||
plugin_dirs = ["zhenxun/services", "zhenxun/builtin_plugins", "zhenxun/plugins"]
|
||||
adapters = [
|
||||
{ name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" },
|
||||
{ name = "DoDo", module_name = "nonebot.adapters.dodo" },
|
||||
{ name = "开黑啦", module_name = "nonebot.adapters.kaiheila" },
|
||||
]
|
||||
|
||||
[tool.black]
|
||||
line-length = 88
|
||||
target-version = ["py39", "py310", "py311", "py312"]
|
||||
include = '\.pyi?$'
|
||||
extend-exclude = '''
|
||||
'''
|
||||
|
||||
[tool.isort]
|
||||
profile = "black"
|
||||
line_length = 88
|
||||
length_sort = true
|
||||
skip_gitignore = true
|
||||
force_sort_within_sections = true
|
||||
src_paths = ["zhenxun", "tests"]
|
||||
extra_standard_library = ["typing_extensions"]
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 88
|
||||
target-version = "py310"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
"F", # Pyflakes
|
||||
"W", # pycodestyle warnings
|
||||
"E", # pycodestyle errors
|
||||
"UP", # pyupgrade
|
||||
"ASYNC", # flake8-async
|
||||
"C4", # flake8-comprehensions
|
||||
"T10", # flake8-debugger
|
||||
"T20", # flake8-print
|
||||
"PYI", # flake8-pyi
|
||||
"PT", # flake8-pytest-style
|
||||
"Q", # flake8-quotes
|
||||
"RUF", # Ruff-specific rules
|
||||
]
|
||||
ignore = [
|
||||
"E402", # module-import-not-at-top-of-file
|
||||
"UP037", # quoted-annotation
|
||||
"RUF001", # ambiguous-unicode-character-string
|
||||
"RUF002", # ambiguous-unicode-character-docstring
|
||||
"RUF003", # ambiguous-unicode-character-comment
|
||||
]
|
||||
|
||||
[tool.ruff.lint.flake8-pytest-style]
|
||||
fixture-parentheses = false
|
||||
mark-parentheses = false
|
||||
|
||||
[tool.pyright]
|
||||
pythonVersion = "3.10"
|
||||
pythonPlatform = "All"
|
||||
defineConstant = { PYDANTIC_V2 = true }
|
||||
executionEnvironments = [
|
||||
{ root = "./tests", extraPaths = [
|
||||
"./",
|
||||
] },
|
||||
{ root = "./" },
|
||||
]
|
||||
|
||||
typeCheckingMode = "standard"
|
||||
reportShadowedImports = false
|
||||
disableBytesTypePromotions = true
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
asyncio_mode = "auto"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
|
||||
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 245 KiB |
|
Before Width: | Height: | Size: 456 KiB |
|
Before Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 728 KiB After Width: | Height: | Size: 2.0 MiB |
@@ -0,0 +1,7 @@
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ECharts Example</title>
|
||||
<!-- 引入ECharts -->
|
||||
<script src="https://cdn.bootcss.com/echarts/4.2.1/echarts.min.js"></script>
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- 图表容器 -->
|
||||
<div id="main" style="width: 1000px;height:500px;"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main'));
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
boundaryGap: [0, 0.01]
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: {
|
||||
{
|
||||
data.category_data | tojson
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
data: {
|
||||
{
|
||||
data.data | tojson
|
||||
}
|
||||
},
|
||||
type: 'bar',
|
||||
itemStyle: {
|
||||
// 为每个柱子设置随机颜色
|
||||
color: function () {
|
||||
// 生成一个随机颜色
|
||||
return 'rgb(' +
|
||||
Math.round(Math.random() * 255) + ',' +
|
||||
Math.round(Math.random() * 255) + ',' +
|
||||
Math.round(Math.random() * 255) + ')';
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,182 @@
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: fzrzFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("../../font/fzrzExtraBold.ttf");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
height: 750px;
|
||||
width: 395px;
|
||||
background-color: antiquewhite;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.top-image {
|
||||
height: 215px;
|
||||
width: 395px;
|
||||
}
|
||||
|
||||
.abs-image {
|
||||
height: 426px;
|
||||
width: 93px;
|
||||
position: absolute;
|
||||
right: 39px;
|
||||
top: 240px;
|
||||
}
|
||||
|
||||
.bot-text {
|
||||
height: 55px;
|
||||
width: 335px;
|
||||
position: relative;
|
||||
padding: 0 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.main {
|
||||
height: 448px;
|
||||
width: 335px;
|
||||
padding: 0 30px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #EB869D;
|
||||
height: 32px;
|
||||
font-family: 'fzrzFont';
|
||||
color: white;
|
||||
width: max-content;
|
||||
border-radius: 20px;
|
||||
padding: 0 10px;
|
||||
float: left;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.title-n {
|
||||
height: 23px;
|
||||
width: 23px;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
position: absolute;
|
||||
left: 36px;
|
||||
top: 15px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title-a {
|
||||
background-color: #ED859E;
|
||||
height: 19px;
|
||||
width: 19px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.network {
|
||||
display: flex;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.network-item {
|
||||
font-family: 'fzrzFont';
|
||||
color: #EC859F;
|
||||
display: flex;
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.network-status {
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
border-radius: 50%;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.network-text {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.network-item {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.data-status-item {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.data-status {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
/* background-color:blueviolet; */
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.data-status-item {
|
||||
display: flex;
|
||||
font-family: 'fzrzFont';
|
||||
font-size: 15px;
|
||||
line-height: 18.5px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.process {
|
||||
height: 28px;
|
||||
width: 105px;
|
||||
border: #ED859E 4px solid;
|
||||
border-radius: 30px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.process-bar {
|
||||
height: 28px;
|
||||
width: 30px;
|
||||
background-color: #EB869D;
|
||||
border-top-right-radius: 30px;
|
||||
border-bottom-right-radius: 30px;
|
||||
}
|
||||
|
||||
.data-status-item-text {
|
||||
margin-left: 10px;
|
||||
color: #EC839D;
|
||||
}
|
||||
|
||||
.line {
|
||||
background-color: #EC859F;
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.status-text {
|
||||
font-family: 'fzrzFont';
|
||||
color: #EC859F;
|
||||
height: 185px;
|
||||
}
|
||||
|
||||
.status-text-title {
|
||||
/* height: 25%; */
|
||||
display: flex;
|
||||
/* justify-content: center; */
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.tip {
|
||||
font-family: 'fzrzFont';
|
||||
color: #ecbac7;
|
||||
font-size: 10px;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
bottom: 1px;
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>test</title>
|
||||
<!-- <link rel="stylesheet" href="./res/font-awesome/css/font-awesome.min.css"> -->
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<img class="top-image" src="res/img/top.jpg"></img>
|
||||
<img class="abs-image" src="res/img/bk.png"></img>
|
||||
<div class="bot-text">
|
||||
<div class="title">
|
||||
<div class="title-n">
|
||||
<div class="title-a"></div>
|
||||
</div>
|
||||
<span style="margin-left: 22px;">{{data.nickname}}自检</span>
|
||||
</div>
|
||||
<div class="network">
|
||||
<div class="network-item">BaiDu<span class="network-status"
|
||||
style="background-color: {{data.baidu}}; border: 1px solid {{data.baidu}}"></span></div>
|
||||
<div class="network-item">Google<span class="network-status"
|
||||
style="background-color: {{data.google}}; border: 1px solid {{data.google}}"></span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="data-status">
|
||||
<div class="data-status-item">
|
||||
<div class="process">
|
||||
<div class="process-bar" style="width: {{data.cpu_process}}%;"></div>
|
||||
</div>
|
||||
<div class="data-status-item-text">
|
||||
<div>CPU</div>
|
||||
<!-- <div style="font-size: 13px;">0.8% - 3.5Ghz [14core]</div> -->
|
||||
<div style="font-size: 13px;">{{data.cpu_info}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-status-item">
|
||||
<div class="process">
|
||||
<div class="process-bar" style="width: {{data.ram_process}}%;"></div>
|
||||
</div>
|
||||
<div class="data-status-item-text">
|
||||
<div>RAM</div>
|
||||
<div>{{data.ram_info}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-status-item">
|
||||
<div class="process">
|
||||
<div class="process-bar" style="width: {{data.swap_process}}%;"></div>
|
||||
</div>
|
||||
<div class="data-status-item-text">
|
||||
<div>SWAP</div>
|
||||
<div>{{data.swap_info}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-status-item">
|
||||
<div class="process">
|
||||
<div class="process-bar" style="width: {{data.disk_process}}%;"></div>
|
||||
</div>
|
||||
<div class="data-status-item-text">
|
||||
<div>DISK</div>
|
||||
<div>{{data.disk_info}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="status-text">
|
||||
<p class="status-text-title">CPU <span
|
||||
style="font-size: 12px;line-height: 18.5px;">{{data.brand_raw}}</span></p>
|
||||
<p class="status-text-title">SYSTEM <span
|
||||
style="font-size: 13px;line-height: 18.5px;">{{data.system}}</span></p>
|
||||
<p class="status-text-title">VERSION <span>{{data.version}}</span></p>
|
||||
<p class="status-text-title">PLUGINS <span>{{data.plugin_count}} loaded</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tip">Create By Zhenxun</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript" src="main.js">
|
||||
</script>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 209 KiB |
@@ -0,0 +1,100 @@
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: fzrzFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("../../font/fzrzExtraBold.ttf");
|
||||
}
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
width: 1400px;
|
||||
position: relative;
|
||||
background-image: url('res/img/bk.jpg');
|
||||
background-size: cover;
|
||||
font-family: 'cr105Font';
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
|
||||
.title {
|
||||
font-size: 60px;
|
||||
font-family: 'fzrzFont';
|
||||
/* margin-left: 40px; */
|
||||
/* color: #F67186; */
|
||||
background: linear-gradient(to right, #F67186, #F7889C);
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
color: transparent;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.main {
|
||||
background-image: url('res/img/main.png');
|
||||
background-size: 100% 100%;
|
||||
/* background-size: cover; */
|
||||
height: 100%;
|
||||
width: 1370px;
|
||||
position: relative;
|
||||
padding: 20px;
|
||||
/* box-shadow: 5px 5px 10px 0 rgba(0,0,0,0.5); */
|
||||
}
|
||||
|
||||
.items-border {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
.items {
|
||||
border: #F67186 2px solid;
|
||||
border-radius: 20px;
|
||||
width: 675px;
|
||||
padding: 30px;
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
background-image: url('res/img/title.png');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
height: 55px;
|
||||
width: 350px;
|
||||
font-family: 'fzrzFont';
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: white;
|
||||
font-size: 35px;
|
||||
border-radius: 16px;
|
||||
letter-spacing:4px;
|
||||
}
|
||||
|
||||
.usage-title {
|
||||
font-size: 30px;
|
||||
position: absolute;
|
||||
top: -30px;
|
||||
}
|
||||
|
||||
.item-des {
|
||||
color: #F78094;
|
||||
border-radius: 20px;
|
||||
font-family: 'fzrzFont';
|
||||
font-size: 30px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.item-usage {
|
||||
color: #F78094;
|
||||
border-radius: 20px;
|
||||
font-family: 'fzrzFont';
|
||||
font-size: 20px;
|
||||
border: #F67186 5px dotted;
|
||||
padding: 60px 10px 10px 10px;
|
||||
position: relative;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>test</title>
|
||||
<!-- <link rel="stylesheet" href="./res/font-awesome/css/font-awesome.min.css"> -->
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="main">
|
||||
<div class="title">
|
||||
{{data.nickname}}的{{data.help_name}}帮助
|
||||
</div>
|
||||
<div class="items-border">
|
||||
{% for plugin in data['plugin_list'] %}
|
||||
<div class="items">
|
||||
<div class="item-title">
|
||||
{{plugin.name}}
|
||||
</div>
|
||||
<div class="item-des">
|
||||
简介: {{plugin.description}}
|
||||
</div>
|
||||
<div class="item-usage">
|
||||
<p class="usage-title">用法:</p>
|
||||
{{plugin.usage}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<!-- <div class="items">
|
||||
<div class="item-title">
|
||||
刷屏禁言
|
||||
</div>
|
||||
<div class="item-des">
|
||||
简介: 刷屏禁言相关操作
|
||||
</div>
|
||||
<div class="item-usage">
|
||||
用法:<br>
|
||||
指令:<br>
|
||||
设置刷屏: 查看当前设置<br>
|
||||
-c [count]: 检测最大次数<br>
|
||||
-t [time]: 规定时间内<br>
|
||||
-d [duration]: 禁言时长<br>
|
||||
示例:<br>
|
||||
设置刷屏 -c 10: 设置最大次数为10<br>
|
||||
设置刷屏 -t 100 -d 20: 设置规定时间和禁言时长<br>
|
||||
设置刷屏 -d 10: 设置禁言时长为10<br>
|
||||
* 即 X 秒内发送同样消息 N 次,禁言 M 分钟 *
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript" src="main.js">
|
||||
</script>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 706 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,235 @@
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: fzrzFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("../../font/HYWenHei-85W.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: systFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("../../font/syst.otf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: syhtFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("../../font/syht.otf");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
width: 1754px;
|
||||
height: 1240px;
|
||||
position: relative;
|
||||
background-size: cover;
|
||||
font-family: 'fzrzFont';
|
||||
padding: 20px;
|
||||
background-color: #E08A9F;
|
||||
border-radius: 50px;
|
||||
padding: 40px;
|
||||
color: #E08A9F;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.main{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
background-color: white;
|
||||
height: 1123px;
|
||||
width: 682px;
|
||||
border-radius: 50px;
|
||||
padding: 56px 83px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.weather-img {
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
left: 325px;
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
.top-date {
|
||||
display: flex;
|
||||
position: relative;
|
||||
font-family: "systFont";
|
||||
}
|
||||
|
||||
.user-info {
|
||||
display: flex;
|
||||
margin-top: 65px;
|
||||
}
|
||||
|
||||
.user-info-ava {
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
.ava-img {
|
||||
height: 250px;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
border: 2px solid #E0899E;
|
||||
}
|
||||
|
||||
.user-info-data {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.nickname {
|
||||
position: absolute;
|
||||
width: 140px;
|
||||
left: 50%;
|
||||
bottom: -27px;
|
||||
transform: translate(-50%, -50%);
|
||||
background-color: #E0899E;
|
||||
color: white;
|
||||
padding: 5px 10px;
|
||||
border-radius: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.user-des {
|
||||
margin-top: 60px;
|
||||
font-size: 35px;
|
||||
position: relative;
|
||||
height: 710px;
|
||||
}
|
||||
|
||||
.des-img {
|
||||
height: 430px;
|
||||
position: absolute;
|
||||
bottom: -28px;
|
||||
left: 85px;
|
||||
}
|
||||
|
||||
.tag-img-content {
|
||||
height: 120px;
|
||||
width: 75px;
|
||||
background-color: #E8BB88;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 120px;
|
||||
}
|
||||
|
||||
.tag-img-test {
|
||||
border-left: 37px solid transparent;
|
||||
border-right: 38px solid transparent;
|
||||
border-bottom: 54px solid white;
|
||||
width: 0;
|
||||
height: 68px;
|
||||
}
|
||||
|
||||
.menu {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
height: 496px;
|
||||
top: 175px;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
writing-mode: vertical-rl; /* 从右向左垂直排列 */
|
||||
color: #754E43;
|
||||
height: 190px;
|
||||
width: 65px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 30px;
|
||||
border-top-left-radius: 30px;
|
||||
border-bottom-left-radius: 30px;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.main-img {
|
||||
position: absolute;
|
||||
height: 200px;
|
||||
right: 150px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.sign-data {
|
||||
margin-top: 105px;
|
||||
}
|
||||
|
||||
.base-title {
|
||||
font-size: 35px;
|
||||
}
|
||||
|
||||
.sign-level {
|
||||
border: 2px solid #E08A9F;
|
||||
padding: 7px 3px;
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.line {
|
||||
border: 1px solid #E08A9F;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.text-item {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
|
||||
.test-icon {
|
||||
height: 50px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.test-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.test-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.text-chart {
|
||||
margin-top: 20px;
|
||||
background-color: #E0899E;
|
||||
color: white;
|
||||
padding: 30px;
|
||||
border-radius: 30px;
|
||||
height: 560px;
|
||||
}
|
||||
|
||||
.chart {
|
||||
height: 490px;
|
||||
width: 622px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.select {
|
||||
background-color: #E0899E;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.uname {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1; /* 显示的最大行数 */
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden; /* 隐藏溢出内容 */
|
||||
text-overflow: ellipsis; /* 溢出部分显示为省略号 */
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script src="https://cdn.bootcss.com/echarts/4.2.1/echarts.min.js"></script>
|
||||
<title>test</title>
|
||||
<!-- <link rel="stylesheet" href="./res/font-awesome/css/font-awesome.min.css"> -->
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="main">
|
||||
<div class="main-content">
|
||||
<div class="top-date">{{data.date}}......
|
||||
<img src="./res/img/{{data.weather}}.png" alt="sun" class="weather-img" />
|
||||
<span style="margin-left: 180px;">24℃</span>
|
||||
</div>
|
||||
<div class="user-info">
|
||||
<div class="user-info-ava">
|
||||
<img src="{{data.ava_url}}" alt="test" class="ava-img" />
|
||||
<div class="nickname">{{data.title}}</div>
|
||||
</div>
|
||||
<div class="user-info-data">
|
||||
<div class="uname">
|
||||
<span style="font-size: 35px;">姓名:</span>
|
||||
<span>{{data.nickname}}</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">种族:</span>
|
||||
<span>{{data.race}}</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">性别:</span>
|
||||
<span>{{data.sex}}</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">职业:</span>
|
||||
<span>{{data.occ}}</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">UID:</span>
|
||||
<span>{{data.uid}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-des">
|
||||
<p>个人简介:</p>
|
||||
<div style="line-height: 60px;">
|
||||
{{data.description}}
|
||||
</div>
|
||||
<img src="./res/img/1.png" class="des-img" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 50px;"></div>
|
||||
<div class="main-content">
|
||||
<div class="menu">
|
||||
<div class="menu-item" style="background-color: #E8BC89;">我的信息</div>
|
||||
<div class="menu-item" style="background-color: #EDCCC3;">我的道具</div>
|
||||
<div class="menu-item" style="background-color: #F0DAC6;">我的卡组</div>
|
||||
<div class="menu-item" style="background-color: #F7E5E4;">我的设置</div>
|
||||
</div>
|
||||
<div class="tag-img">
|
||||
<div class="tag-img-content">
|
||||
<div class="tag-img-test"></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="./res/img/2.png" class="main-img" />
|
||||
<div class="sign-data">
|
||||
<p class="base-title">好感度等级: {{data.sign_level}}级</p>
|
||||
<div>
|
||||
<span class="sign-level {{data.select_index[0]}}">路人</span>
|
||||
<span class="sign-level {{data.select_index[1]}}">陌生</span>
|
||||
<span class="sign-level {{data.select_index[2]}}">初识</span>
|
||||
<span class="sign-level {{data.select_index[3]}}">普通</span>
|
||||
<span class="sign-level {{data.select_index[4]}}">熟悉</span>
|
||||
<span class="sign-level {{data.select_index[5]}}">信赖</span>
|
||||
<span class="sign-level {{data.select_index[6]}}">相知</span>
|
||||
<span class="sign-level {{data.select_index[7]}}">厚谊</span>
|
||||
<span class="sign-level {{data.select_index[8]}}">亲密</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="test-content" style="margin-top: 30px">
|
||||
<img src="./res/img/level.png" class="test-icon" />
|
||||
权限等级: {{data.level}}
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-item">
|
||||
<div class="test-content" style="width: 50%;">
|
||||
<img src="./res/img/gold.png" class="test-icon" />
|
||||
金币数量: {{data.gold}}
|
||||
</div>
|
||||
<div class="test-content">
|
||||
<img src="./res/img/prop.png" class="test-icon" />
|
||||
道具数量: {{data.prop}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-item">
|
||||
<div class="test-content" style="width: 50%;">
|
||||
<img src="./res/img/call.png" class="test-icon" />
|
||||
调用次数: {{data.call}}
|
||||
</div>
|
||||
<div class="test-content">
|
||||
<img src="./res/img/say.png" class="test-icon" />
|
||||
发言统计: {{data.say}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="line"></div> -->
|
||||
<div class="text-chart">
|
||||
<div class="test-title">
|
||||
<img src="./res/img/xian.png" class="test-icon" />
|
||||
发言趋势图
|
||||
</div>
|
||||
<div id="chart" class="chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('chart'));
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
backgroundColor: "#E0899E",
|
||||
animation: false,
|
||||
xAxis: {
|
||||
type: "category",
|
||||
data: {{data.chart_date|tojson}},
|
||||
axisLabel: {
|
||||
color: "#fff",
|
||||
fontSize: 20,
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: "value",
|
||||
axisLabel: {
|
||||
color: "#fff",
|
||||
fontSize: 20,
|
||||
},
|
||||
},
|
||||
series: [{
|
||||
data: {{data.count_list|tojson}},
|
||||
type: "line",
|
||||
smooth: true,
|
||||
lineStyle: {
|
||||
// 设置线条颜色
|
||||
color: '#fff',
|
||||
// 可选:设置线条宽度
|
||||
width: 2
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
fontSize: 20,
|
||||
color: '#fff'
|
||||
}
|
||||
}
|
||||
}
|
||||
}, ],
|
||||
};
|
||||
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
</script>
|
||||
</body>
|
||||
<script type="text/javascript" src="main.js">
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,32 @@
|
||||
// var chartDom = document.getElementById("chart")
|
||||
// var myChart = echarts.init(chartDom)
|
||||
// var option
|
||||
|
||||
// option = {
|
||||
// backgroundColor: "#E0899E",
|
||||
// animation: false,
|
||||
// xAxis: {
|
||||
// type: "category",
|
||||
// data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
||||
// axisLabel: {
|
||||
// color: "#fff",
|
||||
// fontSize: 20,
|
||||
// },
|
||||
// },
|
||||
// yAxis: {
|
||||
// type: "value",
|
||||
// axisLabel: {
|
||||
// color: "#fff",
|
||||
// fontSize: 20,
|
||||
// },
|
||||
// },
|
||||
// series: [
|
||||
// {
|
||||
// data: [820, 932, 901, 934, 1290, 1330, 1320],
|
||||
// type: "line",
|
||||
// smooth: true,
|
||||
// },
|
||||
// ],
|
||||
// }
|
||||
|
||||
// option && myChart.setOption(option)
|
||||
@@ -0,0 +1,130 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"></script>
|
||||
<title>test</title>
|
||||
<!-- <link rel="stylesheet" href="./res/font-awesome/css/font-awesome.min.css"> -->
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="main">
|
||||
<div class="main-content">
|
||||
<div class="top-date">2024/08/14......
|
||||
<img src="./res/img/sun.png" alt="sun" class="weather-img" />
|
||||
<span style="margin-left: 180px;">24℃</span>
|
||||
</div>
|
||||
<div class="user-info">
|
||||
<div class="user-info-ava">
|
||||
<img src="./res/img/test.jpg" alt="test" class="ava-img" />
|
||||
<div class="nickname">勇 者</div>
|
||||
</div>
|
||||
<div class="user-info-data">
|
||||
<div>
|
||||
<span style="font-size: 35px;">姓名:</span>
|
||||
<span>副驾驶啦啦啦</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">种族:</span>
|
||||
<span>人类</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">性别:</span>
|
||||
<span>男</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">生日:</span>
|
||||
<span>2021/10/01</span>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<span style="font-size: 35px;">UID:</span>
|
||||
<span>0021</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-des">
|
||||
<p>个人简介:</p>
|
||||
<div style="line-height: 60px;">
|
||||
这是人类勇者的传奇在这片古老而神秘的土地上,
|
||||
每当黑暗的力量威胁到和平与正义之时总会有一位英雄挺身而出。
|
||||
他们不仅拥有超凡的力量更重要的是更重要的是更重要的是
|
||||
</div>
|
||||
<img src="./res/img/1.png" class="des-img" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 50px;"></div>
|
||||
<div class="main-content">
|
||||
<div class="menu">
|
||||
<div class="menu-item" style="background-color: #E8BC89;">信息</div>
|
||||
<div class="menu-item" style="background-color: #EDCCC3;">仓库</div>
|
||||
<div class="menu-item" style="background-color: #F0DAC6;">卡组</div>
|
||||
<div class="menu-item" style="background-color: #F7E5E4;">设置</div>
|
||||
</div>
|
||||
<div class="tag-img">
|
||||
<div class="tag-img-content">
|
||||
<div class="tag-img-test"></div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="./res/img/2.png" class="main-img" />
|
||||
<div class="sign-data">
|
||||
<p class="base-title">好感度等级: 5级</p>
|
||||
<div>
|
||||
<span class="sign-level">路人</span>
|
||||
<span class="sign-level">陌生</span>
|
||||
<span class="sign-level">初识</span>
|
||||
<span class="sign-level select">普通</span>
|
||||
<span class="sign-level">熟悉</span>
|
||||
<span class="sign-level">信赖</span>
|
||||
<span class="sign-level">相知</span>
|
||||
<span class="sign-level">厚谊</span>
|
||||
<span class="sign-level">亲密</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="test-content" style="margin-top: 30px">
|
||||
<img src="./res/img/level.png" class="test-icon" />
|
||||
权限等级: 9
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-item">
|
||||
<div class="test-content" style="width: 50%;">
|
||||
<img src="./res/img/gold.png" class="test-icon" />
|
||||
金币数量: 999
|
||||
</div>
|
||||
<div class="test-content">
|
||||
<img src="./res/img/prop.png" class="test-icon" />
|
||||
道具数量: 933
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-item">
|
||||
<div class="test-content" style="width: 50%;">
|
||||
<img src="./res/img/call.png" class="test-icon" />
|
||||
调用次数: 6443
|
||||
</div>
|
||||
<div class="test-content">
|
||||
<img src="./res/img/say.png" class="test-icon" />
|
||||
发言统计: 233
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="line"></div> -->
|
||||
<div class="text-chart">
|
||||
<div class="test-title">
|
||||
<img src="./res/img/xian.png" class="test-icon" />
|
||||
发言趋势图
|
||||
</div>
|
||||
<div id="chart" class="chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript" src="main.js">
|
||||
</script>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 777 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 483 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,288 @@
|
||||
@font-face {
|
||||
font-family: cr105Font;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/ChillReunion_105S.otf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: cr95Font;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/ChillReunion_95.otf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: cr65sFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/ChillReunion_65S.otf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: shFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/SourceHanSansSC-Bold.otf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: rxxxtFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/rxxxkat.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: kcytFont;
|
||||
/* 导入的字体文件 */
|
||||
src: url("./res/font/jcyt.ttf");
|
||||
}
|
||||
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
height: 926px;
|
||||
width: 465px;
|
||||
background-color: #FBE4E4;
|
||||
position: relative;
|
||||
font-family: 'cr105Font'
|
||||
}
|
||||
|
||||
.avatar {
|
||||
height: 120px;
|
||||
width: 120px;
|
||||
border-radius: 50%;
|
||||
margin-top: 38px;
|
||||
margin-left: 40px;
|
||||
box-shadow: 0px 0 10px 3px #D6A7A7;
|
||||
}
|
||||
|
||||
.avatar-img {
|
||||
height: 120px;
|
||||
width: 120px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.top-head {
|
||||
width: 100%;
|
||||
height: 179px;
|
||||
color: #D37B8D;
|
||||
}
|
||||
|
||||
.nickname {
|
||||
margin-top: 43px;
|
||||
margin-left: 30px;
|
||||
font-size: 47px;
|
||||
/* align-items: center;
|
||||
justify-content: center; */
|
||||
/* display: flex; */
|
||||
width: 275px;
|
||||
height: 67px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.uid {
|
||||
font-size: 21px;
|
||||
position: absolute;
|
||||
width: 255px;
|
||||
top: 84px;
|
||||
left: 30px;
|
||||
font-family: 'cr95Font'
|
||||
}
|
||||
|
||||
.rl-img {
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
left: 30px;
|
||||
}
|
||||
|
||||
.zx-img {
|
||||
height:238px;
|
||||
width: 120px;
|
||||
left: 306px;
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.text-day {
|
||||
font-size: 25px;
|
||||
margin-left: 130px;
|
||||
margin-top: 46px;
|
||||
font-family: 'shFont';
|
||||
}
|
||||
|
||||
.text-zx {
|
||||
font-family: 'cr65sFont';
|
||||
position: absolute;
|
||||
top: 72px;
|
||||
left: 130px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.sign-content{
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sign-top {
|
||||
background-color: #D47E8F;
|
||||
width:445px;
|
||||
height: 150px;
|
||||
position: absolute;
|
||||
left: 9px;
|
||||
color: #FBE4E4;
|
||||
}
|
||||
|
||||
.sign-bottom {
|
||||
background-color: #953B50;
|
||||
width: 445px;
|
||||
height: 150px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 15px
|
||||
}
|
||||
|
||||
.qian {
|
||||
position: absolute;
|
||||
left: 15px;
|
||||
top: 16px;
|
||||
height: 132px;
|
||||
}
|
||||
|
||||
.sign-data{
|
||||
width: 100%;
|
||||
height: 207px;
|
||||
font-family: 'kcytFont';
|
||||
position: relative;
|
||||
color: #D47E8F;
|
||||
}
|
||||
|
||||
.today-text {
|
||||
font-size: 50px;
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
left: 130px;
|
||||
}
|
||||
|
||||
.abs-text {
|
||||
position: absolute;
|
||||
font-size: 30px;
|
||||
z-index: 2;
|
||||
width: 465px;
|
||||
}
|
||||
|
||||
.gift {
|
||||
text-align: center;
|
||||
/* float: left; */
|
||||
/* margin-top: 150px; */
|
||||
}
|
||||
|
||||
|
||||
|
||||
.sign-text {
|
||||
font-size: 30px;
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 140px;
|
||||
}
|
||||
|
||||
.sign-num {
|
||||
font-size: 30px;
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
}
|
||||
|
||||
.line {
|
||||
background-color: #D1778A;
|
||||
width: 435px;
|
||||
height: 3px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
.bottom-foot{
|
||||
width: 100%;
|
||||
height: 376px;
|
||||
position: relative;
|
||||
font-family: 'rxxxtFont';
|
||||
color: #D47E8F;
|
||||
}
|
||||
|
||||
.heart-list {
|
||||
position: absolute;
|
||||
top: 76px;
|
||||
left: 15px;
|
||||
width: 435px;
|
||||
}
|
||||
|
||||
.heart-img {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.cur-text {
|
||||
font-size: 32px;
|
||||
left: 10px;
|
||||
top: -21px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.bot-text {
|
||||
font-size: 30px;
|
||||
position: absolute;
|
||||
top: 85px;
|
||||
left: 15px;
|
||||
width: 435px;
|
||||
}
|
||||
|
||||
.progress-border {
|
||||
position: absolute;
|
||||
top: 273px;
|
||||
left: 19px;
|
||||
width: 313px;
|
||||
height: 30px;
|
||||
border: #DF9DA8 1px solid;
|
||||
}
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background-color: #D47E8F;
|
||||
}
|
||||
|
||||
.weather-img {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
position: absolute;
|
||||
top: 37px;
|
||||
left: 371px;
|
||||
}
|
||||
|
||||
.mbl-img {
|
||||
width: 132px;
|
||||
height: 164px;
|
||||
position: absolute;
|
||||
top: 145px;
|
||||
left: 333px;
|
||||
}
|
||||
|
||||
.wd{
|
||||
position: absolute;
|
||||
font-size: 35px;
|
||||
top: 60px;
|
||||
left: 377px;
|
||||
}
|
||||
|
||||
.date {
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
top: 350px;
|
||||
left: 250px;
|
||||
font-family: 'rxxxtFont';
|
||||
width: 210px;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>test</title>
|
||||
<!-- <link rel="stylesheet" href="./res/font-awesome/css/font-awesome.min.css"> -->
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="top-head">
|
||||
<div style="display: flex;">
|
||||
<div class="avatar">
|
||||
<img class="avatar-img" src="{{data.ava_url}}" alt="">
|
||||
</div>
|
||||
<div style="position: relative;">
|
||||
<p class="nickname" style="font-size: {{ data.font_size }}px;">{{data.name}}</p>
|
||||
<p class="uid">UID:{{data.uid}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sign-content">
|
||||
<div class="sign-bottom">
|
||||
</div>
|
||||
<div class="sign-top">
|
||||
<img class="rl-img" class="avatar-img" src="res/img/rl.png" alt="">
|
||||
<img class="zx-img" class="avatar-img" src="res/img/1.png" alt="">
|
||||
<p class="text-day">累计签到{{data.sign_count}}天</p>
|
||||
<p class="text-zx">{{data.message}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sign-data">
|
||||
<img class="qian" src="res/img/3.png" alt="">
|
||||
<p class="today-text">今日签到</p>
|
||||
<div class="abs-text" style="top: 42px;">
|
||||
<p class="gift">{{data.impression}}</p>
|
||||
</div>
|
||||
<div class="abs-text" style="top: 83px;">
|
||||
<p class="gift">{{data.gold}}</p>
|
||||
</div>
|
||||
<div class="abs-text" style="top: 123px;">
|
||||
<p class="gift">{{data.gift}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="bottom-foot">
|
||||
<p class="cur-text">当前好感度: {{data.cur_impression}}</p>
|
||||
<div class="heart-list">
|
||||
{% for i in data.heart2 %}
|
||||
<img class="heart-img" src="res/img/h2.png" alt="" />
|
||||
{% endfor %}
|
||||
{% for i in data.heart1 %}
|
||||
<img class="heart-img" src="res/img/h1.png" alt="" />
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="bot-text">
|
||||
<p style="position: absolute; top: 9px">好感度等级: {{data.level}}</p>
|
||||
<p style="position: absolute; top: 58px">{{data.attitude}}</p>
|
||||
<p style="position: absolute; top: 111px"">距离升级还差{{data.interpolation}}好感度</p>
|
||||
</div>
|
||||
<div class=" progress-border">
|
||||
<div class="progress-bar" style="width: {{ data.process }}%;"></div>
|
||||
</div>
|
||||
<img class="weather-img" src="res/img/weather/0.png" alt="">
|
||||
<p class="wd">28℃</p>
|
||||
<img class="mbl-img" src="res/img/2.png" alt="">
|
||||
<div class="date">
|
||||
{{data.date}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript" src="main.js">
|
||||
</script>
|
||||
|
||||
</html>
|
||||