Compare commits
No commits in common. "main" and "beta" have entirely different histories.
49
.github/workflows/deploy-docs.yml
vendored
@ -1,47 +1,25 @@
|
||||
# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
|
||||
#
|
||||
name: Deploy VitePress site to Pages
|
||||
|
||||
name: 部署文档
|
||||
|
||||
on:
|
||||
# 在针对 `main` 分支的推送上运行。如果你
|
||||
# 使用 `master` 分支作为默认分支,请将其更改为 `master`
|
||||
push:
|
||||
branches: [main]
|
||||
branches:
|
||||
# 确保这是你正在使用的分支名称
|
||||
- main
|
||||
|
||||
# 允许你从 Actions 选项卡手动运行此工作流程
|
||||
workflow_dispatch:
|
||||
|
||||
# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
# 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列
|
||||
# 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成
|
||||
concurrency:
|
||||
group: pages
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
# 构建工作
|
||||
build:
|
||||
deploy-gh-pages:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # 如果未启用 lastUpdated,则不需要
|
||||
# - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释
|
||||
# - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Setup API markdown
|
||||
run: |-
|
||||
python -m pip install litedoc
|
||||
litedoc liteyuki -o docs/zh/dev/api -l zh-Hans -cd class -fd func -md func -vd var -cs -bu https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/
|
||||
litedoc liteyuki -o docs/en/dev/api -l en -cd class -fd func -md func -vd var -cs -bu https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/
|
||||
fetch-depth: 0
|
||||
# 如果你文档需要 Git 子模块,取消注释下一行
|
||||
# submodules: true
|
||||
|
||||
- name: 安装 pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
@ -49,6 +27,7 @@ jobs:
|
||||
run_install: true
|
||||
version: 8
|
||||
|
||||
|
||||
- name: 设置 Node.js
|
||||
run: |-
|
||||
cd docs
|
||||
@ -60,11 +39,11 @@ jobs:
|
||||
run: |-
|
||||
cd docs
|
||||
pnpm run docs:build
|
||||
> .vitepress/dist/.nojekyll
|
||||
> .vuepress/dist/.nojekyll
|
||||
|
||||
- name: 部署文档
|
||||
uses: JamesIves/github-pages-deploy-action@v4
|
||||
with:
|
||||
# 这是文档部署到的分支名称
|
||||
branch: docs
|
||||
folder: docs/.vitepress/dist
|
||||
branch: gh-pages
|
||||
folder: docs/.vuepress/dist
|
||||
|
20
.github/workflows/pypi-publish.yml
vendored
@ -1,20 +0,0 @@
|
||||
name: Publish
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
pypi-publish:
|
||||
name: upload release to PyPI
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: pdm-project/setup-pdm@v3
|
||||
|
||||
- name: Publish package distributions to PyPI
|
||||
run: pdm publish
|
37
.gitignore
vendored
@ -1,10 +1,6 @@
|
||||
.venv/
|
||||
.idea/
|
||||
.vscode/
|
||||
.cache/
|
||||
|
||||
venv/
|
||||
|
||||
node_modules/
|
||||
data/
|
||||
db/
|
||||
@ -15,23 +11,19 @@ __pycache__/
|
||||
*.pyd
|
||||
*.pyw
|
||||
/plugins/
|
||||
|
||||
#config
|
||||
/config/
|
||||
!config/default.yml
|
||||
_config.yml
|
||||
config.yml
|
||||
config.example.yml
|
||||
|
||||
compile.bat
|
||||
src/resources/templates/latest-debug.html
|
||||
# vuepress
|
||||
.github
|
||||
|
||||
# mupy
|
||||
test.py
|
||||
line_count.py
|
||||
mypy.ini
|
||||
|
||||
# nuitka
|
||||
compile.bat
|
||||
src/resources/templates/latest-debug.html
|
||||
main.build/
|
||||
main.dist/
|
||||
main.exe
|
||||
@ -44,24 +36,3 @@ prompt.txt
|
||||
# js
|
||||
**/echarts.js
|
||||
.env
|
||||
|
||||
|
||||
# pdm
|
||||
.pdm-python
|
||||
.pdm-build
|
||||
dist
|
||||
|
||||
doc
|
||||
|
||||
mkdoc2.py
|
||||
result.json
|
||||
|
||||
# litedoc
|
||||
docs/zh/dev/api
|
||||
docs/en/dev/api
|
||||
mkdoc.bat
|
||||
|
||||
# vitepress
|
||||
docs/.vitepress/dist/
|
||||
docs/.vitepress/cache
|
||||
docs/.vitepress/.temp
|
@ -1,4 +1,4 @@
|
||||
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/python:3.10-slim-bullseye
|
||||
FROM python:3.11-bullseye
|
||||
|
||||
ENV TZ Asia/Shanghai
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
### 感谢
|
||||
- [NoneBot2](https://nonebot.dev)提供的框架支持
|
||||
- [nonebot-plugin-htmlrender](https://github.com/kexue-z/nonebot-plugin-htmlrender)提供的渲染功能
|
||||
- [nonebot-plugin-alconna](https://github.com/ArcletProject/nonebot-plugin-alconna)提供的命令解析功能
|
||||
|
||||
|
||||
|
@ -1,8 +0,0 @@
|
||||
nonebot:
|
||||
host: 127.0.0.1
|
||||
port: 20216
|
||||
command_start: ["", "/"]
|
||||
nickname: [ "liteyuki" ]
|
||||
default_language: zh
|
||||
driver: ~fastapi+~httpx+~websockets
|
||||
alconna_use_command_start: true
|
5
docs/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
node_modules/
|
||||
./.vuepress/.cache/
|
||||
./.vuepress/.temp/
|
||||
./.vuepress/dist/
|
@ -1,127 +0,0 @@
|
||||
// 共有配置项,导入index用
|
||||
|
||||
import {defineConfig} from 'vitepress'
|
||||
import {generateSidebar} from 'vitepress-sidebar';
|
||||
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
|
||||
import {zh} from "./zh";
|
||||
import {en} from "./en";
|
||||
|
||||
let defaultLocale = 'zh';
|
||||
const commonSidebarOptions = {
|
||||
collapsed: true,
|
||||
convertSameNameSubFileToGroupIndexPage: true,
|
||||
useTitleFromFrontmatter: true,
|
||||
useTitleFromFileHeading: true,
|
||||
useFolderTitleFromIndexFile: true,
|
||||
useFolderLinkFromIndexFile: true,
|
||||
includeFolderIndexFile: true,
|
||||
sortMenusByFrontmatterOrder: true,
|
||||
rootGroupText: 'LITEYUKIBOT',
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate sidebar config
|
||||
* multiple languages and sections
|
||||
* @returns {any[]}
|
||||
*/
|
||||
function generateSidebarConfig(): any[] {
|
||||
let sections = ["dev", "store", "usage", "deploy"]
|
||||
let languages = ['zh', 'en']
|
||||
let ret = []
|
||||
for (let language of languages) {
|
||||
for (let section of sections) {
|
||||
if (language === defaultLocale) {
|
||||
ret.push({
|
||||
basePath: `/${section}/`,
|
||||
scanStartPath: `${language}/${section}`,
|
||||
resolvePath: `/${section}/`,
|
||||
...commonSidebarOptions
|
||||
})
|
||||
} else {
|
||||
ret.push({
|
||||
basePath: `/${language}/${section}/`,
|
||||
scanStartPath: `${language}/${section}`,
|
||||
resolvePath: `/${language}/${section}/`,
|
||||
...commonSidebarOptions
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
console.log(generateSidebarConfig())
|
||||
|
||||
export const common = defineConfig({
|
||||
head: [
|
||||
// 配置favicon.ico
|
||||
['link', {rel: 'icon', type: 'image/x-icon', href: 'favicon.ico'}],
|
||||
['link', {rel: 'stylesheet', href: 'https://fonts.font.im/css?family=Cousine:400,400i,700,700i|Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i'}],
|
||||
],
|
||||
rewrites: {
|
||||
[`${defaultLocale}/:rest*`]: ":rest*",
|
||||
},
|
||||
themeConfig: {
|
||||
logo: {
|
||||
light: '/liteyuki.svg',
|
||||
dark: '/liteyuki-dark.svg',
|
||||
alt: 'LiteyukiBot Logo'
|
||||
},
|
||||
sidebar: generateSidebar(
|
||||
[
|
||||
...generateSidebarConfig()
|
||||
]
|
||||
),
|
||||
socialLinks: [
|
||||
{icon: 'github', link: 'https://github.com/LiteyukiStudio/LiteyukiBot'}
|
||||
],
|
||||
search: {
|
||||
provider: 'local',
|
||||
options: {
|
||||
locales: {
|
||||
root: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: '搜索文档',
|
||||
buttonAriaLabel: '打开搜索框',
|
||||
},
|
||||
modal: {
|
||||
noResultsText: '没有找到搜索结果',
|
||||
resetButtonTitle: '清除查询条件',
|
||||
footer: {
|
||||
selectText: '选择',
|
||||
navigateText: '切换',
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
en: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: 'Search',
|
||||
buttonAriaLabel: 'Search',
|
||||
},
|
||||
modal: {
|
||||
noResultsText: 'No results found',
|
||||
resetButtonTitle: 'Reset search query',
|
||||
footer: {
|
||||
selectText: 'Select',
|
||||
navigateText: 'Navigate',
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
sitemap: {
|
||||
hostname: 'https://bot.liteyuki.icu'
|
||||
},
|
||||
lastUpdated: true,
|
||||
locales: {
|
||||
root: {label: "简体中文", ...zh},
|
||||
en: {label: "English", ...en},
|
||||
},
|
||||
|
||||
})
|
@ -1,35 +0,0 @@
|
||||
import {defineConfig} from 'vitepress'
|
||||
import {ThemeConfig} from "./utils";
|
||||
|
||||
export const en = defineConfig({
|
||||
lang: "en-US",
|
||||
title: "LiteyukiBot",
|
||||
description: "A high-performance, easy-to-use chatbot framework and application",
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{text: 'Deploy', link: '/en/deploy/install'},
|
||||
{text: 'Usage', link: '/en/usage/basic'},
|
||||
{text: 'Extension', link: '/en/store/resource'},
|
||||
{text: 'Develop', link: '/en/dev/guide'},
|
||||
],
|
||||
docFooter: {
|
||||
prev: 'Prev Page',
|
||||
next: 'Next Page'
|
||||
},
|
||||
editLink: ThemeConfig.getEditLink(
|
||||
'Edit this page on GitHub',
|
||||
),
|
||||
footer: {
|
||||
message: 'Documentation built with <a href="https://vitepress.dev/">VitePress</a> | API references generated by <a href="https://github.com/LiteyukiStudio/litedoc">litedoc</a>',
|
||||
copyright: ThemeConfig.copyright
|
||||
},
|
||||
outline: ThemeConfig.getOutLine("Page Content"),
|
||||
|
||||
langMenuLabel: 'Language',
|
||||
returnToTopLabel: 'Back to top',
|
||||
sidebarMenuLabel: 'Menu',
|
||||
darkModeSwitchLabel: 'Theme',
|
||||
lightModeSwitchTitle: 'Light Mode',
|
||||
darkModeSwitchTitle: 'Dark Mode',
|
||||
},
|
||||
})
|
@ -1,6 +0,0 @@
|
||||
import {defineConfig} from "vitepress";
|
||||
|
||||
import {common} from './common'
|
||||
export default defineConfig({
|
||||
...common,
|
||||
})
|
@ -1,40 +0,0 @@
|
||||
// 本模块储存一些工具函数和引用
|
||||
|
||||
/**
|
||||
* GetEditLink Options
|
||||
* @param text Edit link text
|
||||
*/
|
||||
export const ThemeConfig = {
|
||||
getEditLink: (editPageText: string): { pattern: (params: { filePath: string; }) => string; text: string; } => {
|
||||
return {
|
||||
pattern: ({filePath}: { filePath: string; }): string => {
|
||||
// 匹配 /dev/api或 /{lang}/dev/api
|
||||
const regex = /^[^\/]+\/dev\/api/;
|
||||
console.log(filePath);
|
||||
if (regex.test(filePath)) {
|
||||
// remove {lang}/api prefix
|
||||
filePath = filePath.replace(regex, '')
|
||||
.replace('index.md', '__init__.py')
|
||||
.replace('.md', '.py');
|
||||
// 若文件名(不含扩展)和上级文件夹相同,返回文件夹/__init__.py
|
||||
if (filePath.split('/').pop().split('.')[0] === filePath.split('/').slice(-2, -1)[0]) {
|
||||
filePath = filePath.split('/').slice(0, -1).join('/') + '/__init__.py';
|
||||
}
|
||||
return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki${filePath}`;
|
||||
} else {
|
||||
return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/docs/${filePath}`;
|
||||
}
|
||||
},
|
||||
text: editPageText
|
||||
};
|
||||
},
|
||||
|
||||
getOutLine: (label: string): { label: string; level: [number, number]; } => {
|
||||
return {
|
||||
label: label,
|
||||
level: [2, 6]
|
||||
};
|
||||
},
|
||||
|
||||
copyright: 'Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved'
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
import {defineConfig} from 'vitepress'
|
||||
import {ThemeConfig} from "./utils";
|
||||
|
||||
export const zh = defineConfig({
|
||||
lang: "zh-Hans",
|
||||
title: "轻雪机器人",
|
||||
description: "一个综合性的机器人应用及管理框架",
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{text: '部署', link: '/deploy/install'},
|
||||
{text: '使用', link: '/usage/basic'},
|
||||
{text: '扩展', link: '/store/resource'},
|
||||
{text: '开发', link: '/dev/guide'},
|
||||
],
|
||||
docFooter: {
|
||||
prev: '上一页',
|
||||
next: '下一页'
|
||||
},
|
||||
editLink: ThemeConfig.getEditLink(
|
||||
'在 GitHub 上编辑此页',
|
||||
),
|
||||
footer: {
|
||||
message: '文档由 <a href="https://vitepress.dev/">VitePress</a> 构建 | API引用由 <a href="https://github.com/LiteyukiStudio/litedoc">litedoc</a> 生成',
|
||||
copyright: ThemeConfig.copyright
|
||||
},
|
||||
outline: ThemeConfig.getOutLine("页面内容"),
|
||||
|
||||
langMenuLabel: '语言',
|
||||
returnToTopLabel: '返回顶部',
|
||||
sidebarMenuLabel: '菜单',
|
||||
darkModeSwitchLabel: '主题',
|
||||
lightModeSwitchTitle: '轻色模式',
|
||||
darkModeSwitchTitle: '深色模式',
|
||||
},
|
||||
})
|
@ -1,18 +0,0 @@
|
||||
import DefaultTheme from 'vitepress/theme'
|
||||
import './liteyuki.css'
|
||||
|
||||
import StatsBar from '../../components/StatsBar.vue'
|
||||
import PluginStore from '../../components/PluginStore.vue'
|
||||
import ResStore from '../../components/ResStore.vue'
|
||||
|
||||
|
||||
|
||||
export default {
|
||||
extends: DefaultTheme,
|
||||
enhanceApp({ app }) {
|
||||
app.component('StatsBar', StatsBar);
|
||||
app.component('PluginStore', PluginStore);
|
||||
app.component('ResStore', ResStore);
|
||||
},
|
||||
Layout: StatsBar
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
:root {
|
||||
--vp-c-brand-1: #149ef8;
|
||||
--vp-c-brand-2: #0434ad;
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #34a3fe 30%, #8d44ff);
|
||||
|
||||
--vp-home-hero-image-background-image: linear-gradient(-45deg, #d0e9ff 50%, #a2d8f4 50%);
|
||||
--vp-home-hero-image-filter: blur(44px);
|
||||
|
||||
--vp-c-gray-1: #eee;
|
||||
--vp-c-gray-2: #aaa;
|
||||
--border-radius-1: 10px;
|
||||
--border-radius-2: 20px;
|
||||
--border-radius-3: 40px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.dark {
|
||||
--vp-home-hero-image-background-image: linear-gradient(-45deg, #004785 50%, #0374ad 50%);
|
||||
--vp-c-gray-1: #333;
|
||||
--vp-c-gray-2: #666;
|
||||
}
|
||||
|
||||
.tab-buttons {
|
||||
padding: 7px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
height: 60%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
.tab-title {
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.item-search-box {
|
||||
border-radius: 100px;
|
||||
width: 80%;
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.search-box-div {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.item-search-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.item-card {
|
||||
position: relative;
|
||||
border-radius: 15px;
|
||||
background-color: var(--vp-c-gray-1);
|
||||
height: 160px;
|
||||
padding: 16px;
|
||||
margin: 10px;
|
||||
box-sizing: border-box;
|
||||
transition: background 0.3s ease;
|
||||
}
|
||||
|
||||
.item-name {
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.item-description {
|
||||
color: var(--vp-c-gray-2);
|
||||
font-size: 13px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.author-name {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
border-radius: 50%;
|
||||
margin: 0 10px;
|
||||
}
|
20
docs/.vuepress/client.js
Normal file
@ -0,0 +1,20 @@
|
||||
import {defineClientConfig} from "vuepress/client";
|
||||
|
||||
import resourceStoreComp from "./components/ResStore.vue";
|
||||
import pluginStoreComp from "./components/PluginStore.vue";
|
||||
import dashComp from "./components/Dash.vue";
|
||||
import homeComp from "./components/Home.vue";
|
||||
import geoComp from "./components/Geo.vue";
|
||||
|
||||
// import ElementPlus from 'element-plus';
|
||||
|
||||
export default defineClientConfig({
|
||||
enhance: ({app, router, siteData}) => {
|
||||
app.component("homeComp", homeComp);
|
||||
app.component("dashComp", dashComp);
|
||||
app.component("resourceStoreComp", resourceStoreComp);
|
||||
app.component("pluginStoreComp", pluginStoreComp);
|
||||
app.component("geoComp", geoComp);
|
||||
// app.use(ElementPlus);
|
||||
},
|
||||
});
|
@ -2,9 +2,6 @@
|
||||
<div class="item-card">
|
||||
<div class="item-name">{{ props.item.name }}</div>
|
||||
<div class="item-description">{{ props.item.desc }}</div>
|
||||
<div class="tags">
|
||||
<span class="tag" v-for="tag in props.item.tags" :key="tag" :style=getTagStyle(tag.color)>{{ tag.label }}</span>
|
||||
</div>
|
||||
<div class="item-bar">
|
||||
<!-- 三个可点击svg,一个github,一个下载,一个可点击"https://github.com/{{ username }}.png?size=80"个人头像配上id-->
|
||||
<a :href=props.item.homepage class="btn">
|
||||
@ -48,26 +45,22 @@ const copyToClipboard = () => {
|
||||
})
|
||||
}
|
||||
|
||||
const getTagStyle = (backgroundColor: string) => {
|
||||
// 将颜色值转换为 RGB 格式
|
||||
const rgb = backgroundColor.replace(/^#/, '');
|
||||
const [r, g, b] = rgb.match(/.{2}/g).map(x => parseInt(x, 16));
|
||||
|
||||
// 计算亮度
|
||||
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
|
||||
|
||||
// 根据亮度决定文字颜色
|
||||
return {
|
||||
backgroundColor: backgroundColor,
|
||||
color: brightness > 128 ? '#000' : '#fff'
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// 复制到剪贴板的函数
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.item-card {
|
||||
position: relative;
|
||||
border-radius: 15px;
|
||||
background-color: #00000011;
|
||||
height: 160px;
|
||||
padding: 16px;
|
||||
margin: 10px;
|
||||
box-sizing: border-box;
|
||||
transition: background 0.3s ease;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-right: 15px;
|
||||
}
|
||||
@ -82,11 +75,43 @@ button {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.copy-btn:hover {
|
||||
color: #111;
|
||||
}
|
||||
|
||||
.item-name {
|
||||
color: #111;
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.item-description {
|
||||
color: #333;
|
||||
font-size: 12px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
color: $themeColor;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.author-name {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
border-radius: 50%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.item-bar {
|
||||
position: absolute;
|
||||
@ -98,12 +123,4 @@ button {
|
||||
justify-content: space-between;
|
||||
color: #00000055;
|
||||
}
|
||||
|
||||
.tag {
|
||||
display: inline-block;
|
||||
padding: 0 5px;
|
||||
margin-right: 5px;
|
||||
border-radius: 5px;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
62
docs/.vuepress/components/PluginStore.vue
Normal file
@ -0,0 +1,62 @@
|
||||
<script setup lang="ts">
|
||||
import {computed, ref} from 'vue'
|
||||
import ItemCard from './PluginItemCard.vue'
|
||||
|
||||
|
||||
let filteredItems = computed(() => {
|
||||
if (!search.value) {
|
||||
return items.value
|
||||
}
|
||||
return items.value.filter(item =>
|
||||
item.name.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.desc.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.author.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.module_name.toLowerCase().includes(search.value.toLowerCase())
|
||||
)
|
||||
})
|
||||
// 插件商店Nonebot
|
||||
let items = ref([])
|
||||
let search = ref('')
|
||||
// 从官方拉取
|
||||
fetch("/assets/plugins.json")
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
items.value = data
|
||||
})
|
||||
.catch(error => console.error(error))
|
||||
|
||||
//追加
|
||||
fetch('https://registry.nonebot.dev/plugins.json')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
items.value = items.value.concat(data)
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="market">
|
||||
<h1>插件商店</h1>
|
||||
<p>内容来自<a href="https://nonebot.dev/store/plugins">NoneBot插件商店</a>和轻雪商店,在此仅作引用,具体请访问NoneBot插件商店</p>
|
||||
<!-- 搜索框-->
|
||||
<div class="search-box-div"><input class="item-search-box" type="text" placeholder="搜索插件" v-model="search"/></div>
|
||||
<div class="items">
|
||||
<!-- 使用filteredItems来布局商品 -->
|
||||
<ItemCard v-for="item in filteredItems" :key="item.id" :item="item"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
h1 {
|
||||
color: #00a6ff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.items {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
</style>
|
@ -28,8 +28,32 @@ const props = defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.item-card {
|
||||
position: relative;
|
||||
border-radius: 15px;
|
||||
background-color: #00000011;
|
||||
height: 160px;
|
||||
padding: 16px;
|
||||
margin: 10px;
|
||||
box-sizing: border-box;
|
||||
transition: background 0.3s ease;
|
||||
}
|
||||
|
||||
.item-card:hover {
|
||||
border: 2px solid $themeColor;
|
||||
}
|
||||
|
||||
.item-name {
|
||||
color: $themeColor;
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.item-description {
|
||||
color: #333;
|
||||
font-size: 15px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 20px;
|
||||
@ -37,9 +61,21 @@ const props = defineProps({
|
||||
color: $themeColor;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.author-name {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
.avatar {
|
||||
border-radius: 50%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.item-bar {
|
||||
position: absolute;
|
@ -2,7 +2,6 @@
|
||||
import {computed, ref} from 'vue'
|
||||
import ItemCard from './ResItemCard.vue'
|
||||
import * as url from "node:url";
|
||||
import {getTextRef} from "./scripts/i18n";
|
||||
|
||||
// 从public/assets/resources.json加载插件
|
||||
let filteredItems = computed(() => {
|
||||
@ -18,7 +17,7 @@ let filteredItems = computed(() => {
|
||||
// 插件商店Nonebot
|
||||
let items = ref([])
|
||||
let search = ref('')
|
||||
fetch("/resources.json")
|
||||
fetch("/assets/resources.json")
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
items.value = data
|
||||
@ -30,8 +29,8 @@ fetch("/resources.json")
|
||||
|
||||
<template>
|
||||
<div class="market">
|
||||
<h1>{{ getTextRef('resourceStore') }}</h1>
|
||||
<div class="search-box-div"><input class="item-search-box" type="text" :placeholder="getTextRef('search')" v-model="search" /></div>
|
||||
<h1>主题/资源商店</h1>
|
||||
<div class="search-box-div"><input class="item-search-box" type="text" placeholder="搜索资源" v-model="search" /></div>
|
||||
<div class="items">
|
||||
<!-- 使用filteredItems来布局商品 -->
|
||||
<ItemCard v-for="item in filteredItems" :key="item.id" :item="item"/>
|
31
docs/.vuepress/config.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import {defineUserConfig} from "vuepress";
|
||||
import theme from "./theme.js";
|
||||
import viteBundler from "@vuepress/bundler-vite";
|
||||
|
||||
export default defineUserConfig({
|
||||
base: "/",
|
||||
|
||||
lang: "zh-CN",
|
||||
title: "LiteyukiBot 轻雪机器人",
|
||||
description: "LiteyukiBot | 轻雪机器人 | An OneBot Standard ChatBot | 一个OneBot标准的聊天机器人",
|
||||
head: [
|
||||
// 设置 favor.ico,.vuepress/public 下
|
||||
["script", {src: "/js/style.js", "type": "module"}],
|
||||
["script", {src: "/js/get_data.js", "type": "module"}],
|
||||
['link', {rel: 'icon', href: 'https://cdn.liteyuki.icu/favicon.ico'},],
|
||||
|
||||
['link', {rel: 'stylesheet', href: 'https://cdn.bootcdn.net/ajax/libs/firacode/6.2.0/fira_code.min.css'}],
|
||||
|
||||
[
|
||||
"meta",
|
||||
{
|
||||
name: "viewport",
|
||||
content: "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
theme,
|
||||
// 和 PWA 一起启用
|
||||
// shouldPrefetch: false,
|
||||
});
|
20
docs/.vuepress/navbar.ts
Normal file
@ -0,0 +1,20 @@
|
||||
import {navbar} from "vuepress-theme-hope";
|
||||
|
||||
export default navbar([
|
||||
"/",
|
||||
{
|
||||
text: "安装及部署",
|
||||
link: "/deployment/",
|
||||
prefix: "deployment/",
|
||||
},
|
||||
{
|
||||
text: "使用及开发",
|
||||
link: "/usage/",
|
||||
prefix: "usage/",
|
||||
},
|
||||
{
|
||||
text: "资源及插件",
|
||||
link: "/store/resource",
|
||||
prefix: "store/",
|
||||
}
|
||||
]);
|
BIN
docs/.vuepress/public/assets/fonts/ColorTube.woff
Normal file
BIN
docs/.vuepress/public/assets/icon/apple-icon-152.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
docs/.vuepress/public/assets/icon/chrome-192.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
docs/.vuepress/public/assets/icon/chrome-512.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/.vuepress/public/assets/icon/chrome-mask-192.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
docs/.vuepress/public/assets/icon/chrome-mask-512.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/.vuepress/public/assets/icon/guide-maskable.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
docs/.vuepress/public/assets/icon/ms-icon-144.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
1
docs/.vuepress/public/assets/image/advanced.svg
Normal file
After Width: | Height: | Size: 26 KiB |
1
docs/.vuepress/public/assets/image/blog.svg
Normal file
After Width: | Height: | Size: 9.8 KiB |
1
docs/.vuepress/public/assets/image/box.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" class="icon" viewBox="0 0 1024 1024"><path fill="#FDD7AD" d="M512 0 335.448 88.272l-70.616 35.312-70.624 35.312-176.552 88.28v529.648L512 1024l494.344-247.176V247.176z"/><path fill="#CBB292" d="m759.176 370.76-70.624 35.304-494.344-247.168 70.624-35.312zM512 494.344V1024L17.656 776.824V247.176z"/><path fill="#7F6E5D" d="M1006.344 247.168v529.656L512 1024V494.344l176.552-88.28v70.624l141.24-70.624v-70.616z"/><path fill="#7F5B53" d="M829.792 335.448v70.624L688.56 476.68v-70.624z"/><path fill="#CBB292" d="m829.792 335.448-70.624 35.312-494.344-247.176 70.624-35.312z"/><path fill="#2C3E50" d="m682.52 550.32 157.032-78.512a17.656 17.656 0 0 1 25.552 15.792v9.32a52.96 52.96 0 0 1-29.28 47.376L678.8 622.8a17.656 17.656 0 0 1-25.552-15.792v-9.312a52.96 52.96 0 0 1 29.28-47.376z"/></svg>
|
After Width: | Height: | Size: 854 B |
1
docs/.vuepress/public/assets/image/features.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"><defs><linearGradient id="a" x1="522.593" x2="522.593" y1="-70.302" y2="-335.937" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#fe5d5a" stop-opacity=".1"/><stop offset=".908" stop-color="#ef1220" stop-opacity=".5"/></linearGradient><linearGradient id="b" x1="107.12" x2="935.038" y1="-373.67" y2="-373.67" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#ff5e59"/><stop offset="1" stop-color="#f01422"/></linearGradient><linearGradient id="c" x1="519.405" x2="519.405" y1="-195.547" y2="-726.816" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#ffe2e2"/><stop offset=".888" stop-color="#ff8e8e"/></linearGradient><linearGradient id="d" x1="191.5" x2="483.9" y1="-564.9" y2="-564.9" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#e92700" stop-opacity=".3"/><stop offset=".013" stop-color="#ef1220" stop-opacity=".2"/></linearGradient><linearGradient id="e" x1="403.502" x2="253.121" y1="-847.32" y2="-586.853" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#ff5e59"/><stop offset=".201" stop-color="#f01422"/></linearGradient><linearGradient id="f" x1="330.485" x2="330.485" y1="-801.787" y2="-625.789" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#ff5e59"/><stop offset=".201" stop-color="#f01422"/></linearGradient><linearGradient id="g" x1="397.351" x2="256.845" y1="-647.231" y2="-890.596" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#ffa6a6"/><stop offset=".908" stop-color="#ff6b5d"/></linearGradient></defs><path fill="url(#a)" d="M501.2 662.3 327.6 763.8c-13.9 8.1-14.2 28.1-.5 36.7l179.1 97.7c10.9 5.9 24.1 5.9 34.9-.1l177-97.9c13.6-8.5 13.4-28.3-.3-36.5l-168.4-101c-14.8-9-33.3-9.1-48.2-.4Z"/><path fill="#f63037" d="m110.2 525.7-3.1 77.6 57.5 18.5L184 519.4Z"/><path fill="url(#b)" d="m476.6 363.5-328 154.6c-21 42.7-55.4 65.4-35.5 103.5 4.2 8 9.4 14.4 15.4 18.1l358.2 195.5c21.8 11.9 48.1 11.8 69.8-.2l354-195.8c27.2-16.9 34.8-90.3 7.3-106.8L573 364.1c-29.7-17.8-66.6-18-96.4-.6Z"/><path fill="url(#c)" d="M476.6 298.7 129.4 501.6c-27.8 16.3-28.4 56.3-1 73.3l358.2 195.5c21.8 11.9 48.1 11.8 69.8-.2l354-195.8c27.2-16.9 26.9-56.6-.6-73.1L573 299.3c-29.7-17.8-66.6-18-96.4-.6Z"/><path fill="#ff8989" fill-opacity=".31" d="m481.2 387.8 39.4 123.4c1.1 3.4 4 6 7.6 6.6l173.4 30.4-33-118.3c-.9-3.3-3.6-5.8-7-6.5l-180.4-35.6ZM327 499.2l40.4 101.1L496.7 525c2.5-1.5 3.7-4.5 2.7-7.3l-36-106.8-127.6 65c-8.6 4.3-12.4 14.4-8.8 23.3ZM523.8 540.5l-140.3 77.2L567.2 659c3.2.7 6.6.1 9.3-1.6l134.6-85-174.7-33.8c-4.3-1-8.7-.3-12.6 1.9Z"/><path fill="url(#d)" d="M483.9 406.1c0 35.46-65.46 64.2-146.2 64.2s-146.2-28.74-146.2-64.2c0-35.46 65.46-64.2 146.2-64.2s146.2 28.74 146.2 64.2Z"/><path fill="url(#e)" d="m254.2 188.4-123 83.1c-1.8 1.3-2.6 3.6-1.8 5.7l39.1 110.6c.6 1.7 2 2.9 3.8 3.2l221.8 40.5c1.3.3 2.7-.1 3.7-.8l131.7-93.6c1.9-1.4 2.6-3.9 1.7-6.1l-49.4-107c-.6-1.5-2.1-2.6-3.7-2.8l-220.3-33.5c-1.3-.2-2.6.1-3.6.7Z"/><path fill="url(#f)" d="m528.6 274.5 3 59.1-205 65.6-177.2-72.7-20-49.2 1.9-54.1Z"/><path fill="url(#g)" d="m250.6 138-112.3 76c-6 4.1-8.5 11.7-6.1 18.5l34.2 96.6c1.9 5.4 6.6 9.3 12.1 10.4l211 38.5c4.3.7 8.6-.2 12.1-2.7l120.5-85.5c6.3-4.4 8.4-12.7 5.3-19.7l-43.1-93.5c-2.2-4.9-6.8-8.3-12.1-9.1L262 135.6c-4-.7-8 .2-11.4 2.4Z"/><path fill="#fff" d="m419.8 252.8-79-11-29-57.7c-3.8-7.6-13.2-10.7-20.8-6.9-7.6 3.8-10.7 13.2-6.9 20.8l26.6 52.9-61.8 42.2c-7.1 4.8-8.9 14.5-4.1 21.5 3 4.4 7.9 6.8 12.8 6.8 3 0 6-.9 8.7-2.7l68-46.4 81.1 11.2c.7.1 1.4.1 2.1.1 7.6 0 14.3-5.6 15.3-13.4 1.4-8.4-4.5-16.2-13-17.4Z"/></svg>
|
After Width: | Height: | Size: 3.6 KiB |
1
docs/.vuepress/public/assets/image/github-dark.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>
|
After Width: | Height: | Size: 963 B |
1
docs/.vuepress/public/assets/image/github-light.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#fff"/></svg>
|
After Width: | Height: | Size: 960 B |
1
docs/.vuepress/public/assets/image/layout.svg
Normal file
After Width: | Height: | Size: 9.0 KiB |
1
docs/.vuepress/public/assets/image/markdown.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" class="icon" viewBox="0 0 1536 1024"><path fill="#1296db" d="M1425.067.256H110.933A110.933 110.933 0 0 0 0 110.848v723.627a110.933 110.933 0 0 0 110.933 110.933h1314.39c61.269 0 110.933-49.75 110.677-110.677V110.848A110.933 110.933 0 0 0 1425.067.256z" class="selected" data-spm-anchor-id="a313x.7781069.0.i4"/><path fill="#FFF" d="M664.747 723.797V435.883L517.12 620.373l-147.456-184.49v288l-148.053-67.158V221.781h147.626l147.627 184.576 147.541-184.576h147.627v565.76z"/><path d="M1024 0h426.667A85.333 85.333 0 0 1 1536 85.333v768a85.333 85.333 0 0 1-85.333 85.334H1024V0z" opacity=".1"/><path fill="#FFF" d="m1256.96 731.307-170.667-216.491h113.75V304.64h113.749v210.176h113.835z" opacity=".5"/></svg>
|
After Width: | Height: | Size: 771 B |
23
docs/.vuepress/public/assets/plugins.json
Normal file
@ -0,0 +1,23 @@
|
||||
[
|
||||
{
|
||||
"module_name": "nonebot_plugin_status",
|
||||
"project_link": "nonebot-plugin-status",
|
||||
"name": "测试",
|
||||
"desc": "测试",
|
||||
"author": "snowykami",
|
||||
"homepage": "https://github.com/nonebot/plugin-status",
|
||||
"tags": [
|
||||
{
|
||||
"label": "server",
|
||||
"color": "#aeeaa8"
|
||||
}
|
||||
],
|
||||
"is_official": true,
|
||||
"type": "application",
|
||||
"supported_adapters": null,
|
||||
"valid": true,
|
||||
"version": "0.8.1",
|
||||
"time": "2024-03-04T06:57:10.250823Z",
|
||||
"skip_test": false
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
291
docs/.vuepress/public/full.svg
Normal file
@ -0,0 +1,291 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1366 768">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: url(#_未命名的渐变_8);
|
||||
}
|
||||
|
||||
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9, .cls-10, .cls-11, .cls-12, .cls-13, .cls-14, .cls-15, .cls-16, .cls-17, .cls-18, .cls-19, .cls-20, .cls-21, .cls-22, .cls-23, .cls-24, .cls-25, .cls-26, .cls-27, .cls-28, .cls-29, .cls-30, .cls-31, .cls-32, .cls-33, .cls-34 {
|
||||
stroke-width: 0px;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: url(#_未命名的渐变_9-3);
|
||||
}
|
||||
|
||||
.cls-3 {
|
||||
fill: url(#_未命名的渐变_11);
|
||||
}
|
||||
|
||||
.cls-4 {
|
||||
fill: url(#_未命名的渐变_11-4);
|
||||
}
|
||||
|
||||
.cls-5 {
|
||||
fill: url(#_未命名的渐变_5);
|
||||
}
|
||||
|
||||
.cls-6 {
|
||||
fill: url(#_未命名的渐变_55);
|
||||
}
|
||||
|
||||
.cls-7 {
|
||||
fill: url(#_未命名的渐变_11-5);
|
||||
}
|
||||
|
||||
.cls-8 {
|
||||
fill: url(#_未命名的渐变_65);
|
||||
}
|
||||
|
||||
.cls-9 {
|
||||
fill: url(#_未命名的渐变_3-2);
|
||||
}
|
||||
|
||||
.cls-10 {
|
||||
fill: url(#_未命名的渐变_7-3);
|
||||
}
|
||||
|
||||
.cls-11 {
|
||||
fill: url(#_未命名的渐变_7);
|
||||
}
|
||||
|
||||
.cls-12 {
|
||||
fill: url(#_未命名的渐变_58);
|
||||
}
|
||||
|
||||
.cls-13 {
|
||||
fill: url(#_未命名的渐变_3-3);
|
||||
}
|
||||
|
||||
.cls-14 {
|
||||
fill: url(#_未命名的渐变_67);
|
||||
}
|
||||
|
||||
.cls-15 {
|
||||
fill: url(#_未命名的渐变_11-2);
|
||||
}
|
||||
|
||||
.cls-16 {
|
||||
fill: url(#_未命名的渐变_72);
|
||||
}
|
||||
|
||||
.cls-17 {
|
||||
fill: url(#_未命名的渐变_71);
|
||||
}
|
||||
|
||||
.cls-18, .cls-35 {
|
||||
fill: #fff;
|
||||
}
|
||||
|
||||
.cls-19 {
|
||||
fill: url(#_未命名的渐变_4);
|
||||
}
|
||||
|
||||
.cls-20 {
|
||||
fill: url(#_未命名的渐变_3);
|
||||
}
|
||||
|
||||
.cls-21 {
|
||||
fill: url(#_未命名的渐变_240);
|
||||
}
|
||||
|
||||
.cls-22 {
|
||||
fill: url(#_未命名的渐变_9-2);
|
||||
}
|
||||
|
||||
.cls-23 {
|
||||
fill: url(#_未命名的渐变_6);
|
||||
}
|
||||
|
||||
.cls-24 {
|
||||
fill: url(#_未命名的渐变_9-4);
|
||||
}
|
||||
|
||||
.cls-25 {
|
||||
fill: url(#_未命名的渐变_66);
|
||||
}
|
||||
|
||||
.cls-26 {
|
||||
fill: url(#_未命名的渐变_7-2);
|
||||
}
|
||||
|
||||
.cls-35 {
|
||||
stroke: #fff;
|
||||
stroke-miterlimit: 10;
|
||||
}
|
||||
|
||||
.cls-27 {
|
||||
fill: url(#_未命名的渐变_9);
|
||||
}
|
||||
|
||||
.cls-28 {
|
||||
fill: url(#_未命名的渐变_9-5);
|
||||
}
|
||||
|
||||
.cls-29 {
|
||||
fill: url(#_未命名的渐变_68);
|
||||
}
|
||||
|
||||
.cls-30 {
|
||||
fill: url(#_未命名的渐变_11-3);
|
||||
}
|
||||
|
||||
.cls-31 {
|
||||
fill: url(#_未命名的渐变_69);
|
||||
}
|
||||
|
||||
.cls-32 {
|
||||
fill: #9cf;
|
||||
}
|
||||
|
||||
.cls-33 {
|
||||
fill: url(#_未命名的渐变_58-2);
|
||||
}
|
||||
|
||||
.cls-34 {
|
||||
fill: url(#_未命名的渐变_4-2);
|
||||
}
|
||||
</style>
|
||||
<linearGradient id="_未命名的渐变_11" data-name="未命名的渐变 11" x1="445.89" y1="235.02" x2="528.25" y2="235.02" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#73fff1"/>
|
||||
<stop offset="1" stop-color="#5cefff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_11-2" data-name="未命名的渐变 11" x1="549.98" y1="292.99" x2="584.05" y2="292.99" xlink:href="#_未命名的渐变_11"/>
|
||||
<linearGradient id="_未命名的渐变_11-3" data-name="未命名的渐变 11" x1="553" y1="212" x2="585" y2="212" xlink:href="#_未命名的渐变_11"/>
|
||||
<linearGradient id="_未命名的渐变_11-4" data-name="未命名的渐变 11" x1="609.82" y1="260.3" x2="698.34" y2="260.3" xlink:href="#_未命名的渐变_11"/>
|
||||
<linearGradient id="_未命名的渐变_11-5" data-name="未命名的渐变 11" x1="702.75" y1="282.24" x2="784.94" y2="282.24" xlink:href="#_未命名的渐变_11"/>
|
||||
<linearGradient id="_未命名的渐变_240" data-name="未命名的渐变 240" x1="835" y1="294" x2="960" y2="294" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#eadeff"/>
|
||||
<stop offset=".28" stop-color="#e0efff"/>
|
||||
<stop offset=".43" stop-color="#d9ecff"/>
|
||||
<stop offset=".59" stop-color="#aedbff"/>
|
||||
<stop offset="1" stop-color="#00d7ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_9" data-name="未命名的渐变 9" x1="664.92" y1="424.34" x2="766.76" y2="424.34" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#2ebbff"/>
|
||||
<stop offset="1" stop-color="#006bff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_9-2" data-name="未命名的渐变 9" x1="761.74" y1="467.72" x2="842.05" y2="467.72" xlink:href="#_未命名的渐变_9"/>
|
||||
<linearGradient id="_未命名的渐变_9-3" data-name="未命名的渐变 9" x1="951.96" y1="394" x2="977.04" y2="394" xlink:href="#_未命名的渐变_9"/>
|
||||
<linearGradient id="_未命名的渐变_9-4" data-name="未命名的渐变 9" x1="952.19" y1="456.86" x2="977.56" y2="456.86" xlink:href="#_未命名的渐变_9"/>
|
||||
<linearGradient id="_未命名的渐变_9-5" data-name="未命名的渐变 9" x1="848.96" y1="437.15" x2="934.09" y2="437.15" xlink:href="#_未命名的渐变_9"/>
|
||||
<linearGradient id="_未命名的渐变_4" data-name="未命名的渐变 4" x1="418.01" y1="402.81" x2="470.25" y2="402.81" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#6445ff"/>
|
||||
<stop offset="1" stop-color="#5c86ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_4-2" data-name="未命名的渐变 4" x1="445.81" y1="464.45" x2="466.06" y2="464.45" xlink:href="#_未命名的渐变_4"/>
|
||||
<linearGradient id="_未命名的渐变_72" data-name="未命名的渐变 72" x1="634.1" y1="393.61" x2="649.62" y2="390.81" gradientTransform="translate(-320.36 273.4) rotate(-11.09) scale(1.44 .77)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#c4aeff"/>
|
||||
<stop offset=".43" stop-color="#ce9fff"/>
|
||||
<stop offset=".55" stop-color="#af8eff"/>
|
||||
<stop offset=".72" stop-color="#7d74ff"/>
|
||||
<stop offset=".9" stop-color="#6333ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_58" data-name="未命名的渐变 58" x1="620.28" y1="400.01" x2="636.02" y2="397.18" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#b1ccff"/>
|
||||
<stop offset=".34" stop-color="#b8c0ff"/>
|
||||
<stop offset=".94" stop-color="#cba2ff"/>
|
||||
<stop offset="1" stop-color="#ce9fff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_3" data-name="未命名的渐变 3" x1="469.91" y1="455" x2="478" y2="455" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#5c86ff"/>
|
||||
<stop offset="1" stop-color="#64a2ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_3-2" data-name="未命名的渐变 3" x1="470.95" y1="475.89" x2="477.01" y2="475.89" xlink:href="#_未命名的渐变_3"/>
|
||||
<linearGradient id="_未命名的渐变_65" data-name="未命名的渐变 65" x1="485.09" y1="467.16" x2="502.74" y2="469.91" gradientTransform="translate(-109.75 153.43) rotate(-15.93)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset=".11" stop-color="#64a2ff"/>
|
||||
<stop offset=".28" stop-color="#62a6ff"/>
|
||||
<stop offset="1" stop-color="#5cb5ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_66" data-name="未命名的渐变 66" x1="506.01" y1="471.79" x2="532.2" y2="471.17" gradientTransform="translate(117.47 -103.02) rotate(12.81)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#5cb5ff"/>
|
||||
<stop offset="1" stop-color="#74e0ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_68" data-name="未命名的渐变 68" x1="559.81" y1="469.17" x2="583.24" y2="468.62" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#9cd1ff"/>
|
||||
<stop offset="1" stop-color="#bae0ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_71" data-name="未命名的渐变 71" x1="584.93" y1="460.83" x2="609.05" y2="460.83" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#a6d3ff"/>
|
||||
<stop offset=".7" stop-color="#b1ccff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_58-2" data-name="未命名的渐变 58" x1="605.79" y1="473.79" x2="643.63" y2="466.98" xlink:href="#_未命名的渐变_58"/>
|
||||
<linearGradient id="_未命名的渐变_3-3" data-name="未命名的渐变 3" x1="479.91" y1="397.6" x2="514.17" y2="397.6" xlink:href="#_未命名的渐变_3"/>
|
||||
<linearGradient id="_未命名的渐变_5" data-name="未命名的渐变 5" x1="525.59" y1="402.28" x2="558.08" y2="402.28" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#64a2ff"/>
|
||||
<stop offset="1" stop-color="#5cc9ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_69" data-name="未命名的渐变 69" x1="583.43" y1="398.41" x2="604.15" y2="398.41" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#84c9ff"/>
|
||||
<stop offset=".42" stop-color="#b1ccff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_67" data-name="未命名的渐变 67" x1="531.83" y1="464.83" x2="558.02" y2="464.22" gradientTransform="translate(-86.67 132.78) rotate(-12.37)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#74e0ff"/>
|
||||
<stop offset=".56" stop-color="#8dd6ff"/>
|
||||
<stop offset="1" stop-color="#9cd1ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_6" data-name="未命名的渐变 6" x1="531" y1="411" x2="539" y2="411" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#64a2ff"/>
|
||||
<stop offset="1" stop-color="#5cbfff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_7" data-name="未命名的渐变 7" x1="553.98" y1="380.5" x2="559" y2="380.5" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#64ccff"/>
|
||||
<stop offset="1" stop-color="#84c9ff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_7-2" data-name="未命名的渐变 7" x1="546.98" y1="383.5" x2="552" y2="383.5" xlink:href="#_未命名的渐变_7"/>
|
||||
<linearGradient id="_未命名的渐变_7-3" data-name="未命名的渐变 7" y1="404.39" x2="561.98" y2="404.39" xlink:href="#_未命名的渐变_7"/>
|
||||
<linearGradient id="_未命名的渐变_8" data-name="未命名的渐变 8" x1="578.42" y1="391.26" x2="586.42" y2="391.26" gradientUnits="userSpaceOnUse">
|
||||
<stop offset=".01" stop-color="#84c9ff"/>
|
||||
<stop offset="1" stop-color="#b1ccff"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="_未命名的渐变_55" data-name="未命名的渐变 55" x1="623.35" y1="385.26" x2="623.75" y2="385.26" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#b1c9ff"/>
|
||||
<stop offset=".42" stop-color="#b1ccff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="_图层_3" data-name="图层 3">
|
||||
<path class="cls-32" d="m447,485c11.04,8.56,30.35.82,33,0,14.37-4.43,15.38-15.33,26-15,10.44.33,13.16,10.98,24,10,6.48-.59,7.04-4.53,16-6,8-1.31,8.66,1.66,17,1,12.76-1.01,15.73-8.33,24-6,8.42,4.47,11.58,6.51,22,5,0,0,11.3-1.75,32-10,1.42-9.07,4.72,6.12,11.99,12,10.1,9.09,19.95-.4,31,8,10.86,8.26,13.5,26.66,13,31-1.65,4.39,6.37,10.16,6,10-4.41-.77-20.72-10.82-25-11-6.8-1.26-15.53-2.26-24-5-17.1-5.24-15.17-10.82-34-10-7.53.04-6.69-.47-12,1-2.54-.23-9.74.73-13-1-18.29-11.87-9.94,11.78-36,3-9.47,1.86-14.72.65-18.02-1.12-2.21-1.19-4.61-5.33-6.74-4.61-.57.19-.74.58-2.24,1.74-1.2.93-2.27,1.58-3,2-.91.36-1.91.7-3,1-2.93.8-5.59,1.02-7.75,1.02-.74,0-1.87-.01-3.25-.02-3.97,0-3.61.03-4,0-2.87-.21-3.75-.93-7-1-.42,0-.77,0-1,0h-6c-3,.22-5.39.65-7,1-1.72.37-3.36.82-10,3-3.07,1.01-4.59,1.59-6,2-1.81.53-5.13,1.49-9,2-5.07.67-9,.3-12,0-6.54-.65-11.56-2.18-14-3-4.6-1.55-26.12-13.37-20-10,0,0,0,0,0,0-.03-.02-20.88-13.37-28-32-1.09-2.85-2-6-2-6-.52-1.8-1.44-5.03-2-9-.44-3.12-1.34-9.53,0-10,1.69-.59,6.23,8.51,7.27,10.48,5.15,9.76,18.12,22.54,52.73,35.52Z"/>
|
||||
<path class="cls-32" d="m633,394c-13.63,7.43-2.93,57.29,2,57,1.82-.11,1.13-6.97,8-16,3-3.94,3.81-3.37,5-6,.88-3.8,2.06-11.66-2-19-.61-1.11-1.29-2.11-2-3-.31-.36-.8-1.04-1-2-.06-.32-.19-.91,0-1,.26-.13.82.87,2,2,.84.81,1.71,1.61,3,2,1.06.32,1.94.17,3,0,1.38-.23,2.37-.69,3-1,1.31-.64,2.25-1.09,3-2,1.84-2.22,1.14-5.41,1-6-.33-1.36-.69-1.29-2-4-.87-1.8-.57-1.55-2-5-.49-1.19-1-2.79-2-6-.12-.39-.37-1.22,0-2,0,0,.29-.6,1-1,1.98-1.11,11.6.55,15,1,2.66.35,13.92,1.61,15.83,2.95.42.3.8.64,1.17,1.05,2.43,2.73.93,4.31,3,9,3.83,8.69,13.16,12.57,19,15,5.09,2.12,8.54,2.5,13,3,6.22.69,7.53-.22,8-1,.74-1.23-.27-2.7-1-5-1.53-4.78-.3-8.09,0-12,.51-6.64-1.77-13.74-4-17-9.26-13.54-41.29,4.77-71-2-1.28-.29-9.89-2.3-12,1-1.87,2.94,2.99,7.55,1,12-1.49,3.33-5.5,3.63-8,5Z"/>
|
||||
<path class="cls-32" d="m683,228c-22.42,19.49,74.7,203.11,32,245-9.08,8.91-26.9,13.94-28,28-.65,8.33,4.78,18.3,13,23,13.88,7.94,28.83,2.05,33-1,2.68-1.96,4-4,4-4,1.44-2.22,1.56-3.91,3-8,.76-2.17,1.5-3.9,2-5,.43-1.13.95-2.86,1-5,.04-1.88-.32-2.29-.25-4.13.04-1.01.22-5.22,2.25-5.87.27-.09,1.3-.35,3,1-.17-.41-.33-.87-.21-.95.24-.16,1.16,1.42,2.21,1.95,2.87,1.44,7.56-.07,8-2-10.79-5.85-14.4-6.84-15-6-.79,1.11,3.49,5.56,3,6-.37.33-3.05-1.93-3-2,.05-.07,3.08,1.97,4,3,.08.09.44.51,1,1,.23.2.43.36.55.46.1.12.26.31.45.54,2.9,3.62,4.2,7.01,4.62,8.05.92,2.28,2.67,5.77,6.38,10.95,15.05,16.54,34.83,19.18,54,9,16.33,3.81,7.85,10.54,33,5,25.9-4.5,50.39,1.98,49-25-1.26-10.66-5.86-19.02,0-10,8.68,14.17,21.69,39.51,43,27,6.44-4.99,5.9-9.29,8-16,1.22-1.48,4.53-4.38,6-4,.01.08.16,1-.41,1.5-.6.53-1.8.43-2.59-.5,2.97,10.52,12.31,17.02,21,16,7.93-.94,13.74-10.13,14.27-11.06.54-.96.98-1.97.98-1.97s.41-.95.75-1.97c1.19-3.64,1.46-7.4,1.46-7.4.88-11.86.98-15.27.98-15.27.35-11.02.5-9.78.67-17.66.19-8.34-.04-7.03.13-13.62,0,0,.55-21.79-3.25-26.05-.48-.54-1-1-1-1-1.02-.91-1.79-1.28-3-2,0,0-1-.67-3-2-1-.67-2.08-1.22-3-2-1.25-1.06-1.85-1.94-3-2-.39-.02-.52.07-1,0-1.2-.18-1.99-1.02-2-1-.02.03.5.41,3,2,.1-.62,1.27-2.67,2-3,5.54-4.98,5.58-5.38,8-10,6.12-15.03-2.92-19.21-14-26-1.23-1.16-1.87-.9-3-1-.59-2.25-2.17-3.18-3-6-1.01-2.71-2.29-10.67-2-12,.57-5.41,2.39-8.84,4-11,2.1-2.82,3.85-3.49,6-7,1.22-2,2.84-4.65,3-8,.25-5.38-3.39-9.63-8-15-2.47-2.87-5.06-5.17-6-6-2.42-2.13-4.22-3.42-5-4-5.14-3.8-8.31-10.94-9.7-14.15-5.32-12.26-7.9-23.86-8.3-32.85-1.17-26.5-38.54-51.77-63-35-7.04,5.65-2.81,10.14-11,18-10.42,10-22.57,7.8-34,13-5.71,3.43-10.18.22-16-2-9.95-3.09-18.5-13.48-24-22-1.52-1.57-3.98-3.73-7.79-5.64-30.14-4.8-47.97-7.45-51.21-7.36-.78.02-4.27.18-7.57-1.74-7.85-9.54-30.21,6.06-40.43,13.74Z"/>
|
||||
<path class="cls-32" d="m667,174c-4.66.36-8.11,1.64-10.79,3.57-13.35,9.62-7.67,24.47-21.35,37.56-3.88,3.71-4.86,2.87-33.86,12.87-.06.02-2.46.85-4,0-.23-.13-.75-.41-1-1-.23-.54-.15-1.16-.12-1.33.02-.16.09-.51.12-.67h0c1.24-1.71,8.11-11.55,4.97-21.02-3.76-11.34-20.93-19.28-39.97-12.98-12.11,2.27-15.97.27-17.33-1.85-1.94-3.02.84-6.86,5.33-19.16,3.86-10.58,5.89-16.13,6-22,.1-5.49-1.43-13.73-10-24-23.21-14.8-47-13.43-56-2-1.46,1.85-5.64,7.92-4,20-3.3,4.02-9.31,1.14-20,4-10.63,1.96-20.69,9.46-13,23,5.63,9.91,94.53,145.36,192.09,115.49,50.17-15.36,72.52-65.2,72.91-66.49.03-.1.51-1.68,0-2-.15-.1-.3-.03-1,0h-3c-1.55,0-3.44-.77-4-1-.5-.2-1.8-.75-5-3-1.04-.73-2.42-1.73-4-3-3.1-.72-4.4-1.96-5-3-.3-.52-.38-.9-1-2-1.21-2.14-1.61-1.92-2-3-.34-.93-.04-1.09,0-5,0-.35,0-.06,0-2,0-3.6.02-3.67,0-4-.12-1.85-.9-3.16-2-5-2.63-4.41-6.25-6.57-7-7-1.67-.96-2.99-1.38-5-2-2.56-.79-6.28-1.69-11-2Z"/>
|
||||
</g>
|
||||
<g id="_背景" data-name="背景">
|
||||
<path class="cls-18" d="m572,182c-16.42-3.08-26.21,8.1-31,4-7.63-6.54,18.33-33.97,9-55-6.88-15.51-30.12-21.13-45-21-3.33.03-16.49.44-31,9-30.76,18.15-37.62,55.27-56,109-20.03,58.55-43.71,77.3-45,119-.4,13.04.88,31.37,1,33,2.91,40.64,9.7,47.97,12,64,.27,1.85.98,7.34,5,12,.83.96,1.59,1.64,2.01,2,.47.48,1.15,1.18,1.99,2,10.84,10.63,27.33,20.18,27.33,20.18,17.89,10.12,26.84,15.18,35.66,13.82,3.19-.49,6.88-1.68,16.62-3.27,3.46-.56,6.46-.79,12.39-1.73,3.95-.63,7.36-.89,10-1,3.64-.15,6.36-.03,7,0,4.66.22,8.01.84,9,1,3.81.61,10.14.32,21-4,3.96.13,4.67,2.49,9,4,4.59,1.6,5.73-.37,15,0,16.7,2.72,12.4-.95,25-4,5.48-.56,5.78,1.97,14,3,9.86,2.45,36.35-8.51,48,1,6.44,5.27,9.1,4.24,16,6,7.05,3.78,15.85,4.35,23,8,18.2,11.17,34.14,20.96,51,2,5.59-6.98,3.83-12.43,8-14,7.13-2.81,31.59,30.21,58,23,15.36-6.57,13.31-4.51,28,1,5.68,1.04,23.32-3.84,33-4,12.6-.87,15.51.92,21-2,11.5-6.32,8.35-12.82,9-21,6.52,3,17.82,31.94,43,18,6.28-4.14,7.41-10.27,11-10,3.81.29,3.43,7.28,9,11,7.22,4.82,20.84,1.79,26-6,1.88-2.84,1.95-5.28,2-16,.06-12.86,2.5-34.29,1-57-.27-4.14-.62-6.12-2-8-1.81-2.47-4.68-3.81-7.73-8.57-.11-.18-.21-.33-.27-.43,0-.08-.02-.19-.02-.33.03-1.6,1.77-2.75,2.36-3.17,1.19-.85,2.8-2.4,4.66-5.5,10.77-33.99-34.41-21.61-20-59,3.12-6.89,6.55-6.37,8-12,2.32-9.04-4.5-18.26-8-23-5.99-8.1-8.37-6.45-17-17-2.93-3.58-6.84-8.36-9.5-15.5-2.32-6.24-2.48-11.05-2.5-12.5,0-.42,0-.77,0-1,.13-4.73-.28-14.34-6-24-8.66-14.64-25.27-22.26-40-22-22.75.41-39.01,19.59-41,22-4.52,5.48-5.53,9.19-11,12-8.17,4.19-19.82,3.24-29-1-1.04-.48-1.78-.88-2-1-13.03-7.1-12.62-18.04-23-25-.78-.52-2.86-1.85-9.5-3.93-18.42-5.77-40.67-7.51-55.5-8.07-1.93.07-4.76-.05-8-1-3.67-1.08-6.36-2.77-8-4-5.34-3.78-6.82-2.84-9-5-3.59-3.56.14-10.39-3-17-2.84-5.97-10.15-7.96-14-9-2.47-.67-11.2-2.68-20,2-1.88,1-6.08,3.3-9,8-2.37,3.82-1.56,5.46-4,14-2.08,7.28-3.18,10.97-6,13-1.17.85-5.1,3.27-13,1-3.07-.18-7.45,0-12,2-8.86,3.88-12,11.82-14,11-2.79-1.15,5.52-15.64,0-28-5.58-12.5-22.22-15.85-23-16Z"/>
|
||||
<g id="_主体" data-name="主体">
|
||||
<path id="lite-l" class="cls-3" d="m516,141c.03-1.1-.07-2.97-1-5-.89-1.93-2.11-3.1-2.75-3.7-.4-.38-1.57-1.42-3.37-2.29-1.11-.53-2.12-.83-2.88-1.01-.48,0-1.16,0-1.98.04-1.4.09-4.59.32-7.8,1.81-3.86,1.79-6.04,4.59-7.21,6.15-1.03,1.36-.93,1.77-4,8-1.08,2.19-1.79,3.57-2,4-5.9,11.79-12,35-12,35-7.65,29.08-7.7,25.76-12,44-2.8,11.87-4.71,21.49-6,28-.61,3.07-2.21,11.25-4,22,0,0-1.57,9.87-3,30-.1,1.34-.46,7.05,1,14,.85,4.05,3,8,3,8h0c2.28,2.98,4.52,4.83,5.99,5.89,11.06,8,23.32,4.35,57.01,4.11,3.06-.02,5.53-.01,7,0,1.02-.28,2.51-.84,4-2,.52-.41,1.27-1.06,2-2,.45-.58,1.59-1.91,2-4,.21-1.08.43-2.87,0-5-.36-1.17-.7-2.18-1-3-.3-.83-.53-1.39-1-2-.36-.46-.73-.79-1-1-.24-.23-.76-.76-1-1-1.73-1.73-1.87-1.87-2-2-1.25-1.2-2.82-1.65-4-2-5.84-1.71-23-2-23-2-4.12-.07-10.14-.62-17.53-2.99,1.73-17.19,5.56-49.39,13.31-81.46,4.95-20.51,4.35-18.09,8.22-30.55,5.85-18.81,8.77-28.22,11-34,0,0,3.24-8.41,4.63-15.69.44-2.32.84-4.8.84-4.8.18-1.17.35-2.34.53-3.5Z"/>
|
||||
<path id="lite-i-1" class="cls-15" d="m569,240c4.11.31,6.91,2.96,8,4,6.83,6.48,6.93,17.68,7,26,0,.06,0,.03,0,7,0,14.32,0,21.48,0,22,.04,13.27.66,35.34-4,42-1.29,1.84-3,3-3,3-2.97,2.01-6.17,1.99-8,2-1.45,0-7.74-.12-13-5-6.34-5.87-6.06-13.87-6-15,0-.07,0-9.93,0-10,0-38.04,0-37.85,0-38-.02-1.29-.01-3.53,0-8,.03-9.9.15-12.06,1-15,1.28-4.42,3.15-6.95,4-8,1.1-1.36,2.19-2.34,3-3,.7-.58,1.7-1.32,3-2,.98-.52,4.28-2.28,8-2Z"/>
|
||||
<path id="lite-i-1-1" class="cls-30" d="m566.78,196.07c8.85-.96,18.71,7.52,18.2,17.09-.5,9.28-10.62,16.63-19.33,14.46-6.93-1.73-13.7-9.65-12.51-18.4,1.06-7.79,7.93-12.52,13.65-13.14Z"/>
|
||||
<path id="lite-t" class="cls-4" d="m643,219c-5.46,4.9-13.26-2.45-24,3-1.76.89-7.94,4.02-9,10-.72,4.08.94,7.61,1.38,8.43.48.92,2.17,4.11,5.62,5.57,1.09.46,1.2.26,6,1,5.06.78,4.17.82,6,1,2.02.19,4,.68,6,1,.54.09,1.55.25,2,1,.42.71.13,1.6,0,2-.61,1.93-.44,4.05-1,6-1.01,3.51-.87,8.39-1,13-.29,10.62-1.82,12.94-2,20-.11,4.19-.42,18.97,9,31,1.49,1.9,10.06,12.84,21,12,1.28-.1,5.89-.45,9-4,4.48-5.11,2.13-12.61,2-13-1.5-4.54-4.19-4.73-8-10-4-5.53-5.15-11-6-15-1.67-7.89-.83-14.05,0-20,1.22-8.76,3.02-10.14,4-16,.13-.81.46-2.94,2-5,0,0,.85-1.13,2-2,2.17-1.64,8.68-.49,12.72-.42,3.25.06,5.06.09,7.28-.58,1.17-.35,8.31-2.66,10-9,1.37-5.14-1.51-11.55-6-14-3.8-2.07-12.48-2.26-15-3-1.03-.3-1.9-.93-2-1-.47-.34-.82-.6-1-1-.56-1.23.89-2.87,1-3,.54-.96,1.27-2.32,2-4,1.51-3.46,2.99-6.85,3-11,0-1.91.01-6.19-3-10-3.3-4.17-8.02-4.99-9.42-5.24-.92-.16-6.37-1-11.58,2.24-1.61,1-4.15,3-7,9-5.75,12.08-1.75,17.18-6,21Z"/>
|
||||
<path id="lite-e" class="cls-7" d="m735,276c-.58.39-5.22,3.65-5,8,.19,3.92,4.21,6.49,5,7,5.42,3.48,9.31.51,25-1,10.15-.98,16.08-.47,21-5,1.89-1.74,2.72-3.39,3-4,2.32-5.01-.29-10.09-1-14-1.83-10.01-12.11-17.03-15-19-1.39-.95-8.43-5.63-19-7-4.47-.58-13.46-1.75-23,3-8.94,4.45-13.31,11.6-16,16-5.84,9.56-6.79,18.48-7,21-.4,4.87-1.09,14.86,5,25,4.96,8.26,11.87,12.39,15,14,8.24,4.25,15.6,4.12,23,4,9.99-.17,16.58-2.61,23-5,2-.74,5.17-2.02,8-5,1.68-1.77,4.08-4.29,4-8-.07-3.36-2.16-6.53-5-8-2.95-1.53-5.9-.81-9,0-6.07,1.58-6.81,4.01-12,6-6.49,2.49-12.52,1.46-15,1-3.77-.69-9.81-1.81-14-7-3.24-4.01-3.72-8.41-4-11-.26-2.43-1.1-10.07,4-17,.43-.59,7.21-9.48,18-9,1.43.06,9.65.59,14,7,1.16,1.71,2.94,4.33,2,6-2.22,3.93-15.76-4.29-25,2Z"/>
|
||||
<path id="logo-snow" class="cls-21" d="m875,272l13.33,22,9.67-15-8-20,4-6,6,2,9,13,7-11,9,1,3,7-11,13,17,2,4,8-5,4-22-4-13.5,16.8,27.5,5.2,11-14,7,1,3,7-9,11,19,3,4,7-4,5-18-3,7,14-4,4-8-1-10-20-40-8-2-2-20-37-23-4-3-7,4-5,16,3-9-15,4-6,7,1,9,16,9-10,7,2,3,6-10,14Z"/>
|
||||
<path id="yuki-y" class="cls-27" d="m717,426c-18.61-18.39-62.05-50.01-50-71,2.85-4.5,7.34-9.45,17-7,15.19,5.99,14.64,39.18,45,55,8.67-18.92,10.28-33.18,10-43-.12-4.37-.74-12.15,4-16,.82-.55,5.22-3.4,10.85-2.15,3.86.85,6.25,3.17,7.15,4.15.5.6,1.28,1.58,2.09,2.87,8.99,14.33.03,32.06-11.49,69.45-4.1,13.3-6.65,21.58-9.6,33.68-5.81,23.86-8.17,40.38-20,51-11.03,9.91-22.32.03-23-9-2.89-15.02,23.13-56.98,18-68Z"/>
|
||||
<path id="yuki-u" class="cls-22" d="m776,433c-.54-.11-5.36-1.02-9,2-2.31,1.92-3.04,4.55-4,8-.74,2.66-.91,4.8-1,6-.59,8.25,0,15,0,15,1.18,13.55,1.77,20.33,3,23,1.04,2.27,4.07,8.71,11,13,6.21,3.85,12.31,3.91,21,4,.81,0,16.83.09,21-4,.22-.21,1.2-1.26,2-1,.93.3.69,2.05,2,4,0,0,.63.93,2,2,3.54,2.75,12.53,3.41,16-1,.62-.79,1.75-2.64,2-5,.07-.68.05-1.22.02-1.76-.13-2.75-.88-4.83-1.02-5.24-1.31-3.73-3.37-15.69-4-23-.58-6.71.42-5.3,0-19-.11-3.63-.12-9.19-3-15-1.36-2.75-2.63-4.09-4-5-2.95-1.96-6.82-2.22-10-1-.8.31-3.48,1.34-5,4-1.36,2.37-1.11,4.83-1,6,.66,6.98.45,14.01,1,21,.72,9.13.57,11.51-1,14-1.8,2.86-4.42,4.2-6,5-7.58,3.86-15,.82-17,0-2.54-1.04-3.49-2.11-4-3-.74-1.29-.88-2.78-1-4-.13-1.35-.05-2.34,0-3v-16c-.19-7.44-.28-11.16-2-14-.52-.85-3.02-4.98-8-6Z"/>
|
||||
<path id="yuki-i-1-1" class="cls-2" d="m964,382c-6.65.3-12.55,6.12-12,13,.53,6.56,6.7,11.28,13,11,6.65-.3,12.55-6.12,12-13-.53-6.56-6.7-11.28-13-11Z"/>
|
||||
<path id="yuki-i-1" class="cls-24" d="m964,413c-.8.03-3.41.23-6,2,0,0-1.73,1.18-3,3-3.44,4.92-2.32,14.54-2,25,.14,4.66,0,9.33,0,14,0,11.92,0,17.88,0,18-.51,8.41-1.54,11.05,0,16,.77,2.5,1.84,5.92,5,8,3.21,2.11,6.76,1.77,8.36,1.62.77-.07,5.65-.54,8.64-3.62,3.4-3.49,2.66-8.56,2-17-.09-1.11-1.18-15.43-1-28,.1-7.33-.76-14.71,0-22,.11-1.03.52-4.77-1-9-.64-1.78-1.55-4.19-4-6-2.89-2.13-6.05-2.04-7-2Z"/>
|
||||
<path id="yuki-k" class="cls-28" d="m918,409c-.26-.11-.66-.27-1.17-.44,0,0-4.46-1.53-9.91-1-4.47.44-18.59,11.34-31.93,31.43-.35-10.53-.23-21.87.56-33.9.37-5.55.85-10.92,1.44-16.1.26-1.2.52-2.94.41-5.03-.09-1.81-.25-4.96-2.27-8.04-.56-.85-2.9-4.42-7.52-5.51-5.61-1.33-10.01,2.08-10.62,2.58-3.44,2.76-4.45,6.67-5,9-3.6,15.32-3,27-3,27,.42,8.15,1.67,32.57,1,50-.22,5.66.05,11.33,0,17-.05,6.02-.13,9.05,1,13,1.45,5.07,4.08,8.75,6,11,1.19,1.11,3.93,3.36,8,4,3.99.63,7.79-.51,9.84-1.85,11.06-7.21,1.65-39.59,4.55-40.56.39-.13,1.19.88,2.61,3.4,8.89,11.22,14.99,15.39,30,29,7.7,10.13,23.45,3.59,22-8-.19-16.59-39.62-33.08-31.91-39.47,1.89-2.38,6-8.21,6.91-9.53,5.47-7.8,10.83-8.44,13-15,1.34-4.04.69-6.57.43-7.38-1.01-3.15-3.39-4.94-4.43-5.62Z"/>
|
||||
<path id="lite-jp-1" class="cls-19" d="m452,384c-1.75-1-2.61-.17-10,1-2.22.35-7.11,1.06-13,3-1.36.45-2.68.93-3,2-.49,1.65,1.56,4.27,4,5,.32.09.56.13.74.16,2.19.34,3.89-.56,5.26-1.16,1.96-.87,3.64-1.24,7-2,0,0,4.44-1,5,0,.02.04.04.07.04.07.07.18-.02.5-.04,2.93,0,.06,0,.71,0,2,0,5.01.09,5.71,0,7-.2,2.74-.3,4.11-1,5-1.25,1.58-3.23,1.52-7,2-5.62.72-4.41,1.27-10,2-7.19.94-9.49.07-11,2-1.32,1.68-1.32,4.57,0,6,1.74,1.88,5.46.88,9,0,7.35-1.82,19.55-4.84,29-6,4.81-.59,12-1.09,13-4,.57-1.65,0-3,0-3-.06-.14-.62-1.43-2-2-1.19-.49-2.36-.18-3,0-6.78,1.91-9.23,2.82-10,2-.45-.48-.17-1.39,0-2,1.77-6.29,1.22-12.36,1-14-.23-1.67-.84-6.18-4-8Z"/>
|
||||
<path id="liteecho-1" class="cls-34" d="m448,440c-1.02.34-1.72,1.18-2,2-.31.93-.06,1.78,0,2,.38,1.39.25,7.26,0,19-.12,5.74-.36,7.73,0,12,.21,2.49.58,5.11,2,8,.87,1.76,1.83,3.72,4,5,2.08,1.23,4.09,1.14,7,1,2.69-.13,6.51-.31,7-2,.37-1.27-1.18-3.23-3-4-2.78-1.18-4.84.97-7,0-2.17-.97-2.69-4.29-3-7-1.07-9.45-.9-24.04-1-30-.02-1.36-.12-5.21-2-6-.58-.25-1.37-.21-2,0Z"/>
|
||||
<path id="yuki-jp-4-1" class="cls-16" d="m636.06,390.95c-2.11.2-3.55,1.9-3.93,2.35-.57.68-.91,1.34-1.11,1.8,1.09,1.05,6.06,5.64,11.22,4.91,2.33-.33,5.1-1.81,5.34-2.63.03-.09.03-.17.03-.17,0-.29-.33-.71-1.89-1.83-1.33-.96-2.23-1.61-3.3-2.18-.69-.37-1.23-.6-1.68-.79-2.41-1.04-3.62-1.55-4.68-1.45Z"/>
|
||||
<path id="yuki-jp-4" class="cls-12" d="m621,375c.37-.49,1.34-1.8,3-2,2.33-.28,3.93,1.89,4,2,.33.46.44.81,1,3,.59,2.3.88,3.45,1,4,.33,1.56.71,3.58,1,6,.65,5.37.61,6.78,1,10,.79,6.47,1.28,10.5,3,15,.07.18,1.23,3.21,1,7-.08,1.29-.29,2.25-1,3-1,1.07-2.67,1.39-4,1-.58-.17-1.69-.65-3-3-1.53-2.75-1.78-5.26-2-7-.3-2.39-.86-5.79-2-10-1-6.33-2-12.67-3-19-.33-1.67-.67-3.33-1-5-.1-.53-.53-2.95,1-5Z"/>
|
||||
<path id="liteecho-i-1-1" class="cls-20" d="m474,451c-1.86-.04-3.59,1.27-4,3-.56,2.38,1.47,5.01,4,5,2.03-.01,4-1.72,4-4,0-2.25-1.92-3.96-4-4Z"/>
|
||||
<path id="liteecho-i-1" class="cls-9" d="m475,464c-.61-.3-1.38-.31-2,0-.14.07-.62.33-1,1-1.18,2.08-1.01,7.51-1,8,.16,5.45,0,9,0,9-.08,1.78-.22,3.7,1,5,.21.22.94,1,2,1,1.08,0,1.81-.8,2-1,1.05-1.14,1.02-2.72,1-4-.03-2.33.04-4.67,0-7-.05-3.31.17-8.95-1-11-.12-.2-.41-.71-1-1Z"/>
|
||||
<path id="liteecho-t" class="cls-8" d="m492.48,452.64c-.52.03-1.3.07-1.92.55-.25.19-.76.67-1.1,2.68-.15.92-.29,2.26-.14,3.91-1.17.01-3.52.16-5.32,1.22-.38.22-.77.51-1,1-.39.85-.08,1.91.41,2.59.74,1.01,1.99,1.19,3.59,1.41.85.12,1.57.12,2.05.1-.06.76-.12,1.85-.14,3.16-.01,1.22-.03,2.48.14,4.12.15,1.49.3,2.92.96,4.62.39,1.03.78,1.67,1,2,.25.39.74,1.08,1.48,1.76,1.12,1.05,2.67,2.5,4.52,2.24,1.2-.17,2.57-1.06,2.76-2.24.12-.76-.29-1.46-.55-1.92-.43-.76-.87-.99-1.51-1.65-.95-.97-1.44-1.93-1.78-2.61-.71-1.41-.9-2.61-1.1-3.85-.15-.97-.37-2.35-.14-4.12.09-.67.22-1.22.32-1.61.56,0,1.35-.04,2.29-.17,1.54-.21,2.32-.32,2.88-.82.8-.71,1.27-2.03.83-3.01-.13-.3-.38-.61-1-1-1.52-.94-3.22-1.02-4.36-.94.11-.49.27-1.25.41-2.2.49-3.18.14-3.81-.14-4.12-.26-.3-.59-.43-1.24-.69-.4-.16-1.18-.47-2.2-.41Z"/>
|
||||
<path id="liteecho-e" class="cls-25" d="m515.41,469.49c-1.24,0-1.82.11-2.17.53-.63.76-.29,2.24.31,3.15,1.51,2.31,5.53,2.25,7.8,1.77,1.4-.3,4.49-.94,5.98-3.77,1.7-3.21-.04-6.62-.4-7.27-1.86-3.4-5.47-4.29-7.14-4.7-3.37-.83-6.16.05-7.27.4-1.07.34-2.81.91-4.53,2.4-3.45,2.98-3.92,7.09-4,8-.27,3.05.7,5.35,1,6,.27.6,1.17,2.42,3,4,1.04.89,2.16,1.53,3,2,.99.56,1.75.89,2,1,1.02.44,1.88.81,3,1,1.17.2,2.07.1,3,0,.34-.04,1.85-.22,4-1,3.3-1.2,4.59-2.54,5-3,.47-.53.68-.9.71-1.34.06-1.15-1.21-2.31-2.48-2.62-.51-.12-.94-.08-1.23-.05-2.01.26-3.04,1.28-4.31,1.86-2.59,1.19-5.84.41-7.69-.86-1.16-.8-1.95-1.93-2-2-.26-.38-.69-1.07-1-2-.26-.77-.95-2.86,0-5,.82-1.85,2.41-2.69,3-3,2.34-1.23,5.06-1.05,7,0,.69.37,1.64.9,2,2,.29.87.26,2.23-.52,2.84-1,.8-2.36-.34-6.07-.36Z"/>
|
||||
<path id="liteecho-c" class="cls-29" d="m570,456c-1.16,0-4.12.04-7,2-1.54,1.05-2.49,2.26-3,3-1.62,2.38-1.87,4.7-2,6-.12,1.26-.36,4,1,7,2.14,4.72,6.61,6.52,8,7,1.04.36,4.93,1.64,9,0,.94-.38,2.74-1.13,4-3,.45-.66,1.99-2.94,1-5-.54-1.12-1.88-2.25-3-2-1.41.32-1.04,2.48-3,4-1.92,1.48-4.45,1.09-5,1-.54-.08-2.42-.41-4-2-2.4-2.42-2.04-5.66-2-6,.07-.51.43-3.37,3-5,2.25-1.43,5.33-1.38,7,0,.93.77.92,1.55,2,2,1.26.52,3.2.27,4-1,.72-1.15.17-2.56,0-3-.15-.38-.69-1.63-3-3-.98-.58-3.45-2.01-7-2Z"/>
|
||||
<path id="liteecho-h" class="cls-17" d="m590,439c-.92-.49-2.08-.44-3,0-1.8.87-1.99,2.91-2,3v9c0,4,.04,8,0,12-.03,3,.1,6,0,9-.1,3.04-.29,5.38,1,8,.45.91,1.42,2.89,3,3,1.63.11,2.9-1.85,3-2,1.44-2.28.03-4.1,0-9-.02-2.85,0-5.82,2-8,.37-.4,1.8-1.97,4-2,2.44-.04,3.91,1.89,4,2,.92,1.22,1,2.52,1,3-.33,1.67-.67,3.33-1,5-.41,1.12-.91,2.85-1,5-.09,2.3-.16,3.99,1,5,1.28,1.11,3.61,1.02,5,0,1.65-1.21,1.8-3.61,2-7,.08-1.27.04-2.31,0-3v-8c-.02-.84-.16-2.36-1-4-.51-1-1.73-2.93-4-4-3.65-1.72-7.65-.14-8,0-1.5.62-2.24,1.36-3,1-.71-.34-.94-1.4-1-4-.12-5.04.61-6.66,0-10-.56-3.06-1.54-3.76-2-4Z"/>
|
||||
<path id="liteecho-o" class="cls-33" d="m625,458c-4.27-.18-7.17,2.27-8,3-3.05,2.66-3.79,6-4,7-.18.88-1.21,5.84,2,10,2.08,2.69,4.82,3.62,6,4,1.29.42,4.46,1.39,8,0,2.95-1.16,4.51-3.31,5-4,1.43-2.02,1.81-3.97,2-5,.46-2.51.1-4.49,0-5-.67-3.35-2.52-5.47-3-6-.69-.76-3.46-3.8-8-4Z"/>
|
||||
<path id="liteecho-o-white" class="cls-35" d="m623.5,464.5c-2.49.24-3.75,2.55-4,3-.09.17-1.81,3.42,0,6,1.68,2.39,5.6,3.06,8,1,2.1-1.8,2.13-4.93,1-7-.84-1.54-2.7-3.22-5-3Z"/>
|
||||
<path id="lite-jp-2" class="cls-13" d="m481,384c-.71.63-1.32,1.81-1,3,.38,1.44,1.86,1.95,2,2,.77.25,1.44.12,2,0,4.88-1.04,5.31-1.31,6-1,1.18.54,1.54,2.08,2,4,.41,1.72.73,3.08,0,4-.65.81-2.11.89-5,1-1.25.05-2.29.03-3,0-.53.14-1.96.61-3,2-.4.54-1.21,1.61-1,3,.24,1.62,1.7,2.78,3,3,.44.08.79.03,1,0,4.59-.65,6.89-.98,7-1,2.55-.43,3.84-.64,4.45-.34,1.26.62,1.41,1.86,2.55,5.34,0,0,1.48,4.5,4,10,.8,1.75,1.53,3.13,2,4,.16.13,2.42,1.9,5,1,.16-.06,2.44-.88,3-3,.21-.78.1-1.42,0-2-.27-1.54-.96-2.26-2-4-.12-.21.03.04-2-4-.67-1.33-1.32-2.67-2-4-1.91-3.76-2.3-4.3-2-5,.2-.46.49-.53,4-2,1.13-.48,2.45-1.03,4-2,1.13-.71,1.71-1.21,2-2,.06-.17.35-1.03,0-2-.48-1.32-1.88-2.03-3-2-.31,0-.54.07-.66.11-2.2.63-4.77,1.67-5.34,1.89-2.21.88-3.31,1.31-4,1-.42-.19-.77-.54-2-4-1.21-3.42-1.11-3.77-1-4,.42-.85,1.37-.79,6-2,2.46-.64,3.57-1.02,4-2,.3-.68.14-1.39,0-2-.09-.4-.54-2.17-2-3-1.17-.66-2.4-.38-4,0-3.65.88-4.88,2.55-6,2-.55-.27-1.15-1.13-1-4-.42-2-.76-3-1-3h0c-.76-1.48-2.4-2.29-4-2-1.51.27-2.7,1.47-3,3-.17,2.45.41,4.01,1,5,.57.95,1.14,1.36,1,2-.24,1.14-2.45,1.64-4,2-2.38.55-3.11.2-4,1Z"/>
|
||||
<path id="yuki-jp-1" class="cls-5" d="m526,396c-.46,1.12-.62,2.69,0,4,.19.41.79,1.49,2,2,1.22.51,2.43.16,3,0,5-1.43,7.51-2.15,8-2,4.42,1.34,3.64,20.08,7,22,2.14,1.22,4,1,4,1,1.43-.17,3.03-.97,3.02-1,0,0,0,0-.02,0,.27-.2.65-.52,1-1,1.53-2.12.85-5.32-1-10-3.3-8.33-6.24-11.07-5-13,.71-1.1,1.84-.46,5.57-2.36,2.51-1.27,4.06-2.06,4.43-3.64.46-1.98-1.11-4.46-3-5-1.01-.29-2.23.21-4.65,1.22-3.32,1.39-3.58,2.02-4.35,1.78-2.25-.7-.9-6.34-4-8-1.22-.65-2.84-.54-4,0-.31.14-1.56.73-2,2-.24.7-.14,1.29,0,2,.51,2.66,2.08,3.57,2,5.99,0,0,0,0,0,0,.01,0,.02,0,.02,0,.01.1-10.37-.01-12.02,4Z"/>
|
||||
<path id="yuki-jp-2-3" class="cls-31" d="m603,386c-.23-.2-.95-.74-2-1-.58-.14-1.39-.34-2,0-.79.44-.86,1.6-1,3,0,0-.62,6.23-2,9-.43.86-.97,1.66-.97,1.66-.12.18-.24.35-.35.5-.2.27-.42.55-.68.84-1.47,1.68-5.93,4.2-5.93,4.2-3.23,1.82-3.66,2.04-4.07,2.8-.61,1.13-.9,2.9,0,4,.8.97,2.17.99,3,1,.7,0,3.05-.07,7.17-3.17,1.64-1.24,3.78-2.89,5.83-5.83,3.15-4.53,3.72-8.76,4-11,.52-4.2-.4-5.48-1-6Z"/>
|
||||
<path id="liteecho-e2" class="cls-14" d="m540.81,469.18c-1.13.52-1.6.87-1.74,1.41-.25.96.69,2.15,1.62,2.72,2.35,1.44,5.96-.31,7.81-1.71,1.14-.86,3.66-2.76,3.81-5.96.17-3.63-2.85-5.97-3.45-6.41-3.13-2.29-6.78-1.55-8.46-1.22-3.41.68-5.55,2.66-6.41,3.45-.83.76-2.15,2.02-3.08,4.1-1.85,4.16-.53,8.09-.22,8.94,1.05,2.88,2.91,4.54,3.46,5,.5.42,2.09,1.69,4.42,2.34,1.32.37,2.61.46,3.57.53,1.13.08,1.96.06,2.24.05,1.11-.04,2.04-.06,3.14-.37,1.14-.32,1.92-.79,2.71-1.28.29-.18,1.58-.98,3.19-2.61,2.48-2.49,3.07-4.25,3.25-4.84.2-.68.24-1.11.07-1.51-.43-1.07-2.08-1.58-3.36-1.31-.51.11-.88.32-1.13.48-1.71,1.09-2.2,2.45-3.11,3.52-1.84,2.18-5.11,2.86-7.32,2.49-1.39-.23-2.59-.92-2.66-.96-.4-.23-1.08-.67-1.76-1.38-.56-.59-2.08-2.19-2.13-4.52-.04-2.02,1.04-3.46,1.44-3.99,1.59-2.11,4.14-3.1,6.33-2.98.79.04,1.86.12,2.66.96.63.67,1.18,1.91.74,2.79-.57,1.15-2.28.69-5.65,2.26Z"/>
|
||||
</g>
|
||||
<circle class="cls-23" cx="535" cy="411" r="4"/>
|
||||
<ellipse class="cls-11" cx="556.49" cy="380.5" rx="2.51" ry="2.5"/>
|
||||
<ellipse class="cls-26" cx="549.49" cy="383.5" rx="2.51" ry="2.5"/>
|
||||
<circle class="cls-10" cx="557.98" cy="404.39" r="4"/>
|
||||
<circle class="cls-1" cx="582.42" cy="391.26" r="4"/>
|
||||
<circle class="cls-6" cx="590.42" cy="385.26" r="4"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 31 KiB |
93
docs/.vuepress/public/js/geo.js
Normal file
@ -0,0 +1,93 @@
|
||||
echart = require('echarts');
|
||||
let chart = echarts.init(document.getElementById('main-chart'));
|
||||
const color = ['#9ae5fc', '#dcbf71']; // 自定义图中要用到的颜色
|
||||
console.log("加载图标");
|
||||
// 在地图加载完成后设置所有地区不可选
|
||||
function setAllRegionsUnselectable(geoModel) {
|
||||
const regions = geoModel.get('regions');
|
||||
|
||||
// 遍历所有地区并设置selected为false
|
||||
for (let i = 0; i < regions.length; i++) {
|
||||
const region = regions[i];
|
||||
region.selected = false;
|
||||
}
|
||||
|
||||
// 更新模型以反映更改
|
||||
geoModel.set('regions', regions);
|
||||
|
||||
// 更新图表以显示更改
|
||||
chart.setOption({
|
||||
geo: {
|
||||
regions: regions
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取数据并初始化图表
|
||||
fetch('https://api.liteyuki.icu/distribution')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
// 构造 ECharts 需要的数据格式
|
||||
const locations = data.locations;
|
||||
const seriesData = locations.map(location => ({
|
||||
value: [location[1], location[0]] // 直接使用经纬度数组
|
||||
}));
|
||||
console.log(seriesData);
|
||||
// 初始化图表选项
|
||||
chart.setOption({
|
||||
backgroundColor: '#454545',
|
||||
title: {
|
||||
text: 'LiteyukiBot分布demo',
|
||||
subtext: 'LiteyukiBot分布',
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontSize: 20
|
||||
},
|
||||
top: '10px',
|
||||
left: '10px'
|
||||
},
|
||||
geo: {
|
||||
map: 'world',
|
||||
roam: false,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
areaColor: '#000',
|
||||
borderType: null, // 设置边界线类型为无
|
||||
borderColor: '#000', // 设置边界线颜色
|
||||
|
||||
},
|
||||
emphasis: {
|
||||
areaColor: '#000',
|
||||
borderType: null, // 设置边界线类型为无
|
||||
borderColor: '#000', // 设置边界线颜色
|
||||
}
|
||||
},
|
||||
regions: [] // 先保留为空
|
||||
},
|
||||
series: [{
|
||||
// 散点效果
|
||||
type: 'scatter',
|
||||
coordinateSystem: 'geo', // 表示使用的坐标系为地理坐标系
|
||||
symbolSize: 5, // 设置散点的大小为20
|
||||
itemStyle: {
|
||||
color: '#ffeb3b', // 黄色
|
||||
},
|
||||
data: seriesData
|
||||
}],
|
||||
textStyle: {
|
||||
fontSize: 1
|
||||
}
|
||||
});
|
||||
|
||||
// 在地图加载完成后设置所有地区不可选
|
||||
chart.on('ready', function () {
|
||||
const geoModel = chart.getModel().componentModels.geo[0];
|
||||
setAllRegionsUnselectable(geoModel);
|
||||
});
|
||||
|
||||
// 自适应窗口大小变化
|
||||
window.addEventListener("resize", function () {
|
||||
chart.resize();
|
||||
});
|
||||
})
|
||||
.catch(error => console.error('Error fetching data:', error));
|
39
docs/.vuepress/public/js/get_data.js
Normal file
@ -0,0 +1,39 @@
|
||||
// 定义全局变量来存储数据
|
||||
let globalTotal = 0;
|
||||
let globalOnline = 0;
|
||||
|
||||
// 从API获取数据并更新全局变量
|
||||
function fetchAndUpdateData() {
|
||||
Promise.all([
|
||||
fetch("https://api.liteyuki.icu/count").then(res => res.json()),
|
||||
fetch("https://api.liteyuki.icu/online").then(res => res.json())
|
||||
])
|
||||
.then(([countRes, onlineRes]) => {
|
||||
globalTotal = countRes.register;
|
||||
globalOnline = onlineRes.online;
|
||||
})
|
||||
.catch(err => {
|
||||
console.error("Error fetching data:", err);
|
||||
});
|
||||
}
|
||||
|
||||
// 更新页面显示,使用全局变量中的数据
|
||||
function updatePageDisplay() {
|
||||
let countInfo = document.getElementById("count-info");
|
||||
if (!countInfo) {
|
||||
let info = `<div id="count-info" style="text-align: center; font-size: 20px; font-weight: 500">
|
||||
全球实例:<span id="total">${globalTotal}</span> 当前在线:<span id="online">${globalOnline}</span></div>`;
|
||||
let mainDescription = document.querySelector("#main-description");
|
||||
if (mainDescription) {
|
||||
mainDescription.insertAdjacentHTML('afterend', info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 初始调用更新数据
|
||||
fetchAndUpdateData();
|
||||
updatePageDisplay();
|
||||
|
||||
// 设置定时器,分别以不同频率调用更新数据和更新页面的函数
|
||||
setInterval(fetchAndUpdateData, 10000); // 每10秒更新一次数据
|
||||
setInterval(updatePageDisplay, 1000); // 每1秒更新一次页面显示
|
31
docs/.vuepress/public/js/style.js
Normal file
@ -0,0 +1,31 @@
|
||||
function applyStyle() {
|
||||
// 先检测页面中是否有macos-tab,有则不再添加
|
||||
let tabs = document.body.querySelectorAll('.macos-tab')
|
||||
if (tabs.length > 0) {
|
||||
return
|
||||
}
|
||||
let lineNumbers = document.body.querySelectorAll('[class^="language-"].line-numbers-mode')
|
||||
lineNumbers.forEach((item) => {
|
||||
// 插入现成的html文本
|
||||
let title = item.getAttribute('data-title')
|
||||
let tabStr =
|
||||
"<div class='tab macos-tab' style='display: flex; background-color: #d0e9ff'>" +
|
||||
" <div class='tab-buttons'>" +
|
||||
" <div class='tab-button' style='background-color: #FF5F57'></div>" +
|
||||
" <div class='tab-button' style='background-color: #FFBD2E'></div>" +
|
||||
" <div class='tab-button' style='background-color: #27C93F'></div>" +
|
||||
" </div>" +
|
||||
` <div class='tab-title'>${title}</div>` +
|
||||
" <div style='flex: 1'></div>" +
|
||||
"</div>"
|
||||
// 在代码块前插入选项卡
|
||||
item.insertAdjacentHTML('beforebegin', tabStr);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
applyStyle()
|
||||
// 定时器,每隔1s检查一次
|
||||
setInterval(() => {
|
||||
applyStyle()
|
||||
}, 1000)
|
1116
docs/.vuepress/public/js/world.js
Normal file
BIN
docs/.vuepress/public/logo.png
Normal file
After Width: | Height: | Size: 92 KiB |
1
docs/.vuepress/public/logo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" class="icon" viewBox="0 0 3280.944 2800"><path fill="#41b883" d="M1645.332 601.004h375.675L1081.82 2238.478 142.636 601.004h718.477l220.708 379.704 216.013-379.704z"/><path fill="#41b883" d="M142.636 601.004l939.185 1637.474 939.186-1637.474h-375.675l-563.51 982.484-568.208-982.484z"/><path fill="#35495e" d="M513.188 601.004l568.207 987.23 563.511-987.23h-347.498l-216.013 379.704-220.708-379.704zM1607.792 1311.83l594.678 2.293 187.353-316.325-598.662 2.292zM2198.506 1909.57C2867.436 732.7 2939.502 605.426 2937.874 603.78c-.715-.723 45.303-1.314 102.262-1.314s103.562.428 103.562.951c0 .523-208.57 367.978-463.491 816.567L2216.715 2235.6l-102.1.596-102.102.596z"/><path fill="#41b883" d="M1680.563 2233.328c0-1.34 168.208-298.145 440.375-777.048a4135645.775 4135645.775 0 00337.619-594.19l146.13-257.25 170.746-.04 170.747-.04-5.536 9.741c-3.044 5.358-43.727 77.302-90.407 159.875-85.356 150.992-337.562 595.163-656.602 1156.373l-172 302.559-170.536.588c-93.795.322-170.536.069-170.536-.567z"/><path fill="#35495e" d="M1429.783 1625.351l594.679 2.292 187.353-316.324-598.662 2.292z"/><path fill="#41b883" d="M1524.207 1464.903l608.285 6.877 173.746-320.909h-619.072z"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
25
docs/.vuepress/sidebar.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import {sidebar} from "vuepress-theme-hope";
|
||||
|
||||
export default sidebar({
|
||||
"/": [
|
||||
"",
|
||||
{
|
||||
text: "安装及部署",
|
||||
icon: "laptop-code",
|
||||
prefix: "deployment/",
|
||||
children: "structure",
|
||||
},
|
||||
{
|
||||
text: "使用及开发",
|
||||
icon: "book",
|
||||
prefix: "usage/",
|
||||
children: "structure",
|
||||
},
|
||||
{
|
||||
text: "资源及插件",
|
||||
icon: "store",
|
||||
prefix: "store/",
|
||||
children: "structure",
|
||||
}
|
||||
],
|
||||
});
|
7
docs/.vuepress/styles/config.scss
Normal file
@ -0,0 +1,7 @@
|
||||
// you can change config here
|
||||
$colors: #c0392b, #d35400, #f39c12, #27ae60, #16a085, #2980b9, #8e44ad, #2c3e50,
|
||||
#7f8c8d !default;
|
||||
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
100
docs/.vuepress/styles/index.scss
Normal file
@ -0,0 +1,100 @@
|
||||
// place your custom styles here
|
||||
|
||||
:root {
|
||||
--code-window-border-radius: 10px;
|
||||
--button-distance: 8px;
|
||||
}
|
||||
|
||||
#main-title {
|
||||
font-family: ColorTube, "Fira Code", serif;
|
||||
color: #ff0000 !important; /* 你想要的颜色 */
|
||||
line-height: 2;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: ColorTube;
|
||||
src: url("/assets/fonts/ColorTube.woff") format("woff")
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: "Fira Code", monospace !important;
|
||||
}
|
||||
|
||||
.vp-hero-image {
|
||||
overflow: hidden;
|
||||
padding: -50px;
|
||||
}
|
||||
|
||||
#main-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.theme-hope-content pre {
|
||||
overflow: auto;
|
||||
margin: 0 0;
|
||||
padding: 1rem;
|
||||
border-radius: 6px;
|
||||
line-height: 1.375;
|
||||
}
|
||||
|
||||
// 移除该before
|
||||
.theme-hope-content pre::before {
|
||||
content: none;
|
||||
}
|
||||
|
||||
.theme-hope-content > div[class*=language-] {
|
||||
margin: 0 0 0 0;
|
||||
// 仅下半部分有圆弧
|
||||
border-radius: 0 0 var(--code-window-border-radius) var(--code-window-border-radius);
|
||||
}
|
||||
|
||||
.tab {
|
||||
display: flex;
|
||||
height: 25px;
|
||||
margin-bottom: 0;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-top-left-radius: var(--code-window-border-radius);
|
||||
border-top-right-radius: var(--code-window-border-radius);
|
||||
}
|
||||
|
||||
.tab-buttons {
|
||||
padding: 7px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
height: 60%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tab-button {
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
margin-right: var(--button-distance);
|
||||
border-radius: 50%;
|
||||
height: 100%;
|
||||
aspect-ratio: 1/1;
|
||||
}
|
||||
|
||||
.tab-title {
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.item-search-box {
|
||||
border-radius: 100px;
|
||||
width: 80%;
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.search-box-div {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.item-search-box {
|
||||
width: 80%;
|
||||
}
|
2
docs/.vuepress/styles/palette.scss
Normal file
@ -0,0 +1,2 @@
|
||||
// you can change colors here
|
||||
$theme-color: #00a6ff;
|
193
docs/.vuepress/theme.js
Normal file
@ -0,0 +1,193 @@
|
||||
import {hopeTheme} from "vuepress-theme-hope";
|
||||
import navbar from "./navbar.js";
|
||||
import sidebar from "./sidebar.js";
|
||||
|
||||
export default hopeTheme({
|
||||
|
||||
hostname: "https://vuepress-theme-hope-docs-demo.netlify.app",
|
||||
|
||||
author: {
|
||||
name: "远野千束",
|
||||
url: "https://sfkm.me",
|
||||
},
|
||||
|
||||
iconAssets: "fontawesome-with-brands",
|
||||
|
||||
logo: "https://cdn.liteyuki.icu/static/img/liteyuki_icon_640.png",
|
||||
|
||||
repo: "https://github.com/LiteyukiStudio/LiteyukiBot",
|
||||
|
||||
docsDir: "docs",
|
||||
|
||||
// 导航栏
|
||||
navbar,
|
||||
|
||||
// 侧边栏
|
||||
sidebar,
|
||||
|
||||
// 页脚
|
||||
footer: "LiteyukiBot",
|
||||
displayFooter: true,
|
||||
|
||||
// 加密配置
|
||||
encrypt: {
|
||||
config: {
|
||||
"/demo/encrypt.html": ["1234"],
|
||||
},
|
||||
},
|
||||
|
||||
// 多语言配置
|
||||
metaLocales: {
|
||||
editLink: "在 GitHub 上编辑",
|
||||
},
|
||||
|
||||
// 如果想要实时查看任何改变,启用它。注: 这对更新性能有很大负面影响
|
||||
// hotReload: true,
|
||||
|
||||
// 在这里配置主题提供的插件
|
||||
plugins: {
|
||||
search: true,
|
||||
// search: true,
|
||||
comment: {
|
||||
provider: "Giscus",
|
||||
repo: "snowykami/LiteyukiBot",
|
||||
repoId: "R_kgDOHVNKpQ",
|
||||
category: "Announcements",
|
||||
categoryId: "DIC_kwDOHVNKpc4CeWxj",
|
||||
},
|
||||
|
||||
components: {
|
||||
components: ["Badge", "VPCard"],
|
||||
},
|
||||
|
||||
// 此处开启了很多功能用于演示,你应仅保留用到的功能。
|
||||
mdEnhance: {
|
||||
echarts: true,
|
||||
alert: true,
|
||||
align: true,
|
||||
attrs: true,
|
||||
codetabs: true,
|
||||
footnote: true,
|
||||
component: true,
|
||||
demo: true,
|
||||
figure: true,
|
||||
imgLazyload: true,
|
||||
imgSize: true,
|
||||
include: true,
|
||||
mark: true,
|
||||
stylize: [
|
||||
{
|
||||
matcher: "Recommended",
|
||||
replacer: ({tag}) => {
|
||||
if (tag === "em")
|
||||
return {
|
||||
tag: "Badge",
|
||||
attrs: {type: "tip"},
|
||||
content: "Recommended",
|
||||
};
|
||||
},
|
||||
},
|
||||
],
|
||||
sub: true,
|
||||
sup: true,
|
||||
tabs: true,
|
||||
vPre: true,
|
||||
|
||||
|
||||
// 在启用之前安装 chart.js
|
||||
// chart: true,
|
||||
|
||||
// insert component easily
|
||||
|
||||
// 在启用之前安装 echarts
|
||||
// echarts: true,
|
||||
|
||||
// 在启用之前安装 flowchart.ts
|
||||
// flowchart: true,
|
||||
|
||||
// gfm requires mathjax-full to provide tex support
|
||||
// gfm: true,
|
||||
|
||||
// 在启用之前安装 katex
|
||||
// katex: true,
|
||||
|
||||
// 在启用之前安装 mathjax-full
|
||||
// mathjax: true,
|
||||
|
||||
// 在启用之前安装 mermaid
|
||||
// mermaid: true,
|
||||
|
||||
// playground: {
|
||||
// presets: ["ts", "vue"],
|
||||
// },
|
||||
|
||||
// 在启用之前安装 reveal.js
|
||||
// revealJs: {
|
||||
// plugins: ["highlight", "math", "search", "notes", "zoom"],
|
||||
// },
|
||||
|
||||
// 在启用之前安装 @vue/repl
|
||||
// vuePlayground: true,
|
||||
|
||||
// install sandpack-vue3 before enabling it
|
||||
// sandpack: true,
|
||||
},
|
||||
|
||||
// 如果你需要 PWA。安装 @vuepress/plugin-pwa 并取消下方注释
|
||||
// pwa: {
|
||||
// favicon: "/favicon.ico",
|
||||
// cacheHTML: true,
|
||||
// cachePic: true,
|
||||
// appendBase: true,
|
||||
// apple: {
|
||||
// icon: "/assets/icon/apple-icon-152.png",
|
||||
// statusBarColor: "black",
|
||||
// },
|
||||
// msTile: {
|
||||
// image: "/assets/icon/ms-icon-144.png",
|
||||
// color: "#ffffff",
|
||||
// },
|
||||
// manifest: {
|
||||
// icons: [
|
||||
// {
|
||||
// src: "/assets/icon/chrome-mask-512.png",
|
||||
// sizes: "512x512",
|
||||
// purpose: "maskable",
|
||||
// type: "image/png",
|
||||
// },
|
||||
// {
|
||||
// src: "/assets/icon/chrome-mask-192.png",
|
||||
// sizes: "192x192",
|
||||
// purpose: "maskable",
|
||||
// type: "image/png",
|
||||
// },
|
||||
// {
|
||||
// src: "/assets/icon/chrome-512.png",
|
||||
// sizes: "512x512",
|
||||
// type: "image/png",
|
||||
// },
|
||||
// {
|
||||
// src: "/assets/icon/chrome-192.png",
|
||||
// sizes: "192x192",
|
||||
// type: "image/png",
|
||||
// },
|
||||
// ],
|
||||
// shortcuts: [
|
||||
// {
|
||||
// name: "Demo",
|
||||
// short_name: "Demo",
|
||||
// url: "/demo/",
|
||||
// icons: [
|
||||
// {
|
||||
// src: "/assets/icon/guide-maskable.png",
|
||||
// sizes: "192x192",
|
||||
// purpose: "maskable",
|
||||
// type: "image/png",
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// },
|
||||
},
|
||||
});
|
83
docs/README.md
Normal file
@ -0,0 +1,83 @@
|
||||
---
|
||||
home: true
|
||||
icon: home
|
||||
title: 首页
|
||||
heroImage: https://cdn.liteyuki.icu/static/svg/lylogo-full.svg
|
||||
heroImageDark: https://cdn.liteyuki.icu/static/svg/lylogo-full-dark.svg
|
||||
bgImage:
|
||||
bgImageDark:
|
||||
bgImageStyle:
|
||||
background-attachment: fixed
|
||||
heroText: LiteyukiBot
|
||||
tagline: LiteyukiBot 轻雪机器人,基于NoneBot2构建的综合应用型聊天机器人
|
||||
|
||||
actions:
|
||||
- text: 快速部署
|
||||
icon: rocket
|
||||
link: ./deployment/install.html
|
||||
type: primary
|
||||
|
||||
- text: 使用手册
|
||||
icon: book
|
||||
link: ./usage/basic_command.html
|
||||
|
||||
highlights:
|
||||
- header: 简洁至上
|
||||
image: /assets/image/layout.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/2-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/2-dark.svg
|
||||
bgImageStyle:
|
||||
background-repeat: repeat
|
||||
background-size: initial
|
||||
features:
|
||||
- title: 基于NoneBot2
|
||||
icon: robot
|
||||
details: 拥有良好的生态支持
|
||||
link: https://nonebot.dev/
|
||||
|
||||
- title: 便捷管理
|
||||
icon: plug
|
||||
details: 使用包管理器,便捷管理插件及资源包
|
||||
|
||||
- title: 主题支持
|
||||
icon: paint-brush
|
||||
details: 使用资源包对外观进行完全自定义
|
||||
link: https://bot.liteyuki.icu/usage/resource_pack.html
|
||||
|
||||
- title: 国际化
|
||||
icon: globe
|
||||
details: 通过资源包支持多种语言
|
||||
link: https://baike.baidu.com/item/i18n/6771940
|
||||
|
||||
- title: 简易使用
|
||||
icon: cog
|
||||
details: 无需繁琐前期过程,开箱即用
|
||||
link: https://bot.liteyuki.icu/deployment/config.html
|
||||
|
||||
- title: 超高性能
|
||||
icon: tachometer-alt
|
||||
details: 500个插件,2s内启动
|
||||
|
||||
- title: 滚动更新
|
||||
icon: cloud-download
|
||||
details: 让你的机器人保持最新提交
|
||||
|
||||
- title: 开源项目
|
||||
icon: code
|
||||
details: 项目遵循MIT LICENCE开源,欢迎各位的贡献
|
||||
|
||||
- header: 快速部署
|
||||
image: /assets/image/box.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/3-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/3-dark.svg
|
||||
highlights:
|
||||
- title: 安装 Git 及 Python3.10+
|
||||
- title: 使用 <code>git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1</code> 以克隆项目至本地。
|
||||
details: 如果无法连接到GitHub,可以使用 <code>git clone https://gitee.com/snowykami/LiteyukiBot --depth=1</code>。
|
||||
- title: 使用 <code>cd LiteyukiBot</code> 切换到项目目录。
|
||||
- title: 使用 <code>pip install -r requirements.txt</code> 安装项目依赖。
|
||||
details: 如果你有多个 Python 环境,请使用 <code>pythonx -m pip install -r requirements.txt</code>。
|
||||
- title: 使用 <code>python main.py</code> 启动项目。
|
||||
copyright: © 2021-2024 SnowyKami All Rights Reserved
|
||||
|
||||
---
|
86
docs/childrensdaybak.md
Normal file
@ -0,0 +1,86 @@
|
||||
---
|
||||
home: true
|
||||
icon: home
|
||||
title: 首页
|
||||
heroImage: https://cdn.liteyuki.icu/static/img/logo.png
|
||||
bgImage:
|
||||
bgImageDark:
|
||||
bgImageStyle:
|
||||
background-attachment: fixed
|
||||
heroText: LiteyukiBot
|
||||
tagline: 轻雪机器人,一个以轻量和简洁为设计理念基于Nonebot2的OneBot标准聊天机器人
|
||||
|
||||
actions:
|
||||
- text: 快速部署
|
||||
icon: lightbulb
|
||||
link: ./deployment/install.html
|
||||
type: primary
|
||||
|
||||
- text: 使用手册
|
||||
icon: book
|
||||
link: ./usage/basic_command.html
|
||||
|
||||
highlights:
|
||||
|
||||
- header: 简洁至上
|
||||
image: /assets/image/layout.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/2-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/2-dark.svg
|
||||
bgImageStyle:
|
||||
background-repeat: repeat
|
||||
background-size: initial
|
||||
features:
|
||||
- title: 基于Nonebot2
|
||||
icon: robot
|
||||
details: 拥有良好的生态支持
|
||||
link: https://nonebot.dev/
|
||||
|
||||
- title: 便捷插件管理
|
||||
icon: plug
|
||||
details: 使用<code>包管理器</code>,无需命令行操作即可安装/卸载插件
|
||||
|
||||
- title: 人性化交互
|
||||
icon: mouse-pointer
|
||||
details: 新的点击交互模式,拒绝手打指令
|
||||
|
||||
- title: 主题支持
|
||||
icon: paint-brush
|
||||
details: 使用资源包对外观进行完全自定义
|
||||
link: https://bot.liteyuki.icu/usage/resource_pack.html
|
||||
|
||||
- title: 国际化
|
||||
icon: globe
|
||||
details: 通过资源包支持多种语言
|
||||
link: https://baike.baidu.com/item/i18n/6771940
|
||||
|
||||
- title: 简易配置
|
||||
icon: cog
|
||||
details: 无需繁琐前期过程,开箱即用
|
||||
link: https://bot.liteyuki.icu/deployment/config.html
|
||||
|
||||
- title: 高性能
|
||||
icon: tachometer-alt
|
||||
details: 500个插件,3s内启动
|
||||
|
||||
- title: 滚动更新
|
||||
icon: cloud-download
|
||||
details: 让你的机器人保持最新提交
|
||||
|
||||
- title: 开源
|
||||
icon: code
|
||||
details: 项目遵循MIT协议开源,欢迎各位的贡献
|
||||
|
||||
- header: 快速部署
|
||||
image: /assets/image/box.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/3-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/3-dark.svg
|
||||
highlights:
|
||||
- title: 安装 Git 和 Python3.10+
|
||||
- title: 使用 <code>git clone https://github.com/snowykami/LiteyukiBot</code> 以克隆项目至本地。
|
||||
details: 如果无法连接到GitHub,可以使用 <code>git clone https://gitee.com/snowykami/LiteyukiBot</code>。
|
||||
- title: 使用 <code>cd LiteyukiBot</code> 切换到项目目录。
|
||||
- title: 使用 <code>pip install -r requirements.txt</code> 安装项目依赖。
|
||||
details: 如果你有多个 Python 环境,请使用 <code>pythonx -m pip install -r requirements.txt</code>。
|
||||
- title: 使用 <code>python main.py</code> 启动项目。
|
||||
copyright: © 2021-2024 SnowyKami All Rights Reserved
|
||||
---
|
@ -1,90 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import {computed, ref} from 'vue'
|
||||
import ItemCard from './PluginItemCard.vue'
|
||||
import ToggleSwitch from "./ToggleSwitch.vue";
|
||||
import {getTextRef} from "./scripts/i18n";
|
||||
|
||||
let showLiteyukiPluginOnly = ref(false)
|
||||
let filteredItems = computed(() => {
|
||||
let filtered = items.value
|
||||
if (search.value) {
|
||||
filtered = filtered.filter(item =>
|
||||
item.name.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.desc.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.author.toLowerCase().includes(search.value.toLowerCase()) ||
|
||||
item.module_name.toLowerCase().includes(search.value.toLowerCase())
|
||||
)
|
||||
}
|
||||
if (showLiteyukiPluginOnly.value) {
|
||||
filtered = filtered.filter(item => item.is_liteyuki_plugin)
|
||||
}
|
||||
return filtered
|
||||
})
|
||||
// 插件商店Nonebot
|
||||
let items = ref([])
|
||||
let search = ref('')
|
||||
// 从官方拉取
|
||||
fetch("/plugins.json")
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
data.forEach(item => {
|
||||
item.is_liteyuki_plugin = true
|
||||
})
|
||||
items.value = data
|
||||
})
|
||||
.catch(error => console.error(error))
|
||||
|
||||
//追加
|
||||
fetch('https://registry.nonebot.dev/plugins.json')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
// 遍历data的每一项,把is_official设为false
|
||||
data.forEach(item => {
|
||||
item.is_official = false
|
||||
})
|
||||
items.value = items.value.concat(data)
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="market">
|
||||
<h1>{{ getTextRef('pluginStore') }}</h1>
|
||||
<p>{{ getTextRef('pluginStoreDesc') }}</p>
|
||||
<!-- 搜索框-->
|
||||
<div class="search-box-div">
|
||||
<input class="item-search-box" type="text" v-model="search" :placeholder="getTextRef('search')"/>
|
||||
<ToggleSwitch v-model:modelValue="showLiteyukiPluginOnly"/>
|
||||
{{ getTextRef('liteyukiOnly') }}
|
||||
</div>
|
||||
<div class="items">
|
||||
<!-- 使用filteredItems来布局商品 -->
|
||||
<ItemCard v-for="item in filteredItems" :key="item.id" :item="item"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
h1 {
|
||||
color: #00a6ff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.items {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.search-box-div {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.search-box-div input {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
@ -1,287 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import DefaultTheme from "vitepress/theme";
|
||||
import {ref, onMounted, onUnmounted} from "vue";
|
||||
import {statsApi, GithubStats, RepoUrl, StarMapUrl, uploadVisitRecord} from "./scripts/statsApi";
|
||||
import {getTextRef, updateRefData} from "./scripts/i18n";
|
||||
import {onBeforeRouteUpdate} from 'vue-router';
|
||||
|
||||
const {Layout} = DefaultTheme;
|
||||
|
||||
let githubStats: GithubStats | null = null;
|
||||
|
||||
const dataSections = {
|
||||
total: {
|
||||
name: 'total',
|
||||
color: '#00a6ff',
|
||||
value: ref(2005),
|
||||
link: StarMapUrl
|
||||
},
|
||||
online: {
|
||||
name: 'online',
|
||||
color: '#7eff7e',
|
||||
value: ref(1145),
|
||||
link: StarMapUrl
|
||||
},
|
||||
stars: {
|
||||
name: 'stars',
|
||||
color: '#ffcc00',
|
||||
value: ref(1234),
|
||||
link: `${RepoUrl}/stargazers`
|
||||
},
|
||||
forks: {
|
||||
name: 'forks',
|
||||
color: '#ff6600',
|
||||
value: ref(9420),
|
||||
link: `${RepoUrl}/forks`
|
||||
},
|
||||
issues: {
|
||||
name: 'issues',
|
||||
color: '#ff0000',
|
||||
value: ref(1145),
|
||||
link: `${RepoUrl}/issues`
|
||||
},
|
||||
prs: {
|
||||
name: 'prs',
|
||||
color: '#f15df1',
|
||||
value: ref(6543),
|
||||
link: `${RepoUrl}/pulls`
|
||||
},
|
||||
plugins: {
|
||||
name: 'plugins',
|
||||
color: '#a766ff',
|
||||
value: ref(1763),
|
||||
link: './store/plugin'
|
||||
},
|
||||
resources: {
|
||||
name: 'resources',
|
||||
color: '#5a54fa',
|
||||
value: ref(6789),
|
||||
link: './store/resource'
|
||||
},
|
||||
visitors: {
|
||||
name: 'visitors',
|
||||
color: '#00a6ff',
|
||||
value: ref(1234),
|
||||
link: RepoUrl
|
||||
},
|
||||
}
|
||||
|
||||
async function updateData() {
|
||||
// dataSections.online.value.value = await statsApi.getOnline();
|
||||
// dataSections.total.value.value = await statsApi.getTotal();
|
||||
[
|
||||
dataSections.online.value.value,
|
||||
dataSections.total.value.value,
|
||||
dataSections.plugins.value.value,
|
||||
dataSections.resources.value.value,
|
||||
dataSections.visitors.value.value,
|
||||
githubStats,
|
||||
|
||||
] = await Promise.all([
|
||||
statsApi.getOnline(),
|
||||
statsApi.getTotal(),
|
||||
statsApi.getPluginNum(),
|
||||
statsApi.getResourceNum(),
|
||||
statsApi.getVisitCount(),
|
||||
statsApi.getGithubStats(),
|
||||
]);
|
||||
dataSections.stars.value.value = githubStats?.stars || 0;
|
||||
dataSections.forks.value.value = githubStats?.forks || 0;
|
||||
dataSections.issues.value.value = githubStats?.issues || 0;
|
||||
dataSections.prs.value.value = githubStats?.prs || 0;
|
||||
}
|
||||
|
||||
function formatNumber(num: { value: number }): string {
|
||||
return num.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
const intervalId = setInterval(updateData, 10000);
|
||||
updateData();
|
||||
uploadVisitRecord();
|
||||
onUnmounted(() => {
|
||||
clearInterval(intervalId);
|
||||
});
|
||||
});
|
||||
|
||||
onBeforeRouteUpdate(() => {
|
||||
updateRefData();
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Layout>
|
||||
<template #home-features-before>
|
||||
<div class="stats-bar-content">
|
||||
<div class="stats-bar">
|
||||
<div class="stats-info">
|
||||
<div class="stats-title">{{ getTextRef('stats') }}</div>
|
||||
<div class="sections">
|
||||
<div v-for="section in Object.values(dataSections)" :key="section.name" class="section">
|
||||
<a :href="section.link" target="_blank">
|
||||
<div class="section-tab">
|
||||
<span class="dot" :style="{backgroundColor: section.color}"></span>
|
||||
<span class="text">{{ getTextRef(section.name) }}</span>
|
||||
</div>
|
||||
<div class="number">{{ formatNumber(section.value) }}</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="starmap">
|
||||
<iframe src="https://starmap.liteyuki.icu/" width="100%" height="300px" class="gamma"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.stats-bar-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.gamma {
|
||||
filter: brightness(1.8);
|
||||
}
|
||||
|
||||
.dark .gamma {
|
||||
filter: brightness(1.0);
|
||||
}
|
||||
|
||||
.stats-bar {
|
||||
width: 80%;
|
||||
max-width: 1150px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 20px;
|
||||
margin: 10px;
|
||||
border-radius: var(--border-radius-2);
|
||||
background-color: var(--vp-c-gray-1);
|
||||
flex-direction: column; /* 默认纵向布局 */
|
||||
}
|
||||
|
||||
.stats-info{
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.stats-title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sections {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
||||
gap: 15px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative; /* 使伪元素相对于父元素定位 */
|
||||
border-radius: var(--border-radius-2);
|
||||
}
|
||||
|
||||
.section::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border: 0 solid transparent; /* 初始边框为透明 */
|
||||
transition: border 0.1s ease-in-out; /* 添加过渡效果 */
|
||||
border-radius: var(--border-radius-2);
|
||||
pointer-events: none; /* 确保伪元素不会阻挡点击事件 */
|
||||
}
|
||||
|
||||
.section:hover::before {
|
||||
border: 1px solid #00a6ff; /* 悬停时添加边框 */
|
||||
border-radius: var(--border-radius-2);
|
||||
}
|
||||
|
||||
.section-tab {
|
||||
margin-left: 15px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center; /* 确保垂直居中 */
|
||||
}
|
||||
|
||||
.dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.text {
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.number {
|
||||
font-size: 27px;
|
||||
font-weight: bold;
|
||||
margin-top: 5px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.starmap {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
border-radius: var(--border-radius-2);
|
||||
}
|
||||
|
||||
.starmap iframe {
|
||||
position: absolute;
|
||||
top: -150px; /* 根据需要调整裁剪位置 */
|
||||
left: -40px; /* 根据需要调整裁剪位置 */;
|
||||
width: calc(100% + 80px); /* 根据需要调整裁剪宽度 */
|
||||
height: calc(100% + 300px); /* 根据需要调整裁剪高度 */
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
/* PC模式下的样式 */
|
||||
.stats-bar {
|
||||
flex-direction: row;
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
.stats-info {
|
||||
width: 40%;
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
.starmap {
|
||||
width: 60%;
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.starmap iframe {
|
||||
position: absolute;
|
||||
top: -130px; /* 根据需要调整裁剪位置 */
|
||||
left: -60px; /* 根据需要调整裁剪位置 */;
|
||||
width: calc(100% + 120px); /* 根据需要调整裁剪宽度 */
|
||||
height: calc(100% + 280px); /* 根据需要调整裁剪高度 */
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
@ -1,67 +0,0 @@
|
||||
<template>
|
||||
<label class="switch">
|
||||
<input type="checkbox" :checked="modelValue" @change="updateValue($event.target.checked)">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, defineEmits } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: Boolean
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:modelValue'])
|
||||
|
||||
const updateValue = (value: boolean) => {
|
||||
emit('update:modelValue', value)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 60px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.slider {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #ccc;
|
||||
transition: .4s;
|
||||
border-radius: 34px;
|
||||
}
|
||||
|
||||
.slider:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
left: 4px;
|
||||
bottom: 4px;
|
||||
background-color: white;
|
||||
transition: .4s;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
input:checked + .slider {
|
||||
background-color: #2196F3;
|
||||
}
|
||||
|
||||
input:checked + .slider:before {
|
||||
transform: translateX(26px); /* 调整为 26px 以确保对齐 */
|
||||
}
|
||||
</style>
|
@ -1,74 +0,0 @@
|
||||
import {ref} from "vue";
|
||||
|
||||
import {useData} from "vitepress";
|
||||
|
||||
const i18nData = {
|
||||
en: {
|
||||
stats: 'Stats',
|
||||
online: 'Online',
|
||||
offline: 'Offline',
|
||||
total: 'Total',
|
||||
fetching: 'Fetching',
|
||||
stars: 'Stars',
|
||||
forks: 'Forks',
|
||||
issues: 'Issues',
|
||||
prs: 'Pull Requests',
|
||||
visitors: 'Visitor',
|
||||
size: 'Size',
|
||||
plugins: 'Plugins',
|
||||
resources: 'Resources',
|
||||
pluginStore: 'Plugin Store',
|
||||
pluginStoreDesc: 'Content from the LightSnow Plugin Store, LightSnow supports NoneBot through the lpnonebot plugin, and references some NoneBot plugins',
|
||||
liteyukiOnly: 'Liteyuki Only',
|
||||
search: 'Search',
|
||||
resourceStore: 'Resources Store',
|
||||
},
|
||||
zh: {
|
||||
stats: '统计信息',
|
||||
online: '在线',
|
||||
offline: '离线',
|
||||
total: '实例',
|
||||
fetching: '获取中',
|
||||
stars: '星星',
|
||||
forks: '叉子',
|
||||
issues: '开启议题',
|
||||
prs: '合并请求',
|
||||
visitors: '访客',
|
||||
size: '大小',
|
||||
plugins: '插件',
|
||||
resources: '主题资源',
|
||||
store: '商店',
|
||||
pluginStore: '插件商店',
|
||||
pluginStoreDesc: '内容来自轻雪插件商店,轻雪通过lpnonebot插件对NoneBot实现支持,引用了部分NoneBot插件',
|
||||
liteyukiOnly: '仅轻雪',
|
||||
search: '搜索',
|
||||
resourceStore: '资源商店',
|
||||
}
|
||||
}
|
||||
|
||||
let refData = {}
|
||||
|
||||
function getText(lang: string, key: string): string {
|
||||
lang = formatLang(lang);
|
||||
return i18nData[lang][key];
|
||||
}
|
||||
|
||||
function formatLang(lang: string): string {
|
||||
if (lang.includes('-')) {
|
||||
return lang.split('-')[0];
|
||||
}
|
||||
return lang;
|
||||
}
|
||||
|
||||
export function updateRefData() {
|
||||
const lang = formatLang(useData().site.value.lang);
|
||||
for (let key in refData) {
|
||||
refData[key].value = getText(lang, key);
|
||||
}
|
||||
}
|
||||
|
||||
export function getTextRef(key: string): any {
|
||||
const lang = formatLang(useData().site.value.lang);
|
||||
refData[key] = getText(lang, key);
|
||||
return refData[key]
|
||||
}
|
@ -1,139 +0,0 @@
|
||||
// URL
|
||||
export const OWNER = "LiteyukiStudio"
|
||||
export const REPO = "LiteyukiBot"
|
||||
const githubAPIUrl = "https://api.github.com"
|
||||
const onlineFetchUrl = "https://api.liteyuki.icu/online";
|
||||
const totalFetchUrl = "https://api.liteyuki.icu/count";
|
||||
const visitRecordUrl = "https://api.liteyuki.icu/visit";
|
||||
const visitCountUrl = "https://api.liteyuki.icu/visit_count";
|
||||
|
||||
export const RepoUrl = `https://github.com/${OWNER}/${REPO}`
|
||||
export const StarMapUrl = "https://starmap.liteyuki.icu"
|
||||
|
||||
type GithubStats = {
|
||||
stars: number;
|
||||
forks: number;
|
||||
watchers: number;
|
||||
issues?: number;
|
||||
prs?: number;
|
||||
size?: number;
|
||||
}
|
||||
|
||||
// 异步接口
|
||||
interface StatsApi {
|
||||
getTotal: () => Promise<number>;
|
||||
getOnline: () => Promise<number>;
|
||||
getGithubStats: () => Promise<GithubStats>;
|
||||
getPluginNum: () => Promise<number>;
|
||||
getResourceNum: () => Promise<number>;
|
||||
getVisitCount: () => Promise<number>;
|
||||
}
|
||||
|
||||
|
||||
export type {GithubStats};
|
||||
|
||||
// 实现接口
|
||||
export const statsApi: StatsApi = {
|
||||
getTotal: async () => {
|
||||
try {
|
||||
const res = await fetch(totalFetchUrl);
|
||||
const data = await res.json();
|
||||
return data.register;
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
},
|
||||
getOnline: async () => {
|
||||
try {
|
||||
const res = await fetch(onlineFetchUrl);
|
||||
const data = await res.json();
|
||||
return data.online;
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
},
|
||||
getGithubStats: async () => {
|
||||
try {
|
||||
const res = await fetch(`${githubAPIUrl}/repos/${OWNER}/${REPO}`);
|
||||
const data = await res.json();
|
||||
return {
|
||||
stars: data.stargazers_count,
|
||||
forks: data.forks_count,
|
||||
watchers: data.watchers_count,
|
||||
issues: data.open_issues_count,
|
||||
prs: data.open_issues_count,
|
||||
size: data.size,
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
stars: -1,
|
||||
forks: -1,
|
||||
watchers: -1,
|
||||
issues: -1,
|
||||
prs: -1,
|
||||
size: -1,
|
||||
};
|
||||
}
|
||||
},
|
||||
getPluginNum: async () => {
|
||||
try {
|
||||
const res = await fetch('/plugins.json');
|
||||
const data = await res.json();
|
||||
return data.length;
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
},
|
||||
getResourceNum: async () => {
|
||||
try {
|
||||
const res = await fetch('/resources.json');
|
||||
const data = await res.json();
|
||||
return data.length;
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
},
|
||||
getVisitCount: async () => {
|
||||
try {
|
||||
const res = await fetch(visitCountUrl);
|
||||
const data = await res.json();
|
||||
return data.count;
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function getDeviceId(): string {
|
||||
// 用户每次访问时生成一个唯一的设备ID,储存在localStorage中,用于统计用户数量
|
||||
const deviceIdKey = 'deviceId';
|
||||
let deviceId = localStorage.getItem(deviceIdKey);
|
||||
|
||||
if (!deviceId) {
|
||||
deviceId = generateUUID();
|
||||
localStorage.setItem(deviceIdKey, deviceId);
|
||||
}
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
export async function uploadVisitRecord() {
|
||||
const deviceId = getDeviceId();
|
||||
try {
|
||||
await fetch(visitRecordUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
body: new URLSearchParams({'device_id': deviceId}).toString(),
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('Failed to upload visit record:', e);
|
||||
}
|
||||
}
|
||||
|
||||
function generateUUID(): string {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
var r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
8
docs/deployment/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: 项目部署
|
||||
index: false
|
||||
icon: laptop-code
|
||||
category: 部署
|
||||
---
|
||||
|
||||
<Catalog />
|
62
docs/deployment/config.md
Normal file
@ -0,0 +1,62 @@
|
||||
---
|
||||
title: 配置
|
||||
icon: cog
|
||||
order: 2
|
||||
category: 使用指南
|
||||
tag:
|
||||
- 配置
|
||||
- 部署
|
||||
---
|
||||
|
||||
首次运行后生成`config.yml`,你可以修改配置项后重启轻雪,绝大多数情况下,你只需要修改`superusers`及`nickname`字段即可
|
||||
|
||||
## **基础配置项**
|
||||
|
||||
```yaml
|
||||
command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
|
||||
host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
|
||||
port: 20216 # 绑定端口
|
||||
nickname: [ "liteyuki" ] # 机器人昵称列表
|
||||
superusers: [ "1919810" ] # 超级用户列表
|
||||
```
|
||||
|
||||
## **其他配置**
|
||||
|
||||
以下为默认值,如需自定义请手动添加
|
||||
|
||||
```yaml
|
||||
onebot_access_token: "" # 访问令牌,对公开放时建议设置
|
||||
default_language: "zh-CN" # 默认语言
|
||||
alconna_auto_completion: false # alconna是否自动补全指令,默认false,建议开启
|
||||
# 开发者选项
|
||||
allow_update: true # 是否允许更新
|
||||
log_level: "INFO" # 日志等级
|
||||
log_icon: true # 是否显示日志等级图标(某些控制台字体不可用)
|
||||
auto_report: true # 是否自动上报问题给轻雪服务器
|
||||
auto_update: true # 是否自动更新轻雪,每天4点检查更新
|
||||
debug: false # 轻雪调试,开启会自动重载Bot或者资源,其他插件自带的调试功能也将开启
|
||||
safe_mode: false # 安全模式,开启后将不会加载任何第三方插件
|
||||
# 其他Nonebot插件的配置项
|
||||
custom_config_1: "custom_value1"
|
||||
custom_config_2: "custom_value2"
|
||||
...
|
||||
```
|
||||
|
||||
> [!tip]
|
||||
> 如果要使用dotenv配置文件,请自行创建`.env.{ENVIRONMENT}`,并在`config.yml`中添加`environment:{ENVIRONMENT}`字段
|
||||
|
||||
## **OneBot实现端配置**
|
||||
|
||||
生产环境中推荐反向WebSocket
|
||||
不同的实现端给出的字段可能不同,但是基本上都是一样的,这里给出一个参考值
|
||||
|
||||
| 字段 | 参考值 | 说明 |
|
||||
|-------------|------------------------------------|----------------------------------|
|
||||
| 协议 | 反向WebSocket | 推荐使用反向ws协议进行通信,即轻雪作为服务端 |
|
||||
| 地址 | ws://127.0.0.1:20216/onebot/v11/ws | 地址取决于配置文件,本机默认为`127.0.0.1:20216` |
|
||||
| AccessToken | `""` | 如果你给轻雪配置了`AccessToken`,请在此填写相同的值 |
|
||||
|
||||
## **其他**
|
||||
|
||||
- 要使用其他通信方式请访问[OneBot Adapter](https://onebot.adapters.nonebot.dev/)获取详细信息
|
||||
- 轻雪不局限于OneBot适配器,你可以使用NoneBot2支持的任何适配器
|
@ -1,8 +1,13 @@
|
||||
---
|
||||
title: 答疑
|
||||
icon: question
|
||||
order: 3
|
||||
category: 使用指南
|
||||
tag:
|
||||
- 配置
|
||||
- 部署
|
||||
---
|
||||
# 答疑
|
||||
|
||||
## **常见问题**
|
||||
|
||||
- 设备上Python环境太乱了,pip和python不对应怎么办?
|
||||
@ -48,5 +53,6 @@ order: 3
|
||||
## **鸣谢**
|
||||
|
||||
- [Nonebot2](https://nonebot.dev)提供的框架支持
|
||||
- [nonebot-plugin-htmlrender](https://github.com/kexue-z/nonebot-plugin-htmlrender/tree/master)提供的渲染功能
|
||||
- [nonebot-plugin-alconna](https://github.com/ArcletProject/nonebot-plugin-alconna)提供的命令解析功能
|
||||
- [MiSans](https://hyperos.mi.com/font/zh/),[MapleMono](https://gitee.com/mirrors/Maple-Mono)提供的字体,且遵守了相关字体开源协议
|
@ -1,10 +1,15 @@
|
||||
---
|
||||
title: 安装
|
||||
icon: download
|
||||
order: 1
|
||||
category: 使用指南
|
||||
tag:
|
||||
- 安装
|
||||
---
|
||||
# 安装
|
||||
|
||||
## **常规部署**
|
||||
## **开始安装**
|
||||
|
||||
### **常规部署**
|
||||
|
||||
1. 安装 [`Git`](https://git-scm.com/download/) 和 [`Python3.10+`](https://www.python.org/downloads/release/python-31010/) 环境
|
||||
|
||||
@ -20,9 +25,9 @@ python main.py
|
||||
```
|
||||
|
||||
> [!tip]
|
||||
> 推荐使用虚拟环境来运行轻雪,以避免依赖冲突,你可以使用`python -m venv .venv`来创建虚拟环境,然后使用`.venv\Scripts\activate`来激活虚拟环境(Linux下使用`source .venv/bin/activate`激活)
|
||||
> 推荐使用虚拟环境来运行轻雪,以避免依赖冲突,你可以使用`python -m venv venv`来创建虚拟环境,然后使用`venv\Scripts\activate`来激活虚拟环境
|
||||
|
||||
## **使用Docker构建**
|
||||
### **使用Docker构建镜像部署**
|
||||
|
||||
1. 安装 [`Docker`](https://docs.docker.com/get-docker/)
|
||||
2. 克隆项目 `git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1`
|
||||
@ -34,11 +39,11 @@ python main.py
|
||||
> Windows请使用项目绝对目录`/path/to/LiteyukiBot`代替`$(pwd)` <br>
|
||||
> 若你修改了端口号请将`20216:20216`中的`20216`替换为你的端口号
|
||||
|
||||
## **使用TRSS Scripts部署**
|
||||
### **使用TRSS Scripts部署**
|
||||
[TRSS_Liteyuki轻雪机器人管理脚本](https://timerainstarsky.github.io/TRSS_Liteyuki/),该功能由TRSS提供支持,不是LiteyukiBot官方提供的功能,推荐使用`Arch Linux`
|
||||
|
||||
|
||||
## **装置要求**
|
||||
## **设备要求**
|
||||
|
||||
- Windows系统版本最低`Windows10+`/`Windows Server 2019+`
|
||||
- Linux系统要支持Python3.10+,推荐`Ubuntu 20.04+`(~~别用你那b CentOS~~)
|
||||
@ -47,9 +52,9 @@ python main.py
|
||||
- 硬盘: 至少`1GB`空间
|
||||
|
||||
> [!warning]
|
||||
> 如果装置上有多个环境,请使用`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可执行文件路径
|
||||
|
||||
> [!warning]
|
||||
> 轻雪的更新功能依赖Git,如果你没有安装Git直接下载源代码运行,你将无法使用更新功能
|
||||
|
||||
#### 其他问题请移步至[答疑](./fandq)
|
||||
#### 其他问题请移步至[答疑](/deployment/fandq)
|
@ -1,77 +0,0 @@
|
||||
---
|
||||
title: Configurations
|
||||
order: 2
|
||||
---
|
||||
|
||||
# Configurations
|
||||
|
||||
LiteyukiBot supports `yaml`, `json`, and `toml` as configuration files, depending on your personal preference.
|
||||
|
||||
When you first run LiteyukiBot, it will generate `config.yml` and the `config` directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify
|
||||
the `superusers` and `nickname` fields.
|
||||
|
||||
When starting, LiteyukiBot will load all configuration files in the project directory `config.yml/yaml/json/toml` and the `config` directory. You can create multiple configuration files in
|
||||
the `config` directory, and LiteyukiBot will automatically merge these configuration files.
|
||||
|
||||
## **Basic Configuration**
|
||||
|
||||
```yaml
|
||||
# NoneBot configuration
|
||||
nonebot:
|
||||
command_start: [ "/", "" ] # Command prefix, if there is no "" empty command header, please enable alconna_use_command_start to ensure alconna parsing is normal
|
||||
host: 127.0.0.1 # Listening address, default is local, if you want to receive external requests, please fill in
|
||||
port: 20216 # Binding port
|
||||
nickname: [ "liteyuki" ] # Bot nickname list
|
||||
superusers: [ "1919810" ] # Superuser list
|
||||
liteyuki:
|
||||
log_level: "INFO" # Log level
|
||||
log_icon: true # Whether to display the log level icon (some console fonts are not available)
|
||||
auto_report: true # Whether to automatically report problems to Liteyuki server
|
||||
auto_update: true # Whether to automatically update Liteyuki, check for updates at 4 am every day
|
||||
plugins: [ ] # Liteyuki plugin list
|
||||
plugin_dirs: [ ] # Liteyuki plugin directory list
|
||||
```
|
||||
|
||||
## **Other configurations**
|
||||
|
||||
The following is the default value. If you need to customize it, please add it manually
|
||||
|
||||
```yaml
|
||||
# Advanced configuration
|
||||
nonebot:
|
||||
onebot_access_token: "" # OneBot access token
|
||||
default_language: "zh-CN" # Default language
|
||||
alconna_auto_completion: false # alconna auto completion
|
||||
safe_mode: false # Safe mode, if true, the bot will not load any plugins
|
||||
# other nonebot configurations
|
||||
custom_config_1: "custom_value1"
|
||||
custom_config_2: "custom_value2"
|
||||
|
||||
# development configuration
|
||||
liteyuki:
|
||||
allow_update: true # Whether to allow Liteyuki to update
|
||||
debug: false # Debug mode, if true, Liteyuki will output more detailed logs
|
||||
dev_mode: false # development mode, if true, Liteyuki will load all plugins in the development directory
|
||||
...
|
||||
```
|
||||
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
## **Example: Configuration of OneBot implementation side connected to NoneBot**
|
||||
|
||||
In production environments, it is recommended to use reverse WebSocket
|
||||
The fields provided by different implementation sides may be different, but basically the same. Here is a reference value
|
||||
|
||||
| Fields | Value | Description |
|
||||
|-------------|------------------------------------|---------------------------------------------------------------------------------------|
|
||||
| protocol | Reverse WebSocket | Liteyuki-NoneBot as server |
|
||||
| address | ws://127.0.0.1:20216/onebot/v11/ws | The address depends on the configuration file, the default is ` |
|
||||
| AccessToken | `""` | If you have configured `AccessToken` for Liteyuki, please fill in the same value here |
|
||||
|
||||
- To use other communication methods, please visit [OneBot Adapter](https://onebot.adapters.nonebot.dev/) for detailed information
|
||||
|
||||
## **Other**
|
||||
|
||||
- Liteyuki is not limited to the OneBot adapter and NoneBot2. You can use any adapter supported by NoneBot2 or use the Liteyuki message delivery plugin
|
@ -1,60 +0,0 @@
|
||||
---
|
||||
title: FAQ
|
||||
order: 3
|
||||
---
|
||||
# FAQ
|
||||
|
||||
## **Frequently Asked Questions**
|
||||
|
||||
- There are too many python interpreters on my computer, how do I know which one to use?
|
||||
- You can specify which python interpreter to use by using the full path to the python executable, for example, `/path/to/python main.py`
|
||||
- Use virtual environments to avoid conflicts between different python interpreters
|
||||
|
||||
- Why does the bot not respond after I start it?
|
||||
- Please check the configuration file `command_start` or `superusers`, make sure you have permission to use the command and send it correctly
|
||||
- Make sure the command header does not conflict with `nickname{}`, for example, a command is `help`, but the `Bot` nickname has a `help`, then it will be parsed as a nickname instead of a command
|
||||
|
||||
- Update Liteyuki failed, error `InvalidGitRepositoryError`
|
||||
- Please install `Git` correctly and deploy Liteyuki using cloning instead of direct download
|
||||
|
||||
- How to log in to chat platforms such as Telegram?
|
||||
- If you have this question, it means you don't know much about this project.
|
||||
This project does not implement the login function, only the message processing and response.
|
||||
The login function is provided by the implementation side (protocol side). The implementation side itself does not handle response logic.
|
||||
It processes and reports messages to Liteyuki according to the OneBot standard.
|
||||
You need to use an implementation side that complies with the OneBot standard to connect to Liteyuki and report messages to Liteyuki.
|
||||
Some recommended implementation sides have been listed below
|
||||
|
||||
- `Playwright` installation failed
|
||||
- Enter `playwright install` to install the browser
|
||||
|
||||
- Some plugins report errors after installation and cannot be started
|
||||
- Please refer to the plugin documentation first, confirm that the necessary configuration items of the plugin are intact,
|
||||
and if the problem persists, please contact the plugin author or start Liteyuki in safe mode `safe_mode: true`.
|
||||
In safe mode, you can use `npm uninstall` to uninstall problematic plugins
|
||||
|
||||
## Other questions
|
||||
|
||||
- Join chat group[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
|
||||
- If you don't have a QQ account, you can [submit an issue on GitHub](https://github.com/LiteyukiStudio/LiteyukiBot/issues/new?assignees=&labels=&projects=&template=%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88.md&title=)
|
||||
|
||||
## **Recommended Solution(QQ)**
|
||||
|
||||
1. [Lagrange.OneBot](https://github.com/KonataDev/Lagrange.Core), based on `Lagrange.Core`, a Linux QQ implementation, supports OneBotv11 protocol
|
||||
2. [LLOneBot](https://github.com/LLOneBot/LLOneBot), a plugin for `Liteloader NTQQ`, supports OneBotv11 protocol
|
||||
3. [OpenShamrock](https://github.com/whitechi73/OpenShamrock), based on Lsposed, supports kritor protocol
|
||||
4. [TRSS-Yunzai](https://github.com/TimeRainStarSky/Yunzai), based on `Node.js`, supports OneBotv11 protocol
|
||||
5. [go-cqhttp](https://github.com/Mrs4s/go-cqhttp),A QQ Client based on `go`, supports OneBotv11 protocol
|
||||
6. [Gensokyo](https://github.com/Hoshinonyaruko/Gensokyo), use QQ protocol
|
||||
|
||||
## **Recommended Solution(Minecraft)**
|
||||
|
||||
1. [MinecraftOneBot](https://github.com/snowykami/MinecraftOnebot), We develop a Minecraft server chat bot
|
||||
|
||||
Other project encountered issues, please prioritize the documentation and issues of the project itself, don't ask LiteyukiBot developers
|
||||
|
||||
## **Acknowledgements**
|
||||
|
||||
- [Nonebot2](https://nonebot.dev) provides the underlying framework
|
||||
- [nonebot-plugin-alconna](https://github.com/ArcletProject/nonebot-plugin-alconna) provides the command parser
|
||||
- [MiSans](https://hyperos.mi.com/font/zh/),[MapleMono](https://gitee.com/mirrors/Maple-Mono) provides the font
|
@ -1,57 +0,0 @@
|
||||
---
|
||||
title: Install
|
||||
order: 1
|
||||
---
|
||||
# Install
|
||||
|
||||
## **Normal Installation**
|
||||
|
||||
1. Install [`Git`](https://git-scm.com/download/) and [`Python3.10+`](https://www.python.org/downloads/release/python-31010/) Environment.
|
||||
|
||||
```bash
|
||||
# Clone the project
|
||||
git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
|
||||
# change directory
|
||||
cd LiteyukiBot
|
||||
# install dependencies
|
||||
pip install -r requirements.txt
|
||||
# start the bot!
|
||||
python main.py
|
||||
```
|
||||
|
||||
> [!tip]
|
||||
> It is recommended to use a virtual environment to run Liteyuki to avoid dependency conflicts.
|
||||
> You can use `python -m venv .venv` to create a virtual environment, and then use `.venv\Scripts\activate` to activate the virtual environment
|
||||
> (use `source .venv/bin/activate` to activate on Linux).
|
||||
|
||||
|
||||
## **Run with Docker**
|
||||
|
||||
1. Install [`Docker`](https://docs.docker.com/get-docker/)
|
||||
2. Clone Repo `git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1`
|
||||
3. Change directory `cd LiteyukiBot`
|
||||
4. Build docker image `docker build -t liteyukibot .`
|
||||
5. Run container `docker run -p 20216:20216 -v $(pwd):/liteyukibot -v $(pwd)/.cache:/root/.cache liteyukibot`
|
||||
|
||||
> [!tip]
|
||||
> If you are using Windows, please use the absolute project directory `/path/to/LiteyukiBot` instead of `$(pwd)` <br>
|
||||
> If you have modified the port number, please replace `20216:20216` with your port number
|
||||
|
||||
## **Use TRSS Script**
|
||||
[TRSS_Liteyuki Management Script](https://timerainstarsky.github.io/TRSS_Liteyuki/), which provides a more convenient way to manage LiteyukiBot, recommended to use `Arch Linux`
|
||||
|
||||
|
||||
## **Device Requirements**
|
||||
- Windows system version minimum `Windows10+`/`Windows Server 2019+`
|
||||
- Linux system requires Python3.10+, recommended `Ubuntu 20.04+`
|
||||
- CPU: at least `1vCPU`
|
||||
- Memory: Bot without other plugins will occupy `300~500MB`, including `chromium` and `node` processes, other plugins depend on specific plugins, recommended `1GB` or more
|
||||
- Disk: at least `1GB` of space
|
||||
|
||||
> [!warning]
|
||||
> If there are multiple environments on the device, please use `path/to/python -m pip install -r requirements.txt` to install dependencies, `path/to/python` is the path to your Python executable
|
||||
|
||||
> [!warning]
|
||||
> Liteyuki's update function depends on Git. If you do not have Git installed and run the source code directly, you will not be able to use the update function
|
||||
|
||||
#### For other questions, please refer to [FAQ](./fandq)
|
@ -1,98 +0,0 @@
|
||||
---
|
||||
title: 进程通信
|
||||
order: 4
|
||||
---
|
||||
|
||||
# **Channel Communication**
|
||||
|
||||
### Introduction
|
||||
|
||||
LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it.
|
||||
Therefore, it is impossible to communicate through shared memory and direct object transfer.
|
||||
Liteyuki provides a channel [`Channel`](./api/comm/channel#class-channel-generic-t) for inter-process communication like `go`.
|
||||
You can send messages to other processes through [`Channel`](./api/comm/channel#class-channel-generic-t) and listen to messages from other processes.
|
||||
|
||||
### Example
|
||||
|
||||
The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the `chan.on_receive()` decorator callback function, and active mode needs to call `chan.receive()` to implement
|
||||
|
||||
- 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为`{process_name}-active`和`{process_name}-passive`,
|
||||
- 主进程中通过`get_channel`函数获取通道对象
|
||||
- 子进程中导入单例`active_channel`及`passive_channel`即可
|
||||
|
||||
> 在轻雪插件中(主进程中)
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
|
||||
from liteyuki.comm import get_channel, Channel
|
||||
from liteyuki import get_bot
|
||||
|
||||
# get_channel函数获取通道对象,参数为调用set_channel时的通道标识
|
||||
channel_passive = get_channel("nonebot-passive") # 获取被动通道
|
||||
channel_active = get_channel("nonebot-active") # 获取主动通道
|
||||
liteyuki_bot = get_bot()
|
||||
|
||||
|
||||
# 注册一个函数在轻雪启动后运行
|
||||
@liteyuki_bot.on_after_start
|
||||
async def send_data():
|
||||
while True:
|
||||
channel_passive.send("I am liteyuki main process passive")
|
||||
channel_active.send("I am liteyuki main process active")
|
||||
await asyncio.sleep(3) # 每3秒发送一次消息
|
||||
```
|
||||
|
||||
> 在子进程中(例如NoneBot插件中)
|
||||
|
||||
```python
|
||||
from nonebot import get_driver
|
||||
from liteyuki.comm import active_channel, passive_channel # 子进程中获取通道直接导入进程全局单例即可
|
||||
from liteyuki.log import logger
|
||||
|
||||
driver = get_driver()
|
||||
|
||||
|
||||
# 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行
|
||||
@passive_channel.on_receive(filter_func=lambda data: isinstance(data, str))
|
||||
async def on_passive_receive(data):
|
||||
logger.info(f"Passive receive: {data}")
|
||||
|
||||
|
||||
# 注册一个函数在NoneBot启动后运行
|
||||
@driver.on_startup
|
||||
def on_startup():
|
||||
while True:
|
||||
data = active_channel.receive()
|
||||
logger.info(f"Active receive: {data}")
|
||||
```
|
||||
|
||||
> 启动后控制台输出
|
||||
|
||||
```log
|
||||
0000-00-00 00:00:00 [ℹ️信息] Passive receive: I am liteyuki main process passive
|
||||
0000-00-00 00:00:00 [ℹ️信息] Active receive: I am liteyuki main process active
|
||||
0000-00-00 00:00:03 [ℹ️信息] Passive receive: I am liteyuki main process passive
|
||||
0000-00-00 00:00:03 [ℹ️信息] Active receive: I am liteyuki main process active
|
||||
...
|
||||
```
|
||||
|
||||
## **共享内存通信**
|
||||
|
||||
### 简介
|
||||
|
||||
- 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过`storage`模块实现内存共享通信,该模块封装通道实现
|
||||
- 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作
|
||||
|
||||
### 示例
|
||||
|
||||
> 在任意进程中均可使用
|
||||
|
||||
```python
|
||||
from liteyuki.comm.storage import shared_memory
|
||||
|
||||
shared_memory.set("key", "value") # 设置共享内存
|
||||
value = shared_memory.get("key") # 获取共享内存
|
||||
```
|
||||
|
||||
源代码:[liteyuki/comm/storage.py](https://github.com/LiteyukiStudio/LiteyukiBot/blob/main/liteyuki/comm/storage.py)
|
@ -1,64 +0,0 @@
|
||||
---
|
||||
title: Development Guide
|
||||
order: 0
|
||||
---
|
||||
# Development Guide
|
||||
|
||||
## How to Develop
|
||||
Please read the [Plugin Development](./plugin) and [API Reference](./api/) documents if you are developing a plugin.
|
||||
|
||||
If you need to submit code to the Liteyuki repository, please read the following:
|
||||
1. First [fork](https://github.com/LiteyukiStudio/LiteyukiBot/fork) a copy of the Liteyuki repository to your personal/organization account.
|
||||
2. Develop in your repository.
|
||||
3. Create a new branch in your repository and submit your code to this branch.
|
||||
4. Create a Pull Request in your repository to merge your branch into the `main` branch of the Liteyuki repository.
|
||||
|
||||
- Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
|
||||
- If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
|
||||
- Contact the repository maintainer in case of conflicts.
|
||||
|
||||
### Suggestions
|
||||
- During development, you can use tools such as `mypy`, `flake8`, and `black` for code checking and formatting.
|
||||
- Enable developer mode by setting `dev_mode: true` in `config.yml` to see more debugging information in the console.
|
||||
|
||||
## Project Structure
|
||||
- `main.py`: Bot entry file
|
||||
- `liteyuki`: Framework directory (liteyukibot)
|
||||
- `src`: Bot application source code directory
|
||||
- `liteyuki_plugins`: Liteyuki plugin directory
|
||||
- `nonebot_plugins`: Nonebot plugin directory
|
||||
- `resources`: Built-in resource packs directory
|
||||
- `utils`: Utility directory
|
||||
- `tests`: Unit test directory
|
||||
- `docs`: Documentation directory
|
||||
- `en`: English documentation
|
||||
- `zh`: Chinese documentation
|
||||
- `docker`: Docker related content directory
|
||||
|
||||
The `liteyuki` framework is included in the `LiteyukiBot` application, so this project is both the `LiteyukiBot` application repository and the `liteyuki` framework repository.
|
||||
|
||||
The `src` directory is the application part, please develop business logic in this directory. `liteyuki_plugins` and `nonebot_plugins` directories are plugin directories, please develop plugins in these directories.
|
||||
|
||||
|
||||
## Standardization
|
||||
- Code should follow [`PEP8`](https://pep8.org/) and [`Google Python Style Guide`](https://google.github.io/styleguide/pyguide.html).
|
||||
- In addition, code submitted to the Liteyuki repository should follow the following guidelines:
|
||||
- Ensure that the code is runnable and harmless.
|
||||
- Ensure that the type hints in the code are correct.
|
||||
- Ensure that the comment style is [`Google Docstring`](https://google.github.io/styleguide/pyguide.html) or
|
||||
[`Liteyuki Docstring`](https://github.com/LiteyukiStudio/litedoc?tab=readme-ov-file#liteyuki-docstring)(recommended) to ensure that Litedoc can parse and generate documentation correctly.
|
||||
- Strings should be enclosed in double quotes `"` as much as possible, and single quotes `'` should be used when nesting strings.
|
||||
- If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
|
||||
- commit message should follow the following guidelines:
|
||||
- You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
|
||||
- We use gitmoji to mark the type of commit, such as `:sparkles:` for introducing new features, `:bug:` for fixing bugs, etc., please refer to [gitmoji](https://gitmoji.dev/) for details.
|
||||
- The format of the commit message is `<emoji> [module]: <message>`, such as `:sparkles: [liteyuki.event]: add new feature`,
|
||||
where the module field is the affected part, such as `liteyuki.message`, `docs.en.guide.md`, etc., not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
|
||||
- There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
|
||||
- The documentation should follow [`Markdown`](https://www.markdownguide.org/) syntax and support vitepress-related content:
|
||||
- Revise the documentation for each language when editing.
|
||||
- Ensure that the links in the document are correct and do not lead to inaccessible links.
|
||||
- Ensure that the **User Documentation** is easy to understand and the **Development Documentation** is detailed.
|
||||
|
||||
## Finally
|
||||
- This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.
|
@ -1,72 +0,0 @@
|
||||
---
|
||||
title: 轻雪函数
|
||||
order: 2
|
||||
---
|
||||
|
||||
# **轻雪函数**
|
||||
|
||||
轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.
|
||||
|
||||
### **函数文件**
|
||||
|
||||
函数文件放在资源包的`functions`目录下,文件名以`.mcfunction` `.lyfunction` `.lyf`结尾,例如`test.mcfunction`,文件内容为一系列的命令,每行一个命令,支持单行注释`#`(编辑时的语法高亮可采取`shell`格式),例如:
|
||||
|
||||
```shell
|
||||
# 在发信器输出"hello world"
|
||||
cmd echo hello world
|
||||
|
||||
# 如果你想同时输出多行内容可以尝试换行符(Python格式)
|
||||
cmd echo hello world\nLiteyuki bot
|
||||
```
|
||||
|
||||
也支持句末注释,例如:
|
||||
```shell
|
||||
cmd echo hello world # 输出"hello world"
|
||||
```
|
||||
|
||||
### **命令文档**
|
||||
|
||||
```shell
|
||||
var <var1=value1> [var2=value2] ... # 定义变量
|
||||
cmd <command> # 在设备上执行命令
|
||||
api <api_name> [var=value...] # 调用Bot API
|
||||
function <func_name> # 调用函数,可递归
|
||||
sleep <time> # 异步等待,单位s
|
||||
nohup <command> # 使用新的task执行命令,即不等待
|
||||
end # 结束函数关键字,包括子task
|
||||
await # 等待所有异步任务结束,若函数中启动了其他task,需要在最后调用,否则task对象会被销毁
|
||||
```
|
||||
|
||||
|
||||
#### **示例**
|
||||
|
||||
```shell
|
||||
# 疯狂戳好友
|
||||
# 使用 /function poke user_id=123456 执行
|
||||
# 每隔0.2s戳两次,无限戳,会触发最大递归深度限制
|
||||
# 若要戳20s后停止,则需要删除await,添加sleep 20和end
|
||||
api friend_poke user_id=user_id
|
||||
api friend_poke user_id=user_id
|
||||
sleep 0.2
|
||||
nohup function poke
|
||||
await
|
||||
```
|
||||
|
||||
### **API**
|
||||
|
||||
理论上所有基于onebotv11的api都可调用,不同Adapter api也有差别.
|
||||
|
||||
[Onebot v11 API文档](https://283375.github.io/onebot_v11_vitepress/api/index.html)
|
||||
|
||||
### **结束关键字**
|
||||
|
||||
由于LiteyukiBot基于异步运行, 所以在编写lyfunction时也要注意异步的调用,避免出现"单线程走到底"的情况是效率提升的关键.
|
||||
|
||||
`await` 异步任务结束关键字,用于结束当前已完成function的执行
|
||||
|
||||
> [!warning]
|
||||
> 但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁
|
||||
|
||||
|
||||
> [!tip]
|
||||
> 编写轻雪函数推荐你使用VS Code插件[Liteyuki Function](https://github.com/LiteyukiStudio/lyfunctionTextmate)实现语法高亮
|
@ -1,80 +0,0 @@
|
||||
---
|
||||
title: 轻雪插件开发
|
||||
order: 3
|
||||
---
|
||||
|
||||
# 简介
|
||||
|
||||
轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能
|
||||
|
||||
## 开始
|
||||
|
||||
### 创建插件
|
||||
|
||||
一个`.py`文件或一个包含`__init__.py`的文件夹即可被识别为插件
|
||||
|
||||
首先创建一个文件夹,例如`watchdog_plugin`,并在其中创建一个`__init__.py`文件,即可创建一个插件
|
||||
|
||||
`__init__.py`
|
||||
```python
|
||||
from liteyuki.plugin import PluginMetadata, PluginType
|
||||
from .watch_dog import * # 导入逻辑部分
|
||||
|
||||
# 定义插件元数据
|
||||
__plugin_meta__ = PluginMetadata(
|
||||
name="NoneDog", # 插件名称
|
||||
version="1.0.0", # 插件版本
|
||||
description="A simple plugin for nonebot developer", # 插件描述
|
||||
type=PluginType.SERVICE # 插件类型
|
||||
)
|
||||
|
||||
# 你的插件代码
|
||||
...
|
||||
```
|
||||
|
||||
### 编写逻辑部分
|
||||
|
||||
轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信
|
||||
以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载
|
||||
`watch_dog.py`
|
||||
```python
|
||||
import os
|
||||
from liteyuki.dev import observer # 导入文件系统观察器
|
||||
from liteyuki import get_bot, logger # 导入轻雪Bot和日志
|
||||
from watchdog.events import FileSystemEvent # 导入文件系统事件
|
||||
|
||||
liteyuki = get_bot() # 获取唯一的轻雪Bot实例
|
||||
|
||||
exclude_extensions = (".pyc", ".pyo") # 排除的文件扩展名
|
||||
|
||||
|
||||
# 用observer的on_file_system_event装饰器监听文件系统事件
|
||||
@observer.on_file_system_event(
|
||||
directories=("src/nonebot_plugins",),
|
||||
event_filter=lambda event: not event.src_path.endswith(exclude_extensions) and ("__pycache__" not in event.src_path) and os.path.isfile(event.src_path)
|
||||
)
|
||||
def restart_nonebot_process(event: FileSystemEvent):
|
||||
logger.debug(f"File {event.src_path} changed, reloading nonebot...")
|
||||
liteyuki.restart_process("nonebot") # 调用重启进程方法
|
||||
```
|
||||
|
||||
### 加载插件
|
||||
|
||||
#### 方法1
|
||||
|
||||
- 在配置文件中的`liteyuki.plugins`中添加你的插件路径,例如`watchdog_plugin`,重启轻雪即可加载插件。
|
||||
|
||||
#### 方法2
|
||||
|
||||
- 使用开发工具快速运行插件,无需手动创建实例
|
||||
- 创建入口文件,例如`main.py`,并在其中写入以下代码
|
||||
|
||||
```python
|
||||
from liteyuki.dev.plugin import run_plugins
|
||||
|
||||
run_plugins("watchdog_plugin")
|
||||
```
|
||||
|
||||
然后运行`python main.py`即可启动插件
|
||||
|
||||
启用插件后,我们在src/nonebot_plugins下创建一个文件,例如`test.py`,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程
|
@ -1,51 +0,0 @@
|
||||
---
|
||||
title: 资源包开发
|
||||
order: 1
|
||||
---
|
||||
|
||||
# 简介
|
||||
|
||||
资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码
|
||||
|
||||
- [资源/主题商店](../store/resource)提供了一些资源包供你选择,你也可以自己制作资源包
|
||||
- 资源包的制作很简单,如果你接触过`Minecraft`的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
|
||||
- 部分内容制作需要一点点前端基础,例如`html`,`css`
|
||||
- 轻雪原版资源包请查看`LiteyukiBot/liteyuki/resources`,可以在此基础上进行修改
|
||||
- 欢迎各位投稿资源包到轻雪资源商店
|
||||
|
||||
请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。
|
||||
|
||||
---
|
||||
|
||||
## 加载资源包
|
||||
|
||||
- 资源包通常是以`.zip`格式压缩的,只需要将其解压到根目录`resources`目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
|
||||
|
||||
```shell
|
||||
main.py
|
||||
resources
|
||||
└─resource_pack_1
|
||||
├─metadata.yml
|
||||
├─templates
|
||||
└───...
|
||||
└─resource_pack_2
|
||||
├─metadata.yml
|
||||
└─...
|
||||
```
|
||||
|
||||
- 你自己制作的资源包也应该遵循这个规则,并且应该在`metadata.yml`中填写一些信息
|
||||
- 若没有`metadata.yml`文件,则该文件夹不会被识别为资源包
|
||||
|
||||
```yaml
|
||||
name: "资源包名称"
|
||||
version: "1.0.0"
|
||||
description: "资源包描述"
|
||||
# 你可以自定义一些信息,但请保证以上三个字段
|
||||
...
|
||||
```
|
||||
|
||||
- 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个`index.html`文件,B包也定义了一个`index.html`文件,那么加载B包后,A包中的`index.html`文件会被覆盖
|
||||
- 对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了`templates/index.html`,在B中定义了`templates/style.css`,可以在A的`index.html`中用`./style.css`相对路径引用B中的css
|
||||
|
||||
> [!tip]
|
||||
> 资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包
|
@ -1,60 +0,0 @@
|
||||
---
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: "LiteyukiBot"
|
||||
tagline: "An integrated chat bot application and management framework"
|
||||
actions:
|
||||
- theme: brand
|
||||
text: 🚀 Get Started
|
||||
link: ./deploy/install
|
||||
- theme: alt
|
||||
text: 📖 Manual
|
||||
link: ./usage/basic
|
||||
- theme: alt
|
||||
text: 📦 Extensions
|
||||
link: ./store/
|
||||
image:
|
||||
light: ./liteyuki.svg
|
||||
dark: ./liteyuki-dark.svg
|
||||
alt: Liteyuki Logo
|
||||
|
||||
features:
|
||||
- title: Ecological Diversity
|
||||
icon: 🛠️
|
||||
details: Based on the liteyuki framework, compatible with any Python bot framework and application
|
||||
link: ./dev/api/api
|
||||
|
||||
- title: Pluggable
|
||||
icon: 🧩
|
||||
details: Use package manager for convenient management of plugins and resource packs
|
||||
link: ./store/plugin
|
||||
|
||||
- title: Customizable
|
||||
icon: 🎨
|
||||
details: Fully customize the appearance using resource packs
|
||||
link: ./store/resource
|
||||
|
||||
- title: Localization
|
||||
icon: 🌐
|
||||
details: Support for multiple languages through resource packs
|
||||
link: https://baike.baidu.com/item/i18n/6771940
|
||||
|
||||
- title: Easy to use
|
||||
icon: ⚙️
|
||||
details: No complicated pre-process, ready to use out of the box
|
||||
link: ./deploy/config
|
||||
|
||||
- title: High Performance
|
||||
icon: 🚀
|
||||
details: 500 plugins, starts within 2 seconds
|
||||
|
||||
- title: Rolling Updates
|
||||
icon: ☁️
|
||||
details: Keep your robot up to date with the latest commits
|
||||
|
||||
- title: Open Source
|
||||
icon: 📄
|
||||
details: The project follows the LSO LICENSE and is open to contributions
|
||||
link: https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE
|
||||
---
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Plugin Store
|
||||
order: 2
|
||||
---
|
||||
|
||||
<PluginStore />
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Resource Store
|
||||
order: 1
|
||||
---
|
||||
|
||||
<ResStore />
|
107
docs/foolsday.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
home: true
|
||||
icon: home
|
||||
title: 首页
|
||||
heroImage: https://cdn.liteyuki.icu/static/img/lykwi.png
|
||||
bgImage:
|
||||
bgImageDark:
|
||||
bgImageStyle:
|
||||
background-attachment: fixed
|
||||
heroText: HeavylavaBot666 # LiteyukiBot 6
|
||||
tagline: 重浆机器人,一个以笨重和复杂为设计理念基于Koishi114514的TwoBotv1919810标准聊天机器人,可用于雪地清扫,使用Typethon编写
|
||||
#tagline: 轻雪机器人,一个以轻量和简洁为设计理念基于Nonebot2的OneBot标准聊天机器人
|
||||
# 泰普森(X
|
||||
|
||||
actions:
|
||||
- text: 快速结束 # 快速开始
|
||||
icon: lightbulb
|
||||
link: ./deployment/install.html
|
||||
type: primary
|
||||
|
||||
- text: 奇怪的册子 # 使用手册
|
||||
icon: book
|
||||
link: ./usage/basic_command.html
|
||||
|
||||
#1. 安装 `Git` 和 `Python3.10+` 环境
|
||||
#2. 克隆项目 `git clone https://github.com/snowykami/LiteyukiBot` (无法连接可以用`https://gitee.com/snowykami/LiteyukiBot`)
|
||||
#3. 切换目录`cd LiteyukiBot`
|
||||
#4. 安装依赖`pip install -r requirements.txt`(如果多个Python环境请指定后安装`pythonx -m pip install -r requirements.txt`)
|
||||
#5. 启动`python main.py`
|
||||
|
||||
highlights:
|
||||
|
||||
- header: 简洁至下 # 简洁至上
|
||||
image: /assets/image/layout.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/2-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/2-dark.svg
|
||||
bgImageStyle:
|
||||
background-repeat: repeat
|
||||
background-size: initial
|
||||
features:
|
||||
- title: 基于Koishi.js233
|
||||
icon: robot
|
||||
details: 拥有辣鸡的生态支持
|
||||
link: https://nonebot.dev/
|
||||
|
||||
- title: 盲目插件管理
|
||||
icon: plug
|
||||
details: 基于nbshi使用<code>xmpn和bib</code>,让你无法安装/卸载插件
|
||||
|
||||
- title: 纯命令行
|
||||
icon: mouse-pointer
|
||||
details: 老的掉牙的交互模式,必须手打指令
|
||||
|
||||
- title: 猪蹄支持
|
||||
icon: paint-brush
|
||||
details: 支持多种烤猪蹄样式,丢弃烤箱,拥抱烧烤架,满足你的干饭需求
|
||||
|
||||
- title: 去国际化
|
||||
icon: globe
|
||||
details: 支持多种语言,包括i18n部分语言和自行扩展的语言代码
|
||||
link: https://baike.baidu.com/item/i18n/6771940
|
||||
|
||||
- title: 超难配置
|
||||
icon: cog
|
||||
details: 无需过多配置,开箱即用
|
||||
link: https://bot.liteyuki.icu/deployment/config.html
|
||||
|
||||
- title: 高占用
|
||||
icon: memory
|
||||
details: 使用更多的意义不明的依赖和资源
|
||||
|
||||
- title: 一个Bot标准
|
||||
icon: link
|
||||
details: 支持OneBotv11/12标准的四种通信协议
|
||||
link: https://onebot.dev/
|
||||
|
||||
- title: Alconna
|
||||
icon: link
|
||||
details: 使用Alconna实现低效命令解析
|
||||
link: https://github.com/nonebot/plugin-alconna
|
||||
|
||||
- title: 不准更新
|
||||
icon: cloud-download
|
||||
details: 要更新自己写新版本去
|
||||
|
||||
- title: 服务支持
|
||||
icon: server
|
||||
details: 内置重浆API,但随时可能提桶跑路
|
||||
|
||||
- title: 闭源
|
||||
icon: code
|
||||
details: 要源代码自己逆向去
|
||||
|
||||
- header: 慢速部署 # 快速部署
|
||||
image: /assets/image/box.svg
|
||||
bgImage: https://theme-hope-assets.vuejs.press/bg/3-light.svg
|
||||
bgImageDark: https://theme-hope-assets.vuejs.press/bg/3-dark.svg
|
||||
highlights:
|
||||
- title: 安装 winget 和 nothing.js # git & node.js+
|
||||
- title: 使用 <code>git clone https://github.com/snowykami/LiteyukiBot</code> 以克隆项目至FTP。 # 本地
|
||||
details: 如果无法连接到PoonHub,可以使用 <code>git clone https://gitee.com/snowykami/LiteyukiBot</code>。
|
||||
- title: 使用 <code>cd LiteyukiBot</code> 切换到项目目录。
|
||||
- title: 使用 <code>npm install -r requirements.txt</code> 安装项目依赖。
|
||||
details: 如果你有多个 nothing.js 环境,请使用 <code>pythonx -m npm install -r requirements.txt</code>。
|
||||
- title: 使用 <code>node main.py</code> 启动项目。
|
||||
copyright: © 2021-2024 SnowyKami All Rights Reserved
|
||||
---
|
@ -1,19 +1,29 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@intlify/unplugin-vue-i18n": "^4.0.0",
|
||||
"vitepress": "^1.3.4",
|
||||
"vitepress-sidebar": "^1.25.0"
|
||||
},
|
||||
"scripts": {
|
||||
"docs:dev": "vitepress dev --host",
|
||||
"docs:build": "vitepress build",
|
||||
"docs:preview": "vitepress preview"
|
||||
},
|
||||
"name": "liteyuki",
|
||||
"version": "2.0.0",
|
||||
"description": "A project of vuepress-theme-hope",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"docs:build": "vuepress-vite build .",
|
||||
"docs:clean-dev": "vuepress-vite dev . --clean-cache",
|
||||
"docs:dev": "vuepress-vite dev .",
|
||||
"docs:update-package": "pnpm dlx vp-update"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vuepress/bundler-vite": "2.0.0-rc.9",
|
||||
"@vuepress/plugin-search": "2.0.0-rc.24",
|
||||
"vue": "^3.4.21",
|
||||
"vuepress": "2.0.0-rc.9",
|
||||
"vuepress-plugin-search-pro": "2.0.0-rc.34",
|
||||
"vuepress-theme-hope": "2.0.0-rc.32"
|
||||
},
|
||||
"dependencies": {
|
||||
"clipboard": "^2.0.11",
|
||||
"vue": "^3.4.38",
|
||||
"vue-route": "^1.5.1",
|
||||
"vue-router": "4"
|
||||
"echarts": "^5.5.1",
|
||||
"element-plus": "^2.7.0",
|
||||
"element-ui": "^2.15.14",
|
||||
"vue-echarts": "7.0.0-beta.0",
|
||||
"vue-router": "^4.4.0"
|
||||
}
|
||||
}
|
3374
docs/pnpm-lock.yaml
@ -1,151 +0,0 @@
|
||||
|
||||
<svg width="618" height="419" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<linearGradient y2="0.49996" x2="1.00023" y1="0.49996" x1="0.00001" data-name="未命名的渐变 11" id="_未命名的渐变_11">
|
||||
<stop stop-color="#73fff1" offset="0"/>
|
||||
<stop stop-color="#5cefff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="457.99" x2="869.05" y1="457.99" x1="834.98" data-name="未命名的渐变 11" id="_未命名的渐变_11-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="377" x2="870" y1="377" x1="838" data-name="未命名的渐变 11" id="_未命名的渐变_11-3"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="425.24" x2="981.27" y1="425.24" x1="894.96" data-name="未命名的渐变 11" id="_未命名的渐变_11-4"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="447.26" x2="1070.42" y1="447.26" x1="986.62" data-name="未命名的渐变 11" id="_未命名的渐变_11-5"/>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 240" id="_未命名的渐变_240">
|
||||
<stop stop-color="#eadeff" offset="0"/>
|
||||
<stop stop-color="#e0efff" offset="0.28"/>
|
||||
<stop stop-color="#d9ecff" offset="0.43"/>
|
||||
<stop stop-color="#aedbff" offset="0.59"/>
|
||||
<stop stop-color="#00d7ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50003" x2="1.00001" y1="0.50003" x1="-0.00002" data-name="未命名的渐变 9" id="_未命名的渐变_9">
|
||||
<stop stop-color="#2ebbff" offset="0"/>
|
||||
<stop stop-color="#006bff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="632.72" x2="1127.05" y1="632.72" x1="1046.74" data-name="未命名的渐变 9" id="_未命名的渐变_9-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="559" x2="1262.04" y1="559" x1="1236.96" data-name="未命名的渐变 9" id="_未命名的渐变_9-3"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="621.97" x2="1262.59" y1="621.97" x1="1235.37" data-name="未命名的渐变 9" id="_未命名的渐变_9-4"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="602.15" x2="1219.09" y1="602.15" x1="1133.96" data-name="未命名的渐变 9" id="_未命名的渐变_9-5"/>
|
||||
<linearGradient y2="0.5" x2="0.99994" y1="0.5" x1="0" data-name="未命名的渐变 12" id="_未命名的渐变_12">
|
||||
<stop stop-color="#64a4ff" offset="0"/>
|
||||
<stop stop-color="#5c98ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_12" y2="629.45" x2="751.06" y1="629.45" x1="730.81" data-name="未命名的渐变 12" id="_未命名的渐变_12-2"/>
|
||||
<linearGradient y2="-0.34151" x2="1.51066" y1="0.36026" x1="0.21368" data-name="未命名的渐变 72" id="_未命名的渐变_72">
|
||||
<stop stop-color="#c4aeff" offset="0"/>
|
||||
<stop stop-color="#ce9fff" offset="0.43"/>
|
||||
<stop stop-color="#af8eff" offset="0.55"/>
|
||||
<stop stop-color="#7d74ff" offset="0.72"/>
|
||||
<stop stop-color="#6333ff" offset="0.9"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.4727" x2="1.00087" y1="0.52857" x1="0.01203" data-name="未命名的渐变 58" id="_未命名的渐变_58">
|
||||
<stop stop-color="#b1ccff" offset="0"/>
|
||||
<stop stop-color="#b8c0ff" offset="0.34"/>
|
||||
<stop stop-color="#cba2ff" offset="0.94"/>
|
||||
<stop stop-color="#ce9fff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50006" x2="1" y1="0.50006" x1="0.00045" data-name="未命名的渐变 13" id="_未命名的渐变_13">
|
||||
<stop stop-color="#5cb1ff" offset="0"/>
|
||||
<stop stop-color="#64aaff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_13" y2="640.89" x2="762.01" y1="640.89" x1="755.95" data-name="未命名的渐变 13" id="_未命名的渐变_13-2"/>
|
||||
<linearGradient y2="0.46723" x2="1.08059" y1="0.5373" x1="0.11482" data-name="未命名的渐变 65" id="_未命名的渐变_65">
|
||||
<stop stop-color="#64a2ff" offset="0.11"/>
|
||||
<stop stop-color="#62a6ff" offset="0.28"/>
|
||||
<stop stop-color="#5cb5ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.61559" x2="1.13197" y1="0.40965" x1="0.09495" data-name="未命名的渐变 66" id="_未命名的渐变_66">
|
||||
<stop stop-color="#5cb5ff" offset="0"/>
|
||||
<stop stop-color="#74e0ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.48885" x2="1.08173" y1="0.51016" x1="0.08139" data-name="未命名的渐变 68" id="_未命名的渐变_68">
|
||||
<stop stop-color="#9cd1ff" offset="0"/>
|
||||
<stop stop-color="#bae0ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50005" x2="1.00016" y1="0.50005" x1="0.00009" data-name="未命名的渐变 71" id="_未命名的渐变_71">
|
||||
<stop stop-color="#a6d3ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.7"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_58" y2="631.98" x2="928.63" y1="638.79" x1="890.79" data-name="未命名的渐变 58" id="_未命名的渐变_58-2"/>
|
||||
<linearGradient y2="0.50004" x2="1.00001" y1="0.50004" x1="-0.00008" data-name="未命名的渐变 14" id="_未命名的渐变_14">
|
||||
<stop stop-color="#5ca4ff" offset="0"/>
|
||||
<stop stop-color="#64a2ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.4999" x2="0.99997" y1="0.4999" x1="-0.00009" data-name="未命名的渐变 5" id="_未命名的渐变_5">
|
||||
<stop stop-color="#64a2ff" offset="0"/>
|
||||
<stop stop-color="#5cc9ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50013" x2="0.99983" y1="0.50013" x1="0.00007" data-name="未命名的渐变 69" id="_未命名的渐变_69">
|
||||
<stop stop-color="#84c9ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.42"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.36565" x2="1.03665" y1="0.6159" x1="0.09061" data-name="未命名的渐变 67" id="_未命名的渐变_67">
|
||||
<stop stop-color="#74e0ff" offset="0"/>
|
||||
<stop stop-color="#8dd6ff" offset="0.56"/>
|
||||
<stop stop-color="#9cd1ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 6" id="_未命名的渐变_6">
|
||||
<stop stop-color="#64a2ff" offset="0"/>
|
||||
<stop stop-color="#5cbfff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 7" id="_未命名的渐变_7">
|
||||
<stop stop-color="#64ccff" offset="0"/>
|
||||
<stop stop-color="#84c9ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_7" y2="548.5" x2="837" y1="548.5" x1="831.98" data-name="未命名的渐变 7" id="_未命名的渐变_7-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_7" y2="569.39" x2="846.98" y1="569.39" data-name="未命名的渐变 7" id="_未命名的渐变_7-3"/>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 8" id="_未命名的渐变_8">
|
||||
<stop stop-color="#84c9ff" offset="0.01"/>
|
||||
<stop stop-color="#b1ccff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="4.66625" y1="0.5" x1="4.61625" data-name="未命名的渐变 55" id="_未命名的渐变_55">
|
||||
<stop stop-color="#b1c9ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.42"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<g data-name="图层 3" id="_图层_3">
|
||||
<path id="svg_1" fill="#7a9ec2" stroke-width="0px" d="m74.07715,375.0022c11.04,8.56 30.35,0.82 33,0c14.37,-4.43 15.38,-15.33 26,-15c10.44,0.33 13.16,10.98 24,10c6.48,-0.59 7.04,-4.53 16,-6c8,-1.31 8.66,1.66 17,1c12.76,-1.01 15.73,-8.33 24,-6c8.42,4.47 11.58,6.51 22,5c0,0 11.3,-1.75 32,-10c1.42,-9.07 4.72,6.12 11.99,12c10.1,9.09 19.95,-0.4 31,8c10.86,8.26 13.5,26.66 13,31c-1.65,4.39 6.37,10.16 6,10c-4.41,-0.77 -20.72,-10.82 -25,-11c-6.8,-1.26 -15.53,-2.26 -24,-5c-17.1,-5.24 -15.17,-10.82 -34,-10c-7.53,0.04 -6.69,-0.47 -12,1c-2.54,-0.23 -9.74,0.73 -13,-1c-18.29,-11.87 -9.94,11.78 -36,3c-9.47,1.86 -14.72,0.65 -18.02,-1.12c-2.21,-1.19 -4.61,-5.33 -6.74,-4.61c-0.57,0.19 -0.74,0.58 -2.24,1.74c-1.2,0.93 -2.27,1.58 -3,2c-0.91,0.36 -1.91,0.7 -3,1c-2.93,0.8 -5.59,1.02 -7.75,1.02c-0.74,0 -1.87,-0.01 -3.25,-0.02c-3.97,0 -3.61,0.03 -4,0c-2.87,-0.21 -3.75,-0.93 -7,-1c-0.42,0 -0.77,0 -1,0l-6,0c-3,0.22 -5.39,0.65 -7,1c-1.72,0.37 -3.36,0.82 -10,3c-3.07,1.01 -4.59,1.59 -6,2c-1.81,0.53 -5.13,1.49 -9,2c-5.07,0.67 -9,0.3 -12,0c-6.54,-0.65 -11.56,-2.18 -14,-3c-4.6,-1.55 -26.12,-13.37 -20,-10c0,0 0,0 0,0c-0.03,-0.02 -20.88,-13.37 -28,-32c-1.09,-2.85 -2,-6 -2,-6c-0.52,-1.8 -1.44,-5.03 -2,-9c-0.44,-3.12 -1.34,-9.53 0,-10c1.69,-0.59 6.23,8.51 7.27,10.48c5.15,9.76 18.12,22.54 52.73,35.52l0.01,-0.01z" class="cls-10"/>
|
||||
<path id="svg_2" fill="#7a9ec2" stroke-width="0px" d="m260.07715,284.0022c-13.63,7.43 -2.93,57.29 2,57c1.82,-0.11 1.13,-6.97 8,-16c3,-3.94 3.81,-3.37 5,-6c0.88,-3.8 2.06,-11.66 -2,-19c-0.61,-1.11 -1.29,-2.11 -2,-3c-0.31,-0.36 -0.8,-1.04 -1,-2c-0.06,-0.32 -0.19,-0.91 0,-1c0.26,-0.13 0.82,0.87 2,2c0.84,0.81 1.71,1.61 3,2c1.06,0.32 1.94,0.17 3,0c1.38,-0.23 2.37,-0.69 3,-1c1.31,-0.64 2.25,-1.09 3,-2c1.84,-2.22 1.14,-5.41 1,-6c-0.33,-1.36 -0.69,-1.29 -2,-4c-0.87,-1.8 -0.57,-1.55 -2,-5c-0.49,-1.19 -1,-2.79 -2,-6c-0.12,-0.39 -0.37,-1.22 0,-2c0,0 0.29,-0.6 1,-1c1.98,-1.11 11.6,0.55 15,1c2.66,0.35 13.92,1.61 15.83,2.95c0.42,0.3 0.8,0.64 1.17,1.05c2.43,2.73 0.93,4.31 3,9c3.83,8.69 13.16,12.57 19,15c5.09,2.12 8.54,2.5 13,3c6.22,0.69 7.53,-0.22 8,-1c0.74,-1.23 -0.27,-2.7 -1,-5c-1.53,-4.78 -0.3,-8.09 0,-12c0.51,-6.64 -1.77,-13.74 -4,-17c-9.26,-13.54 -41.29,4.77 -71,-2c-1.28,-0.29 -9.89,-2.3 -12,1c-1.87,2.94 2.99,7.55 1,12c-1.49,3.33 -5.5,3.63 -8,5z" class="cls-10"/>
|
||||
<path id="svg_3" fill="#7a9ec2" stroke-width="0px" d="m310.07715,118.0022c-22.42,19.49 74.7,203.11 32,245c-9.08,8.91 -26.9,13.94 -28,28c-0.65,8.33 4.78,18.3 13,23c13.88,7.94 28.83,2.05 33,-1c2.68,-1.96 4,-4 4,-4c1.44,-2.22 1.56,-3.91 3,-8c0.76,-2.17 1.5,-3.9 2,-5c0.43,-1.13 0.95,-2.86 1,-5c0.04,-1.88 -0.32,-2.29 -0.25,-4.13c0.04,-1.01 0.22,-5.22 2.25,-5.87c0.27,-0.09 1.3,-0.35 3,1c-0.17,-0.41 -0.33,-0.87 -0.21,-0.95c0.24,-0.16 1.16,1.42 2.21,1.95c2.87,1.44 7.56,-0.07 8,-2c-10.79,-5.85 -14.4,-6.84 -15,-6c-0.79,1.11 3.49,5.56 3,6c-0.37,0.33 -3.05,-1.93 -3,-2c0.05,-0.07 3.08,1.97 4,3c0.08,0.09 0.44,0.51 1,1c0.23,0.2 0.43,0.36 0.55,0.46c0.1,0.12 0.26,0.31 0.45,0.54c2.9,3.62 4.2,7.01 4.62,8.05c0.92,2.28 2.67,5.77 6.38,10.95c15.05,16.54 34.83,19.18 54,9c16.33,3.81 7.85,10.54 33,5c25.9,-4.5 50.39,1.98 49,-25c-1.26,-10.66 -5.86,-19.02 0,-10c8.68,14.17 21.69,39.51 43,27c1.34,-1.14 2.88,-2.66 4.33,-4.64c2.87,-3.92 4.1,-7.81 4.67,-10.36c0.04,-0.43 0.28,-2.3 1.9,-3.7c1.23,-1.06 2.58,-1.26 3.1,-1.3c0.01,0.08 0.16,1 -0.41,1.5c-0.6,0.53 -1.8,0.43 -2.59,-0.5c0.43,2.03 1.75,6.85 6,11c1.06,1.04 7.1,6.7 16,6c9.28,-0.73 15.02,-7.84 17,-12c1.58,-3.32 2,-7 2,-7c0.25,-2.19 0.1,-3.79 0,-5c-0.36,-4.65 0,-9.33 0,-14l0,-27c0.04,-1.66 0.03,-8.44 0,-22c0,0 -0.42,-5.41 -3,-9c-0.96,-1.33 -2,-2 -2,-2c-0.29,-0.19 -0.31,-0.16 -2,-1l-2,-1l-2,-1c-0.51,-0.2 -1.22,-0.52 -2,-1c-4.12,-2.53 -6.05,-6.97 -6,-7c0.05,-0.03 2.59,3.37 2,4c-0.16,0.18 -0.53,0.07 -1,0c-1.2,-0.18 -1.99,-1.02 -2,-1c-0.02,0.03 0.5,0.41 3,2c0.12,-0.38 0.34,-0.98 0.76,-1.61c1.31,-1.93 3.18,-2.14 5.24,-3.39c1.95,-1.18 3.03,-2.66 4,-4c0.61,-0.85 2.43,-3.41 3,-7c0.69,-4.36 -0.85,-7.8 -1.68,-9.65c-3.9,-8.74 -12.88,-12.43 -15.32,-13.35c-0.13,0.06 -1.05,0.47 -2,0c-0.61,-0.3 -0.9,-0.8 -1,-1c-0.59,-2.25 -2.17,-3.18 -3,-6c-1.01,-2.71 -2.29,-10.67 -2,-12c0.57,-5.41 2.39,-8.84 4,-11c2.1,-2.82 3.85,-3.49 6,-7c1.06,-1.73 2.73,-4.47 3,-8c0.59,-7.63 -5.74,-13.78 -7,-15c-2.59,-2.51 -5.28,-3.88 -7,-6c-0.29,-0.36 -1.32,-1.69 -3.17,-2.63c-0.4,-0.2 -0.68,-0.31 -0.83,-0.37c-2.54,-1.08 -3.91,-5.69 -4,-6c-1.92,-6.71 -2.5,-10.84 -4,-16c-1.04,-3.56 -1.16,-2.94 -2,-6c-1.68,-6.11 -1.81,-10.75 -2,-14c-0.59,-9.95 -1.18,-14.9 -3,-20c0,0 -2.12,-5.94 -7,-12c-15.98,-19.87 -78.67,-21.15 -79,-18c-0.19,1.79 19.52,6.96 19,9c-0.13,0.51 -1.4,1.23 -3.15,3.43c0,0 0,0 0,0c-2.67,4.24 -1.37,8.35 -7.85,14.57c-10.42,10 -22.57,7.8 -34,13c-5.27,2.29 -9.81,3.41 -13,4c-5.08,0.94 -7.67,1.39 -10,0c-2.43,-1.45 -1.99,-3.22 -6,-8c-0.59,-0.71 -2.4,-2.82 -5,-5c-4.84,-4.06 -6.07,-3.05 -9,-6c-1.97,-1.98 -1.39,-2.41 -6,-10c-2.23,-3.66 -3.34,-5.49 -4,-6c-3.01,-2.31 -5.67,-1.38 -15,-3c-2.88,-0.5 -2.43,-0.55 -5,-1c-11.13,-1.94 -15.79,-0.28 -26,-2c-1.7,-0.29 -4.35,-0.8 -7.57,-1.74c-7.85,-9.54 -30.21,6.06 -40.43,13.74z" class="cls-10"/>
|
||||
<path id="svg_4" fill="#7a9ec2" stroke-width="0px" d="m294.07715,64.0022c-4.66,0.36 -8.11,1.64 -10.79,3.57c-12.46,8.98 -7.88,22.29 -21.35,37.56c-8.93,10.12 -22.26,16.35 -26.86,15.87c-1.25,-0.13 -5.27,-1.1 -8,1c-0.59,0.45 -1.25,1.15 -2,1c-1.15,-0.23 -1.71,-2.29 -2,-4c0,0 1,-2 1,-2c2.92,-5.84 2.97,-5.95 3,-6c2,-4.02 5.56,-11.16 5,-17c-0.84,-8.77 -11.08,-15.9 -20,-18c-12.28,-2.89 -22.17,3.73 -24,5c-12.11,2.27 -15.97,0.27 -17.33,-1.85c-1.94,-3.02 0.84,-6.86 5.33,-19.16c3.86,-10.58 5.89,-16.13 6,-22c0.1,-5.49 -1.43,-13.73 -10,-24c-23.21,-14.8 -47,-13.43 -56,-2c-1.46,1.85 -5.64,7.92 -4,20c-3.3,4.02 -9.31,1.14 -20,4c-10.63,1.96 -20.69,9.46 -13,23c5.63,9.91 94.53,145.36 192.09,115.49c50.17,-15.36 72.52,-65.2 72.91,-66.49c0.03,-0.1 0.51,-1.68 0,-2c-0.15,-0.1 -0.3,-0.03 -1,0l-3,0c-1.55,0 -3.44,-0.77 -4,-1c-0.06,-0.02 -0.12,-0.05 -0.2,-0.08c-1.67,-0.72 -4.91,-2.37 -4.8,-2.92c0.11,-0.56 3.88,-0.54 16,1c-0.74,-0.29 -1.76,-0.66 -3,-1c-1.48,-0.41 -3.48,-0.96 -6,-1c-2.59,-0.05 -2.83,0.27 -5,0c-0.92,-0.12 -2.41,-0.3 -4,-1c-4.1,-1.8 -5.85,-5.64 -6,-6c-0.77,-1.78 -0.86,-3.52 -1,-7c-0.1,-2.49 0.1,-2.7 0,-5c-0.14,-3.15 -0.22,-5.06 -1,-7c-1.47,-3.67 -4.66,-5.59 -7,-7c-2.96,-1.78 -5.54,-2.42 -8,-3c-2.73,-0.65 -6.85,-1.32 -12,-1l0,0.01z" class="cls-10"/>
|
||||
</g>
|
||||
<g data-name="背景" id="_背景">
|
||||
<path id="svg_5" fill="#666" stroke-width="0px" d="m199.07715,72.0022c-16.42,-3.08 -26.21,8.1 -31,4c-7.63,-6.54 18.33,-33.97 9,-55c-6.88,-15.51 -30.12,-21.13 -45,-21c-3.33,0.03 -16.49,0.44 -31,9c-30.76,18.15 -37.62,55.27 -56,109c-20.03,58.55 -43.71,77.3 -45,119c-0.4,13.04 0.88,31.37 1,33c2.91,40.64 9.7,47.97 12,64c0.27,1.85 0.98,7.34 5,12c0.83,0.96 1.59,1.64 2.01,2c0.47,0.48 1.15,1.18 1.99,2c10.84,10.63 27.33,20.18 27.33,20.18c17.89,10.12 26.84,15.18 35.66,13.82c3.19,-0.49 6.88,-1.68 16.62,-3.27c3.46,-0.56 6.46,-0.79 12.39,-1.73c3.95,-0.63 7.36,-0.89 10,-1c3.64,-0.15 6.36,-0.03 7,0c4.66,0.22 8.01,0.84 9,1c3.81,0.61 10.14,0.32 21,-4c3.96,0.13 4.67,2.49 9,4c4.59,1.6 5.73,-0.37 15,0c16.7,2.72 12.4,-0.95 25,-4c5.48,-0.56 5.78,1.97 14,3c9.86,2.45 36.35,-8.51 48,1c6.44,5.27 9.1,4.24 16,6c7.05,3.78 15.85,4.35 23,8c18.2,11.17 34.14,20.96 51,2c5.59,-6.98 3.83,-12.43 8,-14c7.13,-2.81 31.59,30.21 58,23c15.36,-6.57 13.31,-4.51 28,1c5.68,1.04 23.32,-3.84 33,-4c12.6,-0.87 15.51,0.92 21,-2c11.5,-6.32 8.35,-12.82 9,-21c6.52,3 17.82,31.94 43,18c6.28,-4.14 7.41,-10.27 11,-10c3.81,0.29 3.43,7.28 9,11c7.22,4.82 20.84,1.79 26,-6c1.88,-2.84 1.95,-5.28 2,-16c0.06,-12.86 2.5,-34.29 1,-57c-0.27,-4.14 -0.62,-6.12 -2,-8c-1.81,-2.47 -4.68,-3.81 -7.73,-8.57c-0.11,-0.18 -0.21,-0.33 -0.27,-0.43c0,-0.08 -0.02,-0.19 -0.02,-0.33c0.03,-1.6 1.77,-2.75 2.36,-3.17c1.19,-0.85 2.8,-2.4 4.66,-5.5c10.77,-33.99 -34.41,-21.61 -20,-59c3.12,-6.89 6.55,-6.37 8,-12c2.32,-9.04 -4.5,-18.26 -8,-23c-5.99,-8.1 -8.37,-6.45 -17,-17c-2.93,-3.58 -6.84,-8.36 -9.5,-15.5c-2.32,-6.24 -2.48,-11.05 -2.5,-12.5c0,-0.42 0,-0.77 0,-1c0.13,-4.73 -0.28,-14.34 -6,-24c-7.76,-13.12 -28.18,-18.94 -40,-22c-15.86,-4.11 -39.47,-10.22 -51,1c-3.37,3.28 -5.98,8.31 -13,11c-5.03,1.93 -10.55,1.97 -14,2c-4.92,0.04 -8.59,-0.58 -11,-1c-1.86,-0.32 -10.82,-1.96 -17,-6c-0.12,-0.08 -0.17,-0.11 -0.32,-0.21c-0.99,-0.63 -3.29,-1.88 -9.18,-3.72c-18.42,-5.77 -40.67,-7.51 -55.5,-8.07c-2.82,-0.11 -3.62,-0.51 -8,-1c-2.91,-0.33 -4.55,-0.47 -7,-1c-3.02,-0.65 -4.54,-0.98 -6,-2c-2.14,-1.49 -3.17,-3.66 -4,-6c-3.13,-8.82 -0.7,-12.16 -3,-17c-2.84,-5.97 -10.15,-7.96 -14,-9c-2.47,-0.67 -11.2,-2.68 -20,2c-1.88,1 -6.08,3.3 -9,8c-2.37,3.82 -1.56,5.46 -4,14c-2.08,7.28 -3.18,10.97 -6,13c-1.17,0.85 -5.1,3.27 -13,1c-3.07,-0.18 -7.45,0 -12,2c-8.86,3.88 -12,11.82 -14,11c-2.79,-1.15 5.52,-15.64 0,-28c-5.58,-12.5 -22.22,-15.85 -23,-16z" class="cls-6"/>
|
||||
<g data-name="主体" id="_主体">
|
||||
<path fill="url(#_未命名的渐变_11)" stroke-width="0px" d="m143.07715,31.0022c-0.07,-9.92 -10.48,-14.93 -19.79,-10.14c-26.5,20.43 -60.22,177.47 -46.22,199.15l0,0c0.82,1.48 2.09,3.31 4,5c0.71,0.63 3.63,3.11 8.06,4.22c0.06,0.02 0.12,0.03 0.15,0.04c0,0 0.25,0 0.25,0c6.98,0.1 42.56,0.64 49.53,0.74c8.08,0 14.43,-3.25 15.96,-8.03c1.6,-4.98 -2.25,-10.37 -3.96,-11.97c-10.75,-10.03 -32.41,-2.79 -46.53,-8.99c1.03,-45.36 25.88,-124.06 38.53,-170.01l0.02,-0.01z" class="cls-3" id="lite-l"/>
|
||||
<path fill="url(#_未命名的渐变_11-2)" stroke-width="0px" d="m196.07715,130.0022c4.11,0.31 6.91,2.96 8,4c6.83,6.48 6.93,17.68 7,26c0,0.06 0,0.03 0,7c0,14.32 0,21.48 0,22c0.04,13.27 0.66,35.34 -4,42c-1.29,1.84 -3,3 -3,3c-2.97,2.01 -6.17,1.99 -8,2c-1.45,0 -7.74,-0.12 -13,-5c-6.34,-5.87 -6.06,-13.87 -6,-15c0,-0.07 0,-9.93 0,-10c0,-38.04 0,-37.85 0,-38c-0.02,-1.29 -0.01,-3.53 0,-8c0.03,-9.9 0.15,-12.06 1,-15c1.28,-4.42 3.15,-6.95 4,-8c1.1,-1.36 2.19,-2.34 3,-3c0.7,-0.58 1.7,-1.32 3,-2c0.98,-0.52 4.28,-2.28 8,-2z" class="cls-16" id="lite-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_11-3)" stroke-width="0px" d="m193.85715,86.0722c8.85,-0.96 18.71,7.52 18.2,17.09c-0.5,9.28 -10.62,16.63 -19.33,14.46c-6.93,-1.73 -13.7,-9.65 -12.51,-18.4c1.06,-7.79 7.93,-12.52 13.65,-13.14l-0.01,-0.01z" class="cls-31" id="lite-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_11-4)" stroke-width="0px" d="m270.07715,109.0022c-5.46,4.9 -13.26,-2.45 -24,3c-1.76,0.89 -7.94,4.02 -9,10c-0.32,7.28 1.09,10.38 7,14c1.09,0.46 1.2,0.26 6,1c5.06,0.78 4.17,0.82 6,1c2.65,0.64 5.81,0.21 8,2c-1.37,3.47 -2.84,7.85 -4,13c-1.54,6.84 -1.9,12.21 -2,14c-0.55,9.95 0.87,18.04 1.98,22.78c2.44,10.5 5.56,15.48 9.02,22.22c2.16,4.21 19.54,19.38 30,8c4.48,-5.11 2.13,-12.61 2,-13c-1.5,-4.54 -4.19,-4.73 -8,-10c-2.14,-2.97 -3.9,-6.54 -6,-15c0,0 -3.62,-14.55 -1,-31c0.07,-0.45 0.7,-4.15 3,-7c0.34,-0.42 0.64,-0.72 1,-1c2.08,-1.58 4.79,-1.16 6,-1c0,0 2.62,0.34 11,0c2.39,-0.1 5.82,-0.51 10,-2c1.2,-0.76 4.96,-3.37 6,-8c1.27,-5.69 -2.25,-11.34 -6,-14c-1.62,-1.15 -7.64,-4.84 -14,-5c-0.75,-0.02 -2.43,-0.01 -3,-1c-0.71,-1.24 0.71,-3.39 2,-5c17.38,-27.36 -15.06,-42.63 -26,-19c-5.75,12.08 -1.75,17.19 -6,21z" class="cls-4" id="lite-t"/>
|
||||
<path fill="url(#_未命名的渐变_11-5)" stroke-width="0px" d="m362.07715,166.0022c-0.58,0.39 -5.22,3.65 -5,8c0.19,3.92 4.21,6.49 5,7c5.42,3.48 9.31,0.51 25,-1c10.15,-0.98 16.08,-0.47 21,-5c1.85,-1.71 2.74,-3.47 3,-4c2.71,-5.47 0.88,-11.23 0,-14c-3.43,-10.82 -12.5,-16.72 -16,-19c-7.86,-5.11 -15.39,-6.53 -19,-7c-4.34,-0.56 -13.27,-1.6 -23,3c-9.69,4.58 -14.55,12.09 -17,16c-1.5,2.4 -5.98,10.02 -7,21c-0.52,5.6 -1.49,16.1 5,26c5.1,7.79 12.21,11.23 16,13c9.03,4.23 17,4.1 23,4c9.99,-0.17 16.58,-2.61 23,-5c2,-0.74 5.17,-2.02 8,-5c1.68,-1.77 4.08,-4.29 4,-8c-0.07,-3.36 -2.16,-6.53 -5,-8c-3.53,-1.83 -7.16,-0.62 -9,0c-1.16,0.39 -1.55,0.69 -4,2c-3.13,1.68 -6.56,3.38 -8,4c-6.18,2.67 -12.7,1.44 -15,1c-3.93,-0.74 -9.92,-1.88 -14,-7c-2.99,-3.76 -3.69,-8.07 -4,-10c-0.23,-1.41 -0.55,-4.21 -0.03,-7.67c0.24,-1.6 0.98,-6.11 4.03,-10.33c0.37,-0.52 7.1,-9.49 18,-9c1.43,0.06 9.65,0.59 14,7c1.16,1.71 2.94,4.33 2,6c-2.22,3.93 -15.76,-4.29 -25,2z" class="cls-8" id="lite-e"/>
|
||||
<path fill="url(#_未命名的渐变_240)" stroke-width="0px" d="m502.07715,162.0022l13.33,22l9.67,-15l-8,-20l4,-6l6,2l9,13l7,-11l9,1l3,7l-11,13l17,2l4,8l-5,4l-22,-4l-13.5,16.8l27.5,5.2l11,-14l7,1l3,7l-9,11l19,3l4,7l-4,5l-18,-3l7,14l-4,4l-8,-1l-10,-20l-40,-8l-2,-2l-20,-37l-23,-4l-3,-7l4,-5l16,3l-9,-15l4,-6l7,1l9,16l9,-10l7,2l3,6l-10,14z" class="cls-20" id="logo-snow"/>
|
||||
<path fill="url(#_未命名的渐变_9)" stroke-width="0px" d="m344.07715,316.0022c-5.28,-2.41 -12.58,-6.43 -20,-13c-8.2,-7.27 -12.49,-14.08 -18,-23c-8.92,-14.43 -16.4,-26.53 -12,-35c2.45,-4.71 7.07,-6.66 7.07,-6.66c2.53,-1.08 5.74,-1.4 9.93,-0.34c15.19,5.99 14.64,39.18 45,55c8.67,-18.92 10.28,-33.18 10,-43c-0.12,-4.37 -0.74,-12.15 4,-16c0.82,-0.55 5.22,-3.4 10.85,-2.15c3.86,0.85 6.25,3.17 7.15,4.15c0.5,0.6 1.28,1.58 2.09,2.87c8.99,14.33 0.03,32.06 -11.49,69.45c-4.1,13.3 -6.65,21.58 -9.6,33.68c-5.81,23.86 -8.17,40.38 -20,51c-11.03,9.91 -22.32,0.03 -23,-9c-2.89,-15.02 23.13,-56.98 18,-68z" class="cls-27" id="yuki-y"/>
|
||||
<path fill="url(#_未命名的渐变_9-2)" stroke-width="0px" d="m403.07715,323.0022c-0.54,-0.11 -5.36,-1.02 -9,2c-2.31,1.92 -3.04,4.55 -4,8c-0.74,2.66 -0.91,4.8 -1,6c-0.59,8.25 0,15 0,15c1.18,13.55 1.77,20.33 3,23c1.04,2.27 4.07,8.71 11,13c6.21,3.85 12.31,3.91 21,4c0.81,0 16.83,0.09 21,-4c0.22,-0.21 1.2,-1.26 2,-1c0.93,0.3 0.69,2.05 2,4c0,0 0.63,0.93 2,2c3.54,2.75 12.53,3.41 16,-1c0.62,-0.79 1.75,-2.64 2,-5c0.07,-0.68 0.05,-1.22 0.02,-1.76c-0.13,-2.75 -0.88,-4.83 -1.02,-5.24c-1.31,-3.73 -3.37,-15.69 -4,-23c-0.58,-6.71 0.42,-5.3 0,-19c-0.11,-3.63 -0.12,-9.19 -3,-15c-1.36,-2.75 -2.63,-4.09 -4,-5c-2.95,-1.96 -6.82,-2.22 -10,-1c-0.8,0.31 -3.48,1.34 -5,4c-1.36,2.37 -1.11,4.83 -1,6c0.66,6.98 0.45,14.01 1,21c0.72,9.13 0.57,11.51 -1,14c-1.8,2.86 -4.42,4.2 -6,5c-7.58,3.86 -15,0.82 -17,0c-2.54,-1.04 -3.49,-2.11 -4,-3c-0.74,-1.29 -0.88,-2.78 -1,-4c-0.13,-1.35 -0.05,-2.34 0,-3l0,-16c-0.19,-7.44 -0.28,-11.16 -2,-14c-0.52,-0.85 -3.02,-4.98 -8,-6z" class="cls-21" id="yuki-u"/>
|
||||
<path fill="url(#_未命名的渐变_9-3)" stroke-width="0px" d="m591.07715,272.0022c-6.65,0.3 -12.55,6.12 -12,13c0.53,6.56 6.7,11.28 13,11c6.65,-0.3 12.55,-6.12 12,-13c-0.53,-6.56 -6.7,-11.28 -13,-11z" class="cls-2" id="yuki-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_9-4)" stroke-width="0px" d="m591.07715,303.0022c-15.96,1.04 -13.95,25.54 -13,36c1.45,14.24 -7.18,66.6 24,48c5.91,-7.41 -0.33,-25.41 1,-45c-2.16,-11.6 6.6,-38.49 -12,-39z" class="cls-23" id="yuki-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_9-5)" stroke-width="0px" d="m545.07715,299.0022c-0.26,-0.11 -0.66,-0.27 -1.17,-0.44c0,0 -4.46,-1.53 -9.91,-1c-4.47,0.44 -18.59,11.34 -31.93,31.43c-0.35,-10.53 -0.23,-21.87 0.56,-33.9c0.37,-5.55 0.85,-10.92 1.44,-16.1c0.26,-1.2 0.52,-2.94 0.41,-5.03c-0.09,-1.81 -0.25,-4.96 -2.27,-8.04c-0.56,-0.85 -2.9,-4.42 -7.52,-5.51c-5.61,-1.33 -10.01,2.08 -10.62,2.58c-3.44,2.76 -4.45,6.67 -5,9c-3.6,15.32 -3,27 -3,27c0.42,8.15 1.67,32.57 1,50c-0.22,5.66 0.05,11.33 0,17c-0.05,6.02 -0.13,9.05 1,13c1.45,5.07 4.08,8.75 6,11c1.19,1.11 3.93,3.36 8,4c3.99,0.63 7.79,-0.51 9.84,-1.85c11.06,-7.21 1.65,-39.59 4.55,-40.56c0.39,-0.13 1.19,0.88 2.61,3.4c8.89,11.22 14.99,15.39 30,29c7.7,10.13 23.45,3.59 22,-8c-0.19,-16.59 -39.62,-33.08 -31.91,-39.47c1.89,-2.38 6,-8.21 6.91,-9.53c5.47,-7.8 10.83,-8.44 13,-15c1.34,-4.04 0.69,-6.57 0.43,-7.38c-1.01,-3.15 -3.39,-4.94 -4.43,-5.62l0.01,0.02z" class="cls-28" id="yuki-k"/>
|
||||
<path fill="url(#_未命名的渐变_12)" stroke-width="0px" d="m79.07715,274.0022c-1.75,-1 -2.61,-0.17 -10,1c-2.22,0.35 -7.11,1.06 -13,3c-1.36,0.45 -2.68,0.93 -3,2c-0.49,1.65 1.56,4.27 4,5c0.32,0.09 0.56,0.13 0.74,0.16c2.19,0.34 3.89,-0.56 5.26,-1.16c1.96,-0.87 3.64,-1.24 7,-2c0,0 4.44,-1 5,0c0.02,0.04 0.04,0.07 0.04,0.07c0.07,0.18 -0.02,0.5 -0.04,2.93c0,0.06 0,0.71 0,2c0,5.01 0.09,5.71 0,7c-0.2,2.74 -0.3,4.11 -1,5c-1.25,1.58 -3.23,1.52 -7,2c-5.62,0.72 -4.41,1.27 -10,2c-7.19,0.94 -9.49,0.07 -11,2c-1.32,1.68 -1.32,4.57 0,6c1.74,1.88 5.46,0.88 9,0c7.35,-1.82 19.55,-4.84 29,-6c4.81,-0.59 12,-1.09 13,-4c0.57,-1.65 0,-3 0,-3c-0.06,-0.14 -0.62,-1.43 -2,-2c-1.19,-0.49 -2.36,-0.18 -3,0c-6.78,1.91 -9.23,2.82 -10,2c-0.45,-0.48 -0.17,-1.39 0,-2c1.77,-6.29 1.22,-12.36 1,-14c-0.23,-1.67 -0.84,-6.18 -4,-8z" class="cls-24" id="lite-jp-1"/>
|
||||
<path fill="url(#_未命名的渐变_12-2)" stroke-width="0px" d="m75.07715,330.0022c-1.02,0.34 -1.72,1.18 -2,2c-0.31,0.93 -0.06,1.78 0,2c0.38,1.39 0.25,7.26 0,19c-0.12,5.74 -0.36,7.73 0,12c0.21,2.49 0.58,5.11 2,8c0.87,1.76 1.83,3.72 4,5c2.08,1.23 4.09,1.14 7,1c2.69,-0.13 6.51,-0.31 7,-2c0.37,-1.27 -1.18,-3.23 -3,-4c-2.78,-1.18 -4.84,0.97 -7,0c-2.17,-0.97 -2.69,-4.29 -3,-7c-1.07,-9.45 -0.9,-24.04 -1,-30c-0.02,-1.36 -0.12,-5.21 -2,-6c-0.58,-0.25 -1.37,-0.21 -2,0z" class="cls-14" id="liteecho-1"/>
|
||||
<path fill="url(#_未命名的渐变_72)" stroke-width="0px" d="m263.13715,280.9522c-2.11,0.2 -3.55,1.9 -3.93,2.35c-0.57,0.68 -0.91,1.34 -1.11,1.8c1.09,1.05 6.06,5.64 11.22,4.91c2.33,-0.33 5.1,-1.81 5.34,-2.63c0.03,-0.09 0.03,-0.17 0.03,-0.17c0,-0.29 -0.33,-0.71 -1.89,-1.83c-1.33,-0.96 -2.23,-1.61 -3.3,-2.18c-0.69,-0.37 -1.23,-0.6 -1.68,-0.79c-2.41,-1.04 -3.62,-1.55 -4.68,-1.45l0,-0.01z" class="cls-17" id="yuki-jp-4-1"/>
|
||||
<path fill="url(#_未命名的渐变_58)" stroke-width="0px" d="m248.07715,265.0022c0.37,-0.49 1.34,-1.8 3,-2c2.33,-0.28 3.93,1.89 4,2c0.33,0.46 0.44,0.81 1,3c0.59,2.3 0.88,3.45 1,4c0.33,1.56 0.71,3.58 1,6c0.21,1.71 0.24,2.18 0.42,3.8c0.24,2.17 0.38,2.81 1.58,10.2c0.66,4.08 0.73,4.55 1,6c0.31,1.64 0.58,3.06 1,5c0.77,3.51 1.13,4.83 1,7c-0.08,1.29 -0.29,2.25 -1,3c-1,1.07 -2.67,1.39 -4,1c-1.46,-0.43 -2.18,-1.63 -3,-3c-0.55,-0.91 -1.1,-2.1 -2,-6c-0.28,-1.22 -0.65,-2.92 -1,-5c-0.33,-2 -0.67,-4 -1,-6c-0.53,-3.92 -1.07,-7.83 -1.6,-11.75c-0.47,-2.42 -0.93,-4.83 -1.4,-7.25c-0.78,-2.06 -0.97,-3.84 -1,-5c-0.05,-1.81 -0.12,-3.5 1,-5z" class="cls-13" id="yuki-jp-4"/>
|
||||
<path fill="url(#_未命名的渐变_13)" stroke-width="0px" d="m101.07715,341.0022c-1.86,-0.04 -3.59,1.27 -4,3c-0.56,2.38 1.47,5.01 4,5c2.03,-0.01 4,-1.72 4,-4c0,-2.25 -1.92,-3.96 -4,-4z" class="cls-19" id="liteecho-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_13-2)" stroke-width="0px" d="m102.07715,354.0022c-0.61,-0.3 -1.38,-0.31 -2,0c-0.14,0.07 -0.62,0.33 -1,1c-1.18,2.08 -1.01,7.51 -1,8c0.16,5.45 0,9 0,9c-0.08,1.78 -0.22,3.7 1,5c0.21,0.22 0.94,1 2,1c1.08,0 1.81,-0.8 2,-1c1.05,-1.14 1.02,-2.72 1,-4c-0.03,-2.33 0.04,-4.67 0,-7c-0.05,-3.31 0.17,-8.95 -1,-11c-0.12,-0.2 -0.41,-0.71 -1,-1z" class="cls-29" id="liteecho-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_65)" stroke-width="0px" d="m119.55715,342.6422c-0.52,0.03 -1.3,0.07 -1.92,0.55c-0.25,0.19 -0.76,0.67 -1.1,2.68c-0.15,0.92 -0.29,2.26 -0.14,3.91c-1.17,0.01 -3.52,0.16 -5.32,1.22c-0.38,0.22 -0.77,0.51 -1,1c-0.39,0.85 -0.08,1.91 0.41,2.59c0.74,1.01 1.99,1.19 3.59,1.41c0.85,0.12 1.57,0.12 2.05,0.1c-0.06,0.76 -0.12,1.85 -0.14,3.16c-0.01,1.22 -0.03,2.48 0.14,4.12c0.15,1.49 0.3,2.92 0.96,4.62c0.39,1.03 0.78,1.67 1,2c0.25,0.39 0.74,1.08 1.48,1.76c1.12,1.05 2.67,2.5 4.52,2.24c1.2,-0.17 2.57,-1.06 2.76,-2.24c0.12,-0.76 -0.29,-1.46 -0.55,-1.92c-0.43,-0.76 -0.87,-0.99 -1.51,-1.65c-0.95,-0.97 -1.44,-1.93 -1.78,-2.61c-0.71,-1.41 -0.9,-2.61 -1.1,-3.85c-0.15,-0.97 -0.37,-2.35 -0.14,-4.12c0.09,-0.67 0.22,-1.22 0.32,-1.61c0.56,0 1.35,-0.04 2.29,-0.17c1.54,-0.21 2.32,-0.32 2.88,-0.82c0.8,-0.71 1.27,-2.03 0.83,-3.01c-0.13,-0.3 -0.38,-0.61 -1,-1c-1.52,-0.94 -3.22,-1.02 -4.36,-0.94c0.11,-0.49 0.27,-1.25 0.41,-2.2c0.49,-3.18 0.14,-3.81 -0.14,-4.12c-0.26,-0.3 -0.59,-0.43 -1.24,-0.69c-0.4,-0.16 -1.18,-0.47 -2.2,-0.41z" class="cls-9" id="liteecho-t"/>
|
||||
<path fill="url(#_未命名的渐变_66)" stroke-width="0px" d="m142.48715,359.4922c-1.24,0 -1.82,0.11 -2.17,0.53c-0.63,0.76 -0.29,2.24 0.31,3.15c1.51,2.31 5.53,2.25 7.8,1.77c1.4,-0.3 4.49,-0.94 5.98,-3.77c1.7,-3.21 -0.04,-6.62 -0.4,-7.27c-1.86,-3.4 -5.47,-4.29 -7.14,-4.7c-3.37,-0.83 -6.16,0.05 -7.27,0.4c-1.07,0.34 -2.81,0.91 -4.53,2.4c-3.45,2.98 -3.92,7.09 -4,8c-0.27,3.05 0.7,5.35 1,6c0.27,0.6 1.17,2.42 3,4c1.04,0.89 2.16,1.53 3,2c0.99,0.56 1.75,0.89 2,1c1.02,0.44 1.88,0.81 3,1c1.17,0.2 2.07,0.1 3,0c0.34,-0.04 1.85,-0.22 4,-1c3.3,-1.2 4.59,-2.54 5,-3c0.47,-0.53 0.68,-0.9 0.71,-1.34c0.06,-1.15 -1.21,-2.31 -2.48,-2.62c-0.51,-0.12 -0.94,-0.08 -1.23,-0.05c-2.01,0.26 -3.04,1.28 -4.31,1.86c-2.59,1.19 -5.84,0.41 -7.69,-0.86c-1.16,-0.8 -1.95,-1.93 -2,-2c-0.26,-0.38 -0.69,-1.07 -1,-2c-0.26,-0.77 -0.95,-2.86 0,-5c0.82,-1.85 2.41,-2.69 3,-3c2.34,-1.23 5.06,-1.05 7,0c0.69,0.37 1.64,0.9 2,2c0.29,0.87 0.26,2.23 -0.52,2.84c-1,0.8 -2.36,-0.34 -6.07,-0.36l0.01,0.02z" class="cls-25" id="liteecho-e"/>
|
||||
<path fill="url(#_未命名的渐变_68)" stroke-width="0px" d="m197.07715,346.0022c-1.16,0 -4.12,0.04 -7,2c-1.54,1.05 -2.49,2.26 -3,3c-1.62,2.38 -1.87,4.7 -2,6c-0.12,1.26 -0.36,4 1,7c2.14,4.72 6.61,6.52 8,7c1.04,0.36 4.93,1.64 9,0c0.94,-0.38 2.74,-1.13 4,-3c0.45,-0.66 1.99,-2.94 1,-5c-0.54,-1.12 -1.88,-2.25 -3,-2c-1.41,0.32 -1.04,2.48 -3,4c-1.92,1.48 -4.45,1.09 -5,1c-0.54,-0.08 -2.42,-0.41 -4,-2c-2.4,-2.42 -2.04,-5.66 -2,-6c0.07,-0.51 0.43,-3.37 3,-5c2.25,-1.43 5.33,-1.38 7,0c0.93,0.77 0.92,1.55 2,2c1.26,0.52 3.2,0.27 4,-1c0.72,-1.15 0.17,-2.56 0,-3c-0.15,-0.38 -0.69,-1.63 -3,-3c-0.98,-0.58 -3.45,-2.01 -7,-2z" class="cls-30" id="liteecho-c"/>
|
||||
<path fill="url(#_未命名的渐变_71)" stroke-width="0px" d="m217.07715,329.0022c-0.92,-0.49 -2.08,-0.44 -3,0c-1.8,0.87 -1.99,2.91 -2,3l0,9c0,4 0.04,8 0,12c-0.03,3 0.1,6 0,9c-0.1,3.04 -0.29,5.38 1,8c0.45,0.91 1.42,2.89 3,3c1.63,0.11 2.9,-1.85 3,-2c1.44,-2.28 0.03,-4.1 0,-9c-0.02,-2.85 0,-5.82 2,-8c0.37,-0.4 1.8,-1.97 4,-2c2.44,-0.04 3.91,1.89 4,2c0.92,1.22 1,2.52 1,3c-0.33,1.67 -0.67,3.33 -1,5c-0.41,1.12 -0.91,2.85 -1,5c-0.09,2.3 -0.16,3.99 1,5c1.28,1.11 3.61,1.02 5,0c1.65,-1.21 1.8,-3.61 2,-7c0.08,-1.27 0.04,-2.31 0,-3l0,-8c-0.02,-0.84 -0.16,-2.36 -1,-4c-0.51,-1 -1.73,-2.93 -4,-4c-3.65,-1.72 -7.65,-0.14 -8,0c-1.5,0.62 -2.24,1.36 -3,1c-0.71,-0.34 -0.94,-1.4 -1,-4c-0.12,-5.04 0.61,-6.66 0,-10c-0.56,-3.06 -1.54,-3.76 -2,-4z" class="cls-18" id="liteecho-h"/>
|
||||
<path fill="url(#_未命名的渐变_58-2)" stroke-width="0px" d="m252.07715,348.0022c-4.27,-0.18 -7.17,2.27 -8,3c-3.05,2.66 -3.79,6 -4,7c-0.18,0.88 -1.21,5.84 2,10c2.08,2.69 4.82,3.62 6,4c1.29,0.42 4.46,1.39 8,0c2.95,-1.16 4.51,-3.31 5,-4c1.43,-2.02 1.81,-3.97 2,-5c0.46,-2.51 0.1,-4.49 0,-5c-0.67,-3.35 -2.52,-5.47 -3,-6c-0.69,-0.76 -3.46,-3.8 -8,-4z" class="cls-33" id="liteecho-o"/>
|
||||
<path fill="#666" stroke-width="0px" d="m250.57715,354.5022c-2.49,0.24 -3.75,2.55 -4,3c-0.09,0.17 -1.81,3.42 0,6c1.68,2.39 5.6,3.06 8,1c2.1,-1.8 2.13,-4.93 1,-7c-0.84,-1.54 -2.7,-3.22 -5,-3z" class="cls-6" id="liteecho-o-white"/>
|
||||
<path fill="url(#_未命名的渐变_14)" stroke-width="0px" d="m108.07715,274.0022c-0.71,0.63 -1.32,1.81 -1,3c0.38,1.44 1.86,1.95 2,2c0.77,0.25 1.44,0.12 2,0c4.88,-1.04 5.31,-1.31 6,-1c1.18,0.54 1.54,2.08 2,4c0.41,1.72 0.73,3.08 0,4c-0.65,0.81 -2.11,0.89 -5,1c-1.25,0.05 -2.29,0.03 -3,0c-0.53,0.14 -1.96,0.61 -3,2c-0.4,0.54 -1.21,1.61 -1,3c0.24,1.62 1.7,2.78 3,3c0.44,0.08 0.79,0.03 1,0c4.59,-0.65 6.89,-0.98 7,-1c2.55,-0.43 3.84,-0.64 4.45,-0.34c1.26,0.62 1.41,1.86 2.55,5.34c0,0 1.48,4.5 4,10c0.8,1.75 1.53,3.13 2,4c0.16,0.13 2.42,1.9 5,1c0.16,-0.06 2.44,-0.88 3,-3c0.21,-0.78 0.1,-1.42 0,-2c-0.27,-1.54 -0.96,-2.26 -2,-4c-0.12,-0.21 0.03,0.04 -2,-4c-0.67,-1.33 -1.32,-2.67 -2,-4c-1.91,-3.76 -2.3,-4.3 -2,-5c0.2,-0.46 0.49,-0.53 4,-2c1.13,-0.48 2.45,-1.03 4,-2c1.13,-0.71 1.71,-1.21 2,-2c0.06,-0.17 0.35,-1.03 0,-2c-0.48,-1.32 -1.88,-2.03 -3,-2c-0.31,0 -0.54,0.07 -0.66,0.11c-2.2,0.63 -4.77,1.67 -5.34,1.89c-2.21,0.88 -3.31,1.31 -4,1c-0.42,-0.19 -0.77,-0.54 -2,-4c-1.21,-3.42 -1.11,-3.77 -1,-4c0.42,-0.85 1.37,-0.79 6,-2c2.46,-0.64 3.57,-1.02 4,-2c0.3,-0.68 0.14,-1.39 0,-2c-0.09,-0.4 -0.54,-2.17 -2,-3c-1.17,-0.66 -2.4,-0.38 -4,0c-3.65,0.88 -4.88,2.55 -6,2c-0.55,-0.27 -1.15,-1.13 -1,-4c-0.42,-2 -0.76,-3 -1,-3l0,0c-0.76,-1.48 -2.4,-2.29 -4,-2c-1.51,0.27 -2.7,1.47 -3,3c-0.17,2.45 0.41,4.01 1,5c0.57,0.95 1.14,1.36 1,2c-0.24,1.14 -2.45,1.64 -4,2c-2.38,0.55 -3.11,0.2 -4,1z" class="cls-34" id="lite-jp-2"/>
|
||||
<path fill="url(#_未命名的渐变_5)" stroke-width="0px" d="m153.07715,286.0022c-0.46,1.12 -0.62,2.69 0,4c0.19,0.41 0.79,1.49 2,2c1.22,0.51 2.43,0.16 3,0c5,-1.43 7.51,-2.15 8,-2c4.42,1.34 3.64,20.08 7,22c2.14,1.22 4,1 4,1c1.43,-0.17 3.03,-0.97 3.02,-1c0,0 0,0 -0.02,0c0.27,-0.2 0.65,-0.52 1,-1c1.53,-2.12 0.85,-5.32 -1,-10c-3.3,-8.33 -6.24,-11.07 -5,-13c0.71,-1.1 1.84,-0.46 5.57,-2.36c2.51,-1.27 4.06,-2.06 4.43,-3.64c0.46,-1.98 -1.11,-4.46 -3,-5c-1.01,-0.29 -2.23,0.21 -4.65,1.22c-3.32,1.39 -3.58,2.02 -4.35,1.78c-2.25,-0.7 -0.9,-6.34 -4,-8c-1.22,-0.65 -2.84,-0.54 -4,0c-0.31,0.14 -1.56,0.73 -2,2c-0.24,0.7 -0.14,1.29 0,2c0.51,2.66 2.08,3.57 2,5.99c0,0 0,0 0,0c0.01,0 0.02,0 0.02,0c0.01,0.1 -10.37,-0.01 -12.02,4l0,0.01z" class="cls-5" id="yuki-jp-1"/>
|
||||
<path fill="url(#_未命名的渐变_69)" stroke-width="0px" d="m230.07715,276.0022c-0.23,-0.2 -0.95,-0.74 -2,-1c-0.58,-0.14 -1.39,-0.34 -2,0c-0.79,0.44 -0.86,1.6 -1,3c0,0 -0.62,6.23 -2,9c-0.43,0.86 -0.97,1.66 -0.97,1.66c-0.12,0.18 -0.24,0.35 -0.35,0.5c-0.2,0.27 -0.42,0.55 -0.68,0.84c-1.47,1.68 -5.93,4.2 -5.93,4.2c-3.23,1.82 -3.66,2.04 -4.07,2.8c-0.61,1.13 -0.9,2.9 0,4c0.8,0.97 2.17,0.99 3,1c0.7,0 3.05,-0.07 7.17,-3.17c1.64,-1.24 3.78,-2.89 5.83,-5.83c3.15,-4.53 3.72,-8.76 4,-11c0.52,-4.2 -0.4,-5.48 -1,-6z" class="cls-32" id="yuki-jp-2-3"/>
|
||||
<path fill="url(#_未命名的渐变_67)" stroke-width="0px" d="m167.88715,359.1822c-1.13,0.52 -1.6,0.87 -1.74,1.41c-0.25,0.96 0.69,2.15 1.62,2.72c2.35,1.44 5.96,-0.31 7.81,-1.71c1.14,-0.86 3.66,-2.76 3.81,-5.96c0.17,-3.63 -2.85,-5.97 -3.45,-6.41c-3.13,-2.29 -6.78,-1.55 -8.46,-1.22c-3.41,0.68 -5.55,2.66 -6.41,3.45c-0.83,0.76 -2.15,2.02 -3.08,4.1c-1.85,4.16 -0.53,8.09 -0.22,8.94c1.05,2.88 2.91,4.54 3.46,5c0.5,0.42 2.09,1.69 4.42,2.34c1.32,0.37 2.61,0.46 3.57,0.53c1.13,0.08 1.96,0.06 2.24,0.05c1.11,-0.04 2.04,-0.06 3.14,-0.37c1.14,-0.32 1.92,-0.79 2.71,-1.28c0.29,-0.18 1.58,-0.98 3.19,-2.61c2.48,-2.49 3.07,-4.25 3.25,-4.84c0.2,-0.68 0.24,-1.11 0.07,-1.51c-0.43,-1.07 -2.08,-1.58 -3.36,-1.31c-0.51,0.11 -0.88,0.32 -1.13,0.48c-1.71,1.09 -2.2,2.45 -3.11,3.52c-1.84,2.18 -5.11,2.86 -7.32,2.49c-1.39,-0.23 -2.59,-0.92 -2.66,-0.96c-0.4,-0.23 -1.08,-0.67 -1.76,-1.38c-0.56,-0.59 -2.08,-2.19 -2.13,-4.52c-0.04,-2.02 1.04,-3.46 1.44,-3.99c1.59,-2.11 4.14,-3.1 6.33,-2.98c0.79,0.04 1.86,0.12 2.66,0.96c0.63,0.67 1.18,1.91 0.74,2.79c-0.57,1.15 -2.28,0.69 -5.65,2.26l0.02,0.01z" class="cls-15" id="liteecho-e2"/>
|
||||
</g>
|
||||
<circle id="svg_6" fill="url(#_未命名的渐变_6)" stroke-width="0px" r="4" cy="301.0022" cx="162.07715" class="cls-22"/>
|
||||
<ellipse id="svg_7" fill="url(#_未命名的渐变_7)" stroke-width="0px" ry="2.5" rx="2.51" cy="270.5022" cx="183.56715" class="cls-12"/>
|
||||
<ellipse id="svg_8" fill="url(#_未命名的渐变_7-2)" stroke-width="0px" ry="2.5" rx="2.51" cy="273.5022" cx="176.56715" class="cls-26"/>
|
||||
<circle id="svg_9" fill="url(#_未命名的渐变_7-3)" stroke-width="0px" r="4" cy="294.3922" cx="185.05715" class="cls-11"/>
|
||||
<circle id="svg_10" stroke-width="0px" fill="url(#_未命名的渐变_8)" r="4" cy="281.2622" cx="209.49715" class="cls-1"/>
|
||||
<circle id="svg_11" fill="url(#_未命名的渐变_55)" stroke-width="0px" r="4" cy="275.2622" cx="217.49715" class="cls-7"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 34 KiB |
@ -1,148 +0,0 @@
|
||||
|
||||
<svg width="617" height="419" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<linearGradient y2="0.50001" x2="0.99992" y1="0.50001" x1="-0.00009" data-name="未命名的渐变 11" id="_未命名的渐变_11">
|
||||
<stop stop-color="#73fff1" offset="0"/>
|
||||
<stop stop-color="#5cefff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="292.99" x2="584.05" y1="292.99" x1="549.98" data-name="未命名的渐变 11" id="_未命名的渐变_11-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="212" x2="585" y1="212" x1="553" data-name="未命名的渐变 11" id="_未命名的渐变_11-3"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="260.3" x2="698.34" y1="260.3" x1="609.82" data-name="未命名的渐变 11" id="_未命名的渐变_11-4"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_11" y2="282.24" x2="784.94" y1="282.24" x1="702.75" data-name="未命名的渐变 11" id="_未命名的渐变_11-5"/>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 240" id="_未命名的渐变_240">
|
||||
<stop stop-color="#eadeff" offset="0"/>
|
||||
<stop stop-color="#e0efff" offset="0.28"/>
|
||||
<stop stop-color="#d9ecff" offset="0.43"/>
|
||||
<stop stop-color="#aedbff" offset="0.59"/>
|
||||
<stop stop-color="#00d7ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50003" x2="1.00001" y1="0.50003" x1="0" data-name="未命名的渐变 9" id="_未命名的渐变_9">
|
||||
<stop stop-color="#2ebbff" offset="0"/>
|
||||
<stop stop-color="#006bff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="467.72" x2="842.05" y1="467.72" x1="761.74" data-name="未命名的渐变 9" id="_未命名的渐变_9-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="394" x2="977.04" y1="394" x1="951.96" data-name="未命名的渐变 9" id="_未命名的渐变_9-3"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="456.86" x2="977.56" y1="456.86" x1="952.19" data-name="未命名的渐变 9" id="_未命名的渐变_9-4"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_9" y2="437.15" x2="934.09" y1="437.15" x1="848.96" data-name="未命名的渐变 9" id="_未命名的渐变_9-5"/>
|
||||
<linearGradient y2="0.5" x2="0.99994" y1="0.5" x1="0" data-name="未命名的渐变 4" id="_未命名的渐变_4">
|
||||
<stop stop-color="#6445ff" offset="0"/>
|
||||
<stop stop-color="#5c86ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_4" y2="464.45" x2="466.06" y1="464.45" x1="445.81" data-name="未命名的渐变 4" id="_未命名的渐变_4-2"/>
|
||||
<linearGradient y2="-0.23832" x2="1.47603" y1="0.46345" x1="0.17906" data-name="未命名的渐变 72" id="_未命名的渐变_72">
|
||||
<stop stop-color="#c4aeff" offset="0"/>
|
||||
<stop stop-color="#ce9fff" offset="0.43"/>
|
||||
<stop stop-color="#af8eff" offset="0.55"/>
|
||||
<stop stop-color="#7d74ff" offset="0.72"/>
|
||||
<stop stop-color="#6333ff" offset="0.9"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.47289" x2="0.99937" y1="0.52818" x1="0.02548" data-name="未命名的渐变 58" id="_未命名的渐变_58">
|
||||
<stop stop-color="#b1ccff" offset="0"/>
|
||||
<stop stop-color="#b8c0ff" offset="0.34"/>
|
||||
<stop stop-color="#cba2ff" offset="0.94"/>
|
||||
<stop stop-color="#ce9fff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50005" x2="1" y1="0.50005" x1="0.00045" data-name="未命名的渐变 3" id="_未命名的渐变_3">
|
||||
<stop stop-color="#5c86ff" offset="0"/>
|
||||
<stop stop-color="#64a2ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_3" y2="475.89" x2="477.01" y1="475.89" x1="470.95" data-name="未命名的渐变 3" id="_未命名的渐变_3-2"/>
|
||||
<linearGradient y2="0.4675" x2="1.0805" y1="0.53756" x1="0.11473" data-name="未命名的渐变 65" id="_未命名的渐变_65">
|
||||
<stop stop-color="#64a2ff" offset="0.11"/>
|
||||
<stop stop-color="#62a6ff" offset="0.28"/>
|
||||
<stop stop-color="#5cb5ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.61626" x2="1.13145" y1="0.41032" x1="0.09443" data-name="未命名的渐变 66" id="_未命名的渐变_66">
|
||||
<stop stop-color="#5cb5ff" offset="0"/>
|
||||
<stop stop-color="#74e0ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.48885" x2="1.08173" y1="0.51016" x1="0.08139" data-name="未命名的渐变 68" id="_未命名的渐变_68">
|
||||
<stop stop-color="#9cd1ff" offset="0"/>
|
||||
<stop stop-color="#bae0ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50005" x2="1.00016" y1="0.50005" x1="0.00009" data-name="未命名的渐变 71" id="_未命名的渐变_71">
|
||||
<stop stop-color="#a6d3ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.7"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_58" y2="466.98" x2="643.63" y1="473.79" x1="605.79" data-name="未命名的渐变 58" id="_未命名的渐变_58-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_3" y2="397.6" x2="514.17" y1="397.6" x1="479.91" data-name="未命名的渐变 3" id="_未命名的渐变_3-3"/>
|
||||
<linearGradient y2="0.4999" x2="0.99997" y1="0.4999" x1="-0.00009" data-name="未命名的渐变 5" id="_未命名的渐变_5">
|
||||
<stop stop-color="#64a2ff" offset="0"/>
|
||||
<stop stop-color="#5cc9ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.50013" x2="0.99983" y1="0.50013" x1="0.00007" data-name="未命名的渐变 69" id="_未命名的渐变_69">
|
||||
<stop stop-color="#84c9ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.42"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.36502" x2="1.03701" y1="0.61527" x1="0.09096" data-name="未命名的渐变 67" id="_未命名的渐变_67">
|
||||
<stop stop-color="#74e0ff" offset="0"/>
|
||||
<stop stop-color="#8dd6ff" offset="0.56"/>
|
||||
<stop stop-color="#9cd1ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 6" id="_未命名的渐变_6">
|
||||
<stop stop-color="#64a2ff" offset="0"/>
|
||||
<stop stop-color="#5cbfff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 7" id="_未命名的渐变_7">
|
||||
<stop stop-color="#64ccff" offset="0"/>
|
||||
<stop stop-color="#84c9ff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient xlink:href="#_未命名的渐变_7" y2="383.5" x2="552" y1="383.5" x1="546.98" data-name="未命名的渐变 7" id="_未命名的渐变_7-2"/>
|
||||
<linearGradient xlink:href="#_未命名的渐变_7" y2="404.39" x2="561.98" y1="404.39" data-name="未命名的渐变 7" id="_未命名的渐变_7-3"/>
|
||||
<linearGradient y2="0.5" x2="1" y1="0.5" x1="0" data-name="未命名的渐变 8" id="_未命名的渐变_8">
|
||||
<stop stop-color="#84c9ff" offset="0.01"/>
|
||||
<stop stop-color="#b1ccff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient y2="0.5" x2="4.66625" y1="0.5" x1="4.61625" data-name="未命名的渐变 55" id="_未命名的渐变_55">
|
||||
<stop stop-color="#b1c9ff" offset="0"/>
|
||||
<stop stop-color="#b1ccff" offset="0.42"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<g data-name="图层 3" id="_图层_3">
|
||||
<path id="svg_1" fill="#9cf" stroke-width="0px" d="m74.07715,375.0022c11.04,8.56 30.35,0.82 33,0c14.37,-4.43 15.38,-15.33 26,-15c10.44,0.33 13.16,10.98 24,10c6.48,-0.59 7.04,-4.53 16,-6c8,-1.31 8.66,1.66 17,1c12.76,-1.01 15.73,-8.33 24,-6c8.42,4.47 11.58,6.51 22,5c0,0 11.3,-1.75 32,-10c1.42,-9.07 4.72,6.12 11.99,12c10.1,9.09 19.95,-0.4 31,8c10.86,8.26 13.5,26.66 13,31c-1.65,4.39 6.37,10.16 6,10c-4.41,-0.77 -20.72,-10.82 -25,-11c-6.8,-1.26 -15.53,-2.26 -24,-5c-17.1,-5.24 -15.17,-10.82 -34,-10c-7.53,0.04 -6.69,-0.47 -12,1c-2.54,-0.23 -9.74,0.73 -13,-1c-18.29,-11.87 -9.94,11.78 -36,3c-9.47,1.86 -14.72,0.65 -18.02,-1.12c-2.21,-1.19 -4.61,-5.33 -6.74,-4.61c-0.57,0.19 -0.74,0.58 -2.24,1.74c-1.2,0.93 -2.27,1.58 -3,2c-0.91,0.36 -1.91,0.7 -3,1c-2.93,0.8 -5.59,1.02 -7.75,1.02c-0.74,0 -1.87,-0.01 -3.25,-0.02c-3.97,0 -3.61,0.03 -4,0c-2.87,-0.21 -3.75,-0.93 -7,-1c-0.42,0 -0.77,0 -1,0l-6,0c-3,0.22 -5.39,0.65 -7,1c-1.72,0.37 -3.36,0.82 -10,3c-3.07,1.01 -4.59,1.59 -6,2c-1.81,0.53 -5.13,1.49 -9,2c-5.07,0.67 -9,0.3 -12,0c-6.54,-0.65 -11.56,-2.18 -14,-3c-4.6,-1.55 -26.12,-13.37 -20,-10c0,0 0,0 0,0c-0.03,-0.02 -20.88,-13.37 -28,-32c-1.09,-2.85 -2,-6 -2,-6c-0.52,-1.8 -1.44,-5.03 -2,-9c-0.44,-3.12 -1.34,-9.53 0,-10c1.69,-0.59 6.23,8.51 7.27,10.48c5.15,9.76 18.12,22.54 52.73,35.52l0.01,-0.01z" class="cls-32"/>
|
||||
<path id="svg_2" fill="#9cf" stroke-width="0px" d="m260.07715,284.0022c-13.63,7.43 -2.93,57.29 2,57c1.82,-0.11 1.13,-6.97 8,-16c3,-3.94 3.81,-3.37 5,-6c0.88,-3.8 2.06,-11.66 -2,-19c-0.61,-1.11 -1.29,-2.11 -2,-3c-0.31,-0.36 -0.8,-1.04 -1,-2c-0.06,-0.32 -0.19,-0.91 0,-1c0.26,-0.13 0.82,0.87 2,2c0.84,0.81 1.71,1.61 3,2c1.06,0.32 1.94,0.17 3,0c1.38,-0.23 2.37,-0.69 3,-1c1.31,-0.64 2.25,-1.09 3,-2c1.84,-2.22 1.14,-5.41 1,-6c-0.33,-1.36 -0.69,-1.29 -2,-4c-0.87,-1.8 -0.57,-1.55 -2,-5c-0.49,-1.19 -1,-2.79 -2,-6c-0.12,-0.39 -0.37,-1.22 0,-2c0,0 0.29,-0.6 1,-1c1.98,-1.11 11.6,0.55 15,1c2.66,0.35 13.92,1.61 15.83,2.95c0.42,0.3 0.8,0.64 1.17,1.05c2.43,2.73 0.93,4.31 3,9c3.83,8.69 13.16,12.57 19,15c5.09,2.12 8.54,2.5 13,3c6.22,0.69 7.53,-0.22 8,-1c0.74,-1.23 -0.27,-2.7 -1,-5c-1.53,-4.78 -0.3,-8.09 0,-12c0.51,-6.64 -1.77,-13.74 -4,-17c-9.26,-13.54 -41.29,4.77 -71,-2c-1.28,-0.29 -9.89,-2.3 -12,1c-1.87,2.94 2.99,7.55 1,12c-1.49,3.33 -5.5,3.63 -8,5z" class="cls-32"/>
|
||||
<path id="svg_3" fill="#9cf" stroke-width="0px" d="m310.07715,118.0022c-22.42,19.49 74.7,203.11 32,245c-9.08,8.91 -26.9,13.94 -28,28c-0.65,8.33 4.78,18.3 13,23c13.88,7.94 28.83,2.05 33,-1c2.68,-1.96 4,-4 4,-4c1.44,-2.22 1.56,-3.91 3,-8c0.76,-2.17 1.5,-3.9 2,-5c0.43,-1.13 0.95,-2.86 1,-5c0.04,-1.88 -0.32,-2.29 -0.25,-4.13c0.04,-1.01 0.22,-5.22 2.25,-5.87c0.27,-0.09 1.3,-0.35 3,1c-0.17,-0.41 -0.33,-0.87 -0.21,-0.95c0.24,-0.16 1.16,1.42 2.21,1.95c2.87,1.44 7.56,-0.07 8,-2c-10.79,-5.85 -14.4,-6.84 -15,-6c-0.79,1.11 3.49,5.56 3,6c-0.37,0.33 -3.05,-1.93 -3,-2c0.05,-0.07 3.08,1.97 4,3c0.08,0.09 0.44,0.51 1,1c0.23,0.2 0.43,0.36 0.55,0.46c0.1,0.12 0.26,0.31 0.45,0.54c2.9,3.62 4.2,7.01 4.62,8.05c0.92,2.28 2.67,5.77 6.38,10.95c15.05,16.54 34.83,19.18 54,9c16.33,3.81 7.85,10.54 33,5c25.9,-4.5 50.39,1.98 49,-25c-1.26,-10.66 -5.86,-19.02 0,-10c8.68,14.17 21.69,39.51 43,27c6.44,-4.99 5.9,-9.29 8,-16c1.22,-1.48 4.53,-4.38 6,-4c0.01,0.08 0.16,1 -0.41,1.5c-0.6,0.53 -1.8,0.43 -2.59,-0.5c2.97,10.52 12.31,17.02 21,16c7.93,-0.94 13.74,-10.13 14.27,-11.06c0.54,-0.96 0.98,-1.97 0.98,-1.97s0.41,-0.95 0.75,-1.97c1.19,-3.64 1.46,-7.4 1.46,-7.4c0.88,-11.86 0.98,-15.27 0.98,-15.27c0.35,-11.02 0.5,-9.78 0.67,-17.66c0.19,-8.34 -0.04,-7.03 0.13,-13.62c0,0 0.55,-21.79 -3.25,-26.05c-0.48,-0.54 -1,-1 -1,-1c-1.02,-0.91 -1.79,-1.28 -3,-2c0,0 -1,-0.67 -3,-2c-1,-0.67 -2.08,-1.22 -3,-2c-1.25,-1.06 -1.85,-1.94 -3,-2c-0.39,-0.02 -0.52,0.07 -1,0c-1.2,-0.18 -1.99,-1.02 -2,-1c-0.02,0.03 0.5,0.41 3,2c0.1,-0.62 1.27,-2.67 2,-3c5.54,-4.98 5.58,-5.38 8,-10c6.12,-15.03 -2.92,-19.21 -14,-26c-1.23,-1.16 -1.87,-0.9 -3,-1c-0.59,-2.25 -2.17,-3.18 -3,-6c-1.01,-2.71 -2.29,-10.67 -2,-12c0.57,-5.41 2.39,-8.84 4,-11c2.1,-2.82 3.85,-3.49 6,-7c1.22,-2 2.84,-4.65 3,-8c0.25,-5.38 -3.39,-9.63 -8,-15c-2.47,-2.87 -5.06,-5.17 -6,-6c-2.42,-2.13 -4.22,-3.42 -5,-4c-5.14,-3.8 -8.31,-10.94 -9.7,-14.15c-5.32,-12.26 -7.9,-23.86 -8.3,-32.85c-1.17,-26.5 -38.54,-51.77 -63,-35c-7.04,5.65 -2.81,10.14 -11,18c-10.42,10 -22.57,7.8 -34,13c-5.71,3.43 -10.18,0.22 -16,-2c-9.95,-3.09 -18.5,-13.48 -24,-22c-1.52,-1.57 -3.98,-3.73 -7.79,-5.64c-30.14,-4.8 -47.97,-7.45 -51.21,-7.36c-0.78,0.02 -4.27,0.18 -7.57,-1.74c-7.85,-9.54 -30.21,6.06 -40.43,13.74l0.01,0z" class="cls-32"/>
|
||||
<path id="svg_4" fill="#9cf" stroke-width="0px" d="m294.07715,64.0022c-4.66,0.36 -8.11,1.64 -10.79,3.57c-13.35,9.62 -7.67,24.47 -21.35,37.56c-3.88,3.71 -4.86,2.87 -33.86,12.87c-0.06,0.02 -2.46,0.85 -4,0c-0.23,-0.13 -0.75,-0.41 -1,-1c-0.23,-0.54 -0.15,-1.16 -0.12,-1.33c0.02,-0.16 0.09,-0.51 0.12,-0.67l0,0c1.24,-1.71 8.11,-11.55 4.97,-21.02c-3.76,-11.34 -20.93,-19.28 -39.97,-12.98c-12.11,2.27 -15.97,0.27 -17.33,-1.85c-1.94,-3.02 0.84,-6.86 5.33,-19.16c3.86,-10.58 5.89,-16.13 6,-22c0.1,-5.49 -1.43,-13.73 -10,-24c-23.21,-14.8 -47,-13.43 -56,-2c-1.46,1.85 -5.64,7.92 -4,20c-3.3,4.02 -9.31,1.14 -20,4c-10.63,1.96 -20.69,9.46 -13,23c5.63,9.91 94.53,145.36 192.09,115.49c50.17,-15.36 72.52,-65.2 72.91,-66.49c0.03,-0.1 0.51,-1.68 0,-2c-0.15,-0.1 -0.3,-0.03 -1,0l-3,0c-1.55,0 -3.44,-0.77 -4,-1c-0.5,-0.2 -1.8,-0.75 -5,-3c-1.04,-0.73 -2.42,-1.73 -4,-3c-3.1,-0.72 -4.4,-1.96 -5,-3c-0.3,-0.52 -0.38,-0.9 -1,-2c-1.21,-2.14 -1.61,-1.92 -2,-3c-0.34,-0.93 -0.04,-1.09 0,-5c0,-0.35 0,-0.06 0,-2c0,-3.6 0.02,-3.67 0,-4c-0.12,-1.85 -0.9,-3.16 -2,-5c-2.63,-4.41 -6.25,-6.57 -7,-7c-1.67,-0.96 -2.99,-1.38 -5,-2c-2.56,-0.79 -6.28,-1.69 -11,-2l0,0.01z" class="cls-32"/>
|
||||
</g>
|
||||
<g data-name="背景" id="_背景">
|
||||
<path id="svg_5" fill="#fff" stroke-width="0px" d="m199.07715,72.0022c-16.42,-3.08 -26.21,8.1 -31,4c-7.63,-6.54 18.33,-33.97 9,-55c-6.88,-15.51 -30.12,-21.13 -45,-21c-3.33,0.03 -16.49,0.44 -31,9c-30.76,18.15 -37.62,55.27 -56,109c-20.03,58.55 -43.71,77.3 -45,119c-0.4,13.04 0.88,31.37 1,33c2.91,40.64 9.7,47.97 12,64c0.27,1.85 0.98,7.34 5,12c0.83,0.96 1.59,1.64 2.01,2c0.47,0.48 1.15,1.18 1.99,2c10.84,10.63 27.33,20.18 27.33,20.18c17.89,10.12 26.84,15.18 35.66,13.82c3.19,-0.49 6.88,-1.68 16.62,-3.27c3.46,-0.56 6.46,-0.79 12.39,-1.73c3.95,-0.63 7.36,-0.89 10,-1c3.64,-0.15 6.36,-0.03 7,0c4.66,0.22 8.01,0.84 9,1c3.81,0.61 10.14,0.32 21,-4c3.96,0.13 4.67,2.49 9,4c4.59,1.6 5.73,-0.37 15,0c16.7,2.72 12.4,-0.95 25,-4c5.48,-0.56 5.78,1.97 14,3c9.86,2.45 36.35,-8.51 48,1c6.44,5.27 9.1,4.24 16,6c7.05,3.78 15.85,4.35 23,8c18.2,11.17 34.14,20.96 51,2c5.59,-6.98 3.83,-12.43 8,-14c7.13,-2.81 31.59,30.21 58,23c15.36,-6.57 13.31,-4.51 28,1c5.68,1.04 23.32,-3.84 33,-4c12.6,-0.87 15.51,0.92 21,-2c11.5,-6.32 8.35,-12.82 9,-21c6.52,3 17.82,31.94 43,18c6.28,-4.14 7.41,-10.27 11,-10c3.81,0.29 3.43,7.28 9,11c7.22,4.82 20.84,1.79 26,-6c1.88,-2.84 1.95,-5.28 2,-16c0.06,-12.86 2.5,-34.29 1,-57c-0.27,-4.14 -0.62,-6.12 -2,-8c-1.81,-2.47 -4.68,-3.81 -7.73,-8.57c-0.11,-0.18 -0.21,-0.33 -0.27,-0.43c0,-0.08 -0.02,-0.19 -0.02,-0.33c0.03,-1.6 1.77,-2.75 2.36,-3.17c1.19,-0.85 2.8,-2.4 4.66,-5.5c10.77,-33.99 -34.41,-21.61 -20,-59c3.12,-6.89 6.55,-6.37 8,-12c2.32,-9.04 -4.5,-18.26 -8,-23c-5.99,-8.1 -8.37,-6.45 -17,-17c-2.93,-3.58 -6.84,-8.36 -9.5,-15.5c-2.32,-6.24 -2.48,-11.05 -2.5,-12.5c0,-0.42 0,-0.77 0,-1c0.13,-4.73 -0.28,-14.34 -6,-24c-8.66,-14.64 -25.27,-22.26 -40,-22c-22.75,0.41 -39.01,19.59 -41,22c-4.52,5.48 -5.53,9.19 -11,12c-8.17,4.19 -19.82,3.24 -29,-1c-1.04,-0.48 -1.78,-0.88 -2,-1c-13.03,-7.1 -12.62,-18.04 -23,-25c-0.78,-0.52 -2.86,-1.85 -9.5,-3.93c-18.42,-5.77 -40.67,-7.51 -55.5,-8.07c-1.93,0.07 -4.76,-0.05 -8,-1c-3.67,-1.08 -6.36,-2.77 -8,-4c-5.34,-3.78 -6.82,-2.84 -9,-5c-3.59,-3.56 0.14,-10.39 -3,-17c-2.84,-5.97 -10.15,-7.96 -14,-9c-2.47,-0.67 -11.2,-2.68 -20,2c-1.88,1 -6.08,3.3 -9,8c-2.37,3.82 -1.56,5.46 -4,14c-2.08,7.28 -3.18,10.97 -6,13c-1.17,0.85 -5.1,3.27 -13,1c-3.07,-0.18 -7.45,0 -12,2c-8.86,3.88 -12,11.82 -14,11c-2.79,-1.15 5.52,-15.64 0,-28c-5.58,-12.5 -22.22,-15.85 -23,-16z" class="cls-18"/>
|
||||
<g data-name="主体" id="_主体">
|
||||
<path fill="url(#_未命名的渐变_11)" stroke-width="0px" d="m143.07715,31.0022c0.03,-1.1 -0.07,-2.97 -1,-5c-0.89,-1.93 -2.11,-3.1 -2.75,-3.7c-0.4,-0.38 -1.57,-1.42 -3.37,-2.29c-1.11,-0.53 -2.12,-0.83 -2.88,-1.01c-0.48,0 -1.16,0 -1.98,0.04c-1.4,0.09 -4.59,0.32 -7.8,1.81c-3.86,1.79 -6.04,4.59 -7.21,6.15c-1.03,1.36 -0.93,1.77 -4,8c-1.08,2.19 -1.79,3.57 -2,4c-5.9,11.79 -12,35 -12,35c-7.65,29.08 -7.7,25.76 -12,44c-2.8,11.87 -4.71,21.49 -6,28c-0.61,3.07 -2.21,11.25 -4,22c0,0 -1.57,9.87 -3,30c-0.1,1.34 -0.46,7.05 1,14c0.85,4.05 3,8 3,8l0,0c2.28,2.98 4.52,4.83 5.99,5.89c11.06,8 23.32,4.35 57.01,4.11c3.06,-0.02 5.53,-0.01 7,0c1.02,-0.28 2.51,-0.84 4,-2c0.52,-0.41 1.27,-1.06 2,-2c0.45,-0.58 1.59,-1.91 2,-4c0.21,-1.08 0.43,-2.87 0,-5c-0.36,-1.17 -0.7,-2.18 -1,-3c-0.3,-0.83 -0.53,-1.39 -1,-2c-0.36,-0.46 -0.73,-0.79 -1,-1c-0.24,-0.23 -0.76,-0.76 -1,-1c-1.73,-1.73 -1.87,-1.87 -2,-2c-1.25,-1.2 -2.82,-1.65 -4,-2c-5.84,-1.71 -23,-2 -23,-2c-4.12,-0.07 -10.14,-0.62 -17.53,-2.99c1.73,-17.19 5.56,-49.39 13.31,-81.46c4.95,-20.51 4.35,-18.09 8.22,-30.55c5.85,-18.81 8.77,-28.22 11,-34c0,0 3.24,-8.41 4.63,-15.69c0.44,-2.32 0.84,-4.8 0.84,-4.8c0.18,-1.17 0.35,-2.34 0.53,-3.5l-0.01,-0.01z" class="cls-3" id="lite-l"/>
|
||||
<path fill="url(#_未命名的渐变_11-2)" stroke-width="0px" d="m196.07715,130.0022c4.11,0.31 6.91,2.96 8,4c6.83,6.48 6.93,17.68 7,26c0,0.06 0,0.03 0,7c0,14.32 0,21.48 0,22c0.04,13.27 0.66,35.34 -4,42c-1.29,1.84 -3,3 -3,3c-2.97,2.01 -6.17,1.99 -8,2c-1.45,0 -7.74,-0.12 -13,-5c-6.34,-5.87 -6.06,-13.87 -6,-15c0,-0.07 0,-9.93 0,-10c0,-38.04 0,-37.85 0,-38c-0.02,-1.29 -0.01,-3.53 0,-8c0.03,-9.9 0.15,-12.06 1,-15c1.28,-4.42 3.15,-6.95 4,-8c1.1,-1.36 2.19,-2.34 3,-3c0.7,-0.58 1.7,-1.32 3,-2c0.98,-0.52 4.28,-2.28 8,-2z" class="cls-15" id="lite-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_11-3)" stroke-width="0px" d="m193.85715,86.0722c8.85,-0.96 18.71,7.52 18.2,17.09c-0.5,9.28 -10.62,16.63 -19.33,14.46c-6.93,-1.73 -13.7,-9.65 -12.51,-18.4c1.06,-7.79 7.93,-12.52 13.65,-13.14l-0.01,-0.01z" class="cls-30" id="lite-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_11-4)" stroke-width="0px" d="m270.07715,109.0022c-5.46,4.9 -13.26,-2.45 -24,3c-1.76,0.89 -7.94,4.02 -9,10c-0.72,4.08 0.94,7.61 1.38,8.43c0.48,0.92 2.17,4.11 5.62,5.57c1.09,0.46 1.2,0.26 6,1c5.06,0.78 4.17,0.82 6,1c2.02,0.19 4,0.68 6,1c0.54,0.09 1.55,0.25 2,1c0.42,0.71 0.13,1.6 0,2c-0.61,1.93 -0.44,4.05 -1,6c-1.01,3.51 -0.87,8.39 -1,13c-0.29,10.62 -1.82,12.94 -2,20c-0.11,4.19 -0.42,18.97 9,31c1.49,1.9 10.06,12.84 21,12c1.28,-0.1 5.89,-0.45 9,-4c4.48,-5.11 2.13,-12.61 2,-13c-1.5,-4.54 -4.19,-4.73 -8,-10c-4,-5.53 -5.15,-11 -6,-15c-1.67,-7.89 -0.83,-14.05 0,-20c1.22,-8.76 3.02,-10.14 4,-16c0.13,-0.81 0.46,-2.94 2,-5c0,0 0.85,-1.13 2,-2c2.17,-1.64 8.68,-0.49 12.72,-0.42c3.25,0.06 5.06,0.09 7.28,-0.58c1.17,-0.35 8.31,-2.66 10,-9c1.37,-5.14 -1.51,-11.55 -6,-14c-3.8,-2.07 -12.48,-2.26 -15,-3c-1.03,-0.3 -1.9,-0.93 -2,-1c-0.47,-0.34 -0.82,-0.6 -1,-1c-0.56,-1.23 0.89,-2.87 1,-3c0.54,-0.96 1.27,-2.32 2,-4c1.51,-3.46 2.99,-6.85 3,-11c0,-1.91 0.01,-6.19 -3,-10c-3.3,-4.17 -8.02,-4.99 -9.42,-5.24c-0.92,-0.16 -6.37,-1 -11.58,2.24c-1.61,1 -4.15,3 -7,9c-5.75,12.08 -1.75,17.18 -6,21z" class="cls-4" id="lite-t"/>
|
||||
<path fill="url(#_未命名的渐变_11-5)" stroke-width="0px" d="m362.07715,166.0022c-0.58,0.39 -5.22,3.65 -5,8c0.19,3.92 4.21,6.49 5,7c5.42,3.48 9.31,0.51 25,-1c10.15,-0.98 16.08,-0.47 21,-5c1.89,-1.74 2.72,-3.39 3,-4c2.32,-5.01 -0.29,-10.09 -1,-14c-1.83,-10.01 -12.11,-17.03 -15,-19c-1.39,-0.95 -8.43,-5.63 -19,-7c-4.47,-0.58 -13.46,-1.75 -23,3c-8.94,4.45 -13.31,11.6 -16,16c-5.84,9.56 -6.79,18.48 -7,21c-0.4,4.87 -1.09,14.86 5,25c4.96,8.26 11.87,12.39 15,14c8.24,4.25 15.6,4.12 23,4c9.99,-0.17 16.58,-2.61 23,-5c2,-0.74 5.17,-2.02 8,-5c1.68,-1.77 4.08,-4.29 4,-8c-0.07,-3.36 -2.16,-6.53 -5,-8c-2.95,-1.53 -5.9,-0.81 -9,0c-6.07,1.58 -6.81,4.01 -12,6c-6.49,2.49 -12.52,1.46 -15,1c-3.77,-0.69 -9.81,-1.81 -14,-7c-3.24,-4.01 -3.72,-8.41 -4,-11c-0.26,-2.43 -1.1,-10.07 4,-17c0.43,-0.59 7.21,-9.48 18,-9c1.43,0.06 9.65,0.59 14,7c1.16,1.71 2.94,4.33 2,6c-2.22,3.93 -15.76,-4.29 -25,2z" class="cls-7" id="lite-e"/>
|
||||
<path fill="url(#_未命名的渐变_240)" stroke-width="0px" d="m502.07715,162.0022l13.33,22l9.67,-15l-8,-20l4,-6l6,2l9,13l7,-11l9,1l3,7l-11,13l17,2l4,8l-5,4l-22,-4l-13.5,16.8l27.5,5.2l11,-14l7,1l3,7l-9,11l19,3l4,7l-4,5l-18,-3l7,14l-4,4l-8,-1l-10,-20l-40,-8l-2,-2l-20,-37l-23,-4l-3,-7l4,-5l16,3l-9,-15l4,-6l7,1l9,16l9,-10l7,2l3,6l-10,14z" class="cls-21" id="logo-snow"/>
|
||||
<path fill="url(#_未命名的渐变_9)" stroke-width="0px" d="m344.07715,316.0022c-18.61,-18.39 -62.05,-50.01 -50,-71c2.85,-4.5 7.34,-9.45 17,-7c15.19,5.99 14.64,39.18 45,55c8.67,-18.92 10.28,-33.18 10,-43c-0.12,-4.37 -0.74,-12.15 4,-16c0.82,-0.55 5.22,-3.4 10.85,-2.15c3.86,0.85 6.25,3.17 7.15,4.15c0.5,0.6 1.28,1.58 2.09,2.87c8.99,14.33 0.03,32.06 -11.49,69.45c-4.1,13.3 -6.65,21.58 -9.6,33.68c-5.81,23.86 -8.17,40.38 -20,51c-11.03,9.91 -22.32,0.03 -23,-9c-2.89,-15.02 23.13,-56.98 18,-68z" class="cls-27" id="yuki-y"/>
|
||||
<path fill="url(#_未命名的渐变_9-2)" stroke-width="0px" d="m403.07715,323.0022c-0.54,-0.11 -5.36,-1.02 -9,2c-2.31,1.92 -3.04,4.55 -4,8c-0.74,2.66 -0.91,4.8 -1,6c-0.59,8.25 0,15 0,15c1.18,13.55 1.77,20.33 3,23c1.04,2.27 4.07,8.71 11,13c6.21,3.85 12.31,3.91 21,4c0.81,0 16.83,0.09 21,-4c0.22,-0.21 1.2,-1.26 2,-1c0.93,0.3 0.69,2.05 2,4c0,0 0.63,0.93 2,2c3.54,2.75 12.53,3.41 16,-1c0.62,-0.79 1.75,-2.64 2,-5c0.07,-0.68 0.05,-1.22 0.02,-1.76c-0.13,-2.75 -0.88,-4.83 -1.02,-5.24c-1.31,-3.73 -3.37,-15.69 -4,-23c-0.58,-6.71 0.42,-5.3 0,-19c-0.11,-3.63 -0.12,-9.19 -3,-15c-1.36,-2.75 -2.63,-4.09 -4,-5c-2.95,-1.96 -6.82,-2.22 -10,-1c-0.8,0.31 -3.48,1.34 -5,4c-1.36,2.37 -1.11,4.83 -1,6c0.66,6.98 0.45,14.01 1,21c0.72,9.13 0.57,11.51 -1,14c-1.8,2.86 -4.42,4.2 -6,5c-7.58,3.86 -15,0.82 -17,0c-2.54,-1.04 -3.49,-2.11 -4,-3c-0.74,-1.29 -0.88,-2.78 -1,-4c-0.13,-1.35 -0.05,-2.34 0,-3l0,-16c-0.19,-7.44 -0.28,-11.16 -2,-14c-0.52,-0.85 -3.02,-4.98 -8,-6z" class="cls-22" id="yuki-u"/>
|
||||
<path fill="url(#_未命名的渐变_9-3)" stroke-width="0px" d="m591.07715,272.0022c-6.65,0.3 -12.55,6.12 -12,13c0.53,6.56 6.7,11.28 13,11c6.65,-0.3 12.55,-6.12 12,-13c-0.53,-6.56 -6.7,-11.28 -13,-11z" class="cls-2" id="yuki-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_9-4)" stroke-width="0px" d="m591.07715,303.0022c-0.8,0.03 -3.41,0.23 -6,2c0,0 -1.73,1.18 -3,3c-3.44,4.92 -2.32,14.54 -2,25c0.14,4.66 0,9.33 0,14c0,11.92 0,17.88 0,18c-0.51,8.41 -1.54,11.05 0,16c0.77,2.5 1.84,5.92 5,8c3.21,2.11 6.76,1.77 8.36,1.62c0.77,-0.07 5.65,-0.54 8.64,-3.62c3.4,-3.49 2.66,-8.56 2,-17c-0.09,-1.11 -1.18,-15.43 -1,-28c0.1,-7.33 -0.76,-14.71 0,-22c0.11,-1.03 0.52,-4.77 -1,-9c-0.64,-1.78 -1.55,-4.19 -4,-6c-2.89,-2.13 -6.05,-2.04 -7,-2z" class="cls-24" id="yuki-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_9-5)" stroke-width="0px" d="m545.07715,299.0022c-0.26,-0.11 -0.66,-0.27 -1.17,-0.44c0,0 -4.46,-1.53 -9.91,-1c-4.47,0.44 -18.59,11.34 -31.93,31.43c-0.35,-10.53 -0.23,-21.87 0.56,-33.9c0.37,-5.55 0.85,-10.92 1.44,-16.1c0.26,-1.2 0.52,-2.94 0.41,-5.03c-0.09,-1.81 -0.25,-4.96 -2.27,-8.04c-0.56,-0.85 -2.9,-4.42 -7.52,-5.51c-5.61,-1.33 -10.01,2.08 -10.62,2.58c-3.44,2.76 -4.45,6.67 -5,9c-3.6,15.32 -3,27 -3,27c0.42,8.15 1.67,32.57 1,50c-0.22,5.66 0.05,11.33 0,17c-0.05,6.02 -0.13,9.05 1,13c1.45,5.07 4.08,8.75 6,11c1.19,1.11 3.93,3.36 8,4c3.99,0.63 7.79,-0.51 9.84,-1.85c11.06,-7.21 1.65,-39.59 4.55,-40.56c0.39,-0.13 1.19,0.88 2.61,3.4c8.89,11.22 14.99,15.39 30,29c7.7,10.13 23.45,3.59 22,-8c-0.19,-16.59 -39.62,-33.08 -31.91,-39.47c1.89,-2.38 6,-8.21 6.91,-9.53c5.47,-7.8 10.83,-8.44 13,-15c1.34,-4.04 0.69,-6.57 0.43,-7.38c-1.01,-3.15 -3.39,-4.94 -4.43,-5.62l0.01,0.02z" class="cls-28" id="yuki-k"/>
|
||||
<path fill="url(#_未命名的渐变_4)" stroke-width="0px" d="m79.07715,274.0022c-1.75,-1 -2.61,-0.17 -10,1c-2.22,0.35 -7.11,1.06 -13,3c-1.36,0.45 -2.68,0.93 -3,2c-0.49,1.65 1.56,4.27 4,5c0.32,0.09 0.56,0.13 0.74,0.16c2.19,0.34 3.89,-0.56 5.26,-1.16c1.96,-0.87 3.64,-1.24 7,-2c0,0 4.44,-1 5,0c0.02,0.04 0.04,0.07 0.04,0.07c0.07,0.18 -0.02,0.5 -0.04,2.93c0,0.06 0,0.71 0,2c0,5.01 0.09,5.71 0,7c-0.2,2.74 -0.3,4.11 -1,5c-1.25,1.58 -3.23,1.52 -7,2c-5.62,0.72 -4.41,1.27 -10,2c-7.19,0.94 -9.49,0.07 -11,2c-1.32,1.68 -1.32,4.57 0,6c1.74,1.88 5.46,0.88 9,0c7.35,-1.82 19.55,-4.84 29,-6c4.81,-0.59 12,-1.09 13,-4c0.57,-1.65 0,-3 0,-3c-0.06,-0.14 -0.62,-1.43 -2,-2c-1.19,-0.49 -2.36,-0.18 -3,0c-6.78,1.91 -9.23,2.82 -10,2c-0.45,-0.48 -0.17,-1.39 0,-2c1.77,-6.29 1.22,-12.36 1,-14c-0.23,-1.67 -0.84,-6.18 -4,-8z" class="cls-19" id="lite-jp-1"/>
|
||||
<path fill="url(#_未命名的渐变_4-2)" stroke-width="0px" d="m75.07715,330.0022c-1.02,0.34 -1.72,1.18 -2,2c-0.31,0.93 -0.06,1.78 0,2c0.38,1.39 0.25,7.26 0,19c-0.12,5.74 -0.36,7.73 0,12c0.21,2.49 0.58,5.11 2,8c0.87,1.76 1.83,3.72 4,5c2.08,1.23 4.09,1.14 7,1c2.69,-0.13 6.51,-0.31 7,-2c0.37,-1.27 -1.18,-3.23 -3,-4c-2.78,-1.18 -4.84,0.97 -7,0c-2.17,-0.97 -2.69,-4.29 -3,-7c-1.07,-9.45 -0.9,-24.04 -1,-30c-0.02,-1.36 -0.12,-5.21 -2,-6c-0.58,-0.25 -1.37,-0.21 -2,0z" class="cls-34" id="liteecho-1"/>
|
||||
<path fill="url(#_未命名的渐变_72)" stroke-width="0px" d="m263.13715,280.9522c-2.11,0.2 -3.55,1.9 -3.93,2.35c-0.57,0.68 -0.91,1.34 -1.11,1.8c1.09,1.05 6.06,5.64 11.22,4.91c2.33,-0.33 5.1,-1.81 5.34,-2.63c0.03,-0.09 0.03,-0.17 0.03,-0.17c0,-0.29 -0.33,-0.71 -1.89,-1.83c-1.33,-0.96 -2.23,-1.61 -3.3,-2.18c-0.69,-0.37 -1.23,-0.6 -1.68,-0.79c-2.41,-1.04 -3.62,-1.55 -4.68,-1.45l0,-0.01z" class="cls-16" id="yuki-jp-4-1"/>
|
||||
<path fill="url(#_未命名的渐变_58)" stroke-width="0px" d="m248.07715,265.0022c0.37,-0.49 1.34,-1.8 3,-2c2.33,-0.28 3.93,1.89 4,2c0.33,0.46 0.44,0.81 1,3c0.59,2.3 0.88,3.45 1,4c0.33,1.56 0.71,3.58 1,6c0.65,5.37 0.61,6.78 1,10c0.79,6.47 1.28,10.5 3,15c0.07,0.18 1.23,3.21 1,7c-0.08,1.29 -0.29,2.25 -1,3c-1,1.07 -2.67,1.39 -4,1c-0.58,-0.17 -1.69,-0.65 -3,-3c-1.53,-2.75 -1.78,-5.26 -2,-7c-0.3,-2.39 -0.86,-5.79 -2,-10c-1,-6.33 -2,-12.67 -3,-19c-0.33,-1.67 -0.67,-3.33 -1,-5c-0.1,-0.53 -0.53,-2.95 1,-5z" class="cls-12" id="yuki-jp-4"/>
|
||||
<path fill="url(#_未命名的渐变_3)" stroke-width="0px" d="m101.07715,341.0022c-1.86,-0.04 -3.59,1.27 -4,3c-0.56,2.38 1.47,5.01 4,5c2.03,-0.01 4,-1.72 4,-4c0,-2.25 -1.92,-3.96 -4,-4z" class="cls-20" id="liteecho-i-1-1"/>
|
||||
<path fill="url(#_未命名的渐变_3-2)" stroke-width="0px" d="m102.07715,354.0022c-0.61,-0.3 -1.38,-0.31 -2,0c-0.14,0.07 -0.62,0.33 -1,1c-1.18,2.08 -1.01,7.51 -1,8c0.16,5.45 0,9 0,9c-0.08,1.78 -0.22,3.7 1,5c0.21,0.22 0.94,1 2,1c1.08,0 1.81,-0.8 2,-1c1.05,-1.14 1.02,-2.72 1,-4c-0.03,-2.33 0.04,-4.67 0,-7c-0.05,-3.31 0.17,-8.95 -1,-11c-0.12,-0.2 -0.41,-0.71 -1,-1z" class="cls-9" id="liteecho-i-1"/>
|
||||
<path fill="url(#_未命名的渐变_65)" stroke-width="0px" d="m119.55715,342.6422c-0.52,0.03 -1.3,0.07 -1.92,0.55c-0.25,0.19 -0.76,0.67 -1.1,2.68c-0.15,0.92 -0.29,2.26 -0.14,3.91c-1.17,0.01 -3.52,0.16 -5.32,1.22c-0.38,0.22 -0.77,0.51 -1,1c-0.39,0.85 -0.08,1.91 0.41,2.59c0.74,1.01 1.99,1.19 3.59,1.41c0.85,0.12 1.57,0.12 2.05,0.1c-0.06,0.76 -0.12,1.85 -0.14,3.16c-0.01,1.22 -0.03,2.48 0.14,4.12c0.15,1.49 0.3,2.92 0.96,4.62c0.39,1.03 0.78,1.67 1,2c0.25,0.39 0.74,1.08 1.48,1.76c1.12,1.05 2.67,2.5 4.52,2.24c1.2,-0.17 2.57,-1.06 2.76,-2.24c0.12,-0.76 -0.29,-1.46 -0.55,-1.92c-0.43,-0.76 -0.87,-0.99 -1.51,-1.65c-0.95,-0.97 -1.44,-1.93 -1.78,-2.61c-0.71,-1.41 -0.9,-2.61 -1.1,-3.85c-0.15,-0.97 -0.37,-2.35 -0.14,-4.12c0.09,-0.67 0.22,-1.22 0.32,-1.61c0.56,0 1.35,-0.04 2.29,-0.17c1.54,-0.21 2.32,-0.32 2.88,-0.82c0.8,-0.71 1.27,-2.03 0.83,-3.01c-0.13,-0.3 -0.38,-0.61 -1,-1c-1.52,-0.94 -3.22,-1.02 -4.36,-0.94c0.11,-0.49 0.27,-1.25 0.41,-2.2c0.49,-3.18 0.14,-3.81 -0.14,-4.12c-0.26,-0.3 -0.59,-0.43 -1.24,-0.69c-0.4,-0.16 -1.18,-0.47 -2.2,-0.41z" class="cls-8" id="liteecho-t"/>
|
||||
<path fill="url(#_未命名的渐变_66)" stroke-width="0px" d="m142.48715,359.4922c-1.24,0 -1.82,0.11 -2.17,0.53c-0.63,0.76 -0.29,2.24 0.31,3.15c1.51,2.31 5.53,2.25 7.8,1.77c1.4,-0.3 4.49,-0.94 5.98,-3.77c1.7,-3.21 -0.04,-6.62 -0.4,-7.27c-1.86,-3.4 -5.47,-4.29 -7.14,-4.7c-3.37,-0.83 -6.16,0.05 -7.27,0.4c-1.07,0.34 -2.81,0.91 -4.53,2.4c-3.45,2.98 -3.92,7.09 -4,8c-0.27,3.05 0.7,5.35 1,6c0.27,0.6 1.17,2.42 3,4c1.04,0.89 2.16,1.53 3,2c0.99,0.56 1.75,0.89 2,1c1.02,0.44 1.88,0.81 3,1c1.17,0.2 2.07,0.1 3,0c0.34,-0.04 1.85,-0.22 4,-1c3.3,-1.2 4.59,-2.54 5,-3c0.47,-0.53 0.68,-0.9 0.71,-1.34c0.06,-1.15 -1.21,-2.31 -2.48,-2.62c-0.51,-0.12 -0.94,-0.08 -1.23,-0.05c-2.01,0.26 -3.04,1.28 -4.31,1.86c-2.59,1.19 -5.84,0.41 -7.69,-0.86c-1.16,-0.8 -1.95,-1.93 -2,-2c-0.26,-0.38 -0.69,-1.07 -1,-2c-0.26,-0.77 -0.95,-2.86 0,-5c0.82,-1.85 2.41,-2.69 3,-3c2.34,-1.23 5.06,-1.05 7,0c0.69,0.37 1.64,0.9 2,2c0.29,0.87 0.26,2.23 -0.52,2.84c-1,0.8 -2.36,-0.34 -6.07,-0.36l0.01,0.02z" class="cls-25" id="liteecho-e"/>
|
||||
<path fill="url(#_未命名的渐变_68)" stroke-width="0px" d="m197.07715,346.0022c-1.16,0 -4.12,0.04 -7,2c-1.54,1.05 -2.49,2.26 -3,3c-1.62,2.38 -1.87,4.7 -2,6c-0.12,1.26 -0.36,4 1,7c2.14,4.72 6.61,6.52 8,7c1.04,0.36 4.93,1.64 9,0c0.94,-0.38 2.74,-1.13 4,-3c0.45,-0.66 1.99,-2.94 1,-5c-0.54,-1.12 -1.88,-2.25 -3,-2c-1.41,0.32 -1.04,2.48 -3,4c-1.92,1.48 -4.45,1.09 -5,1c-0.54,-0.08 -2.42,-0.41 -4,-2c-2.4,-2.42 -2.04,-5.66 -2,-6c0.07,-0.51 0.43,-3.37 3,-5c2.25,-1.43 5.33,-1.38 7,0c0.93,0.77 0.92,1.55 2,2c1.26,0.52 3.2,0.27 4,-1c0.72,-1.15 0.17,-2.56 0,-3c-0.15,-0.38 -0.69,-1.63 -3,-3c-0.98,-0.58 -3.45,-2.01 -7,-2z" class="cls-29" id="liteecho-c"/>
|
||||
<path fill="url(#_未命名的渐变_71)" stroke-width="0px" d="m217.07715,329.0022c-0.92,-0.49 -2.08,-0.44 -3,0c-1.8,0.87 -1.99,2.91 -2,3l0,9c0,4 0.04,8 0,12c-0.03,3 0.1,6 0,9c-0.1,3.04 -0.29,5.38 1,8c0.45,0.91 1.42,2.89 3,3c1.63,0.11 2.9,-1.85 3,-2c1.44,-2.28 0.03,-4.1 0,-9c-0.02,-2.85 0,-5.82 2,-8c0.37,-0.4 1.8,-1.97 4,-2c2.44,-0.04 3.91,1.89 4,2c0.92,1.22 1,2.52 1,3c-0.33,1.67 -0.67,3.33 -1,5c-0.41,1.12 -0.91,2.85 -1,5c-0.09,2.3 -0.16,3.99 1,5c1.28,1.11 3.61,1.02 5,0c1.65,-1.21 1.8,-3.61 2,-7c0.08,-1.27 0.04,-2.31 0,-3l0,-8c-0.02,-0.84 -0.16,-2.36 -1,-4c-0.51,-1 -1.73,-2.93 -4,-4c-3.65,-1.72 -7.65,-0.14 -8,0c-1.5,0.62 -2.24,1.36 -3,1c-0.71,-0.34 -0.94,-1.4 -1,-4c-0.12,-5.04 0.61,-6.66 0,-10c-0.56,-3.06 -1.54,-3.76 -2,-4z" class="cls-17" id="liteecho-h"/>
|
||||
<path fill="url(#_未命名的渐变_58-2)" stroke-width="0px" d="m252.07715,348.0022c-4.27,-0.18 -7.17,2.27 -8,3c-3.05,2.66 -3.79,6 -4,7c-0.18,0.88 -1.21,5.84 2,10c2.08,2.69 4.82,3.62 6,4c1.29,0.42 4.46,1.39 8,0c2.95,-1.16 4.51,-3.31 5,-4c1.43,-2.02 1.81,-3.97 2,-5c0.46,-2.51 0.1,-4.49 0,-5c-0.67,-3.35 -2.52,-5.47 -3,-6c-0.69,-0.76 -3.46,-3.8 -8,-4z" class="cls-33" id="liteecho-o"/>
|
||||
<path stroke-miterlimit="10" stroke="#fff" fill="#fff" d="m250.57715,354.5022c-2.49,0.24 -3.75,2.55 -4,3c-0.09,0.17 -1.81,3.42 0,6c1.68,2.39 5.6,3.06 8,1c2.1,-1.8 2.13,-4.93 1,-7c-0.84,-1.54 -2.7,-3.22 -5,-3z" class="cls-35" id="liteecho-o-white"/>
|
||||
<path fill="url(#_未命名的渐变_3-3)" stroke-width="0px" d="m108.07715,274.0022c-0.71,0.63 -1.32,1.81 -1,3c0.38,1.44 1.86,1.95 2,2c0.77,0.25 1.44,0.12 2,0c4.88,-1.04 5.31,-1.31 6,-1c1.18,0.54 1.54,2.08 2,4c0.41,1.72 0.73,3.08 0,4c-0.65,0.81 -2.11,0.89 -5,1c-1.25,0.05 -2.29,0.03 -3,0c-0.53,0.14 -1.96,0.61 -3,2c-0.4,0.54 -1.21,1.61 -1,3c0.24,1.62 1.7,2.78 3,3c0.44,0.08 0.79,0.03 1,0c4.59,-0.65 6.89,-0.98 7,-1c2.55,-0.43 3.84,-0.64 4.45,-0.34c1.26,0.62 1.41,1.86 2.55,5.34c0,0 1.48,4.5 4,10c0.8,1.75 1.53,3.13 2,4c0.16,0.13 2.42,1.9 5,1c0.16,-0.06 2.44,-0.88 3,-3c0.21,-0.78 0.1,-1.42 0,-2c-0.27,-1.54 -0.96,-2.26 -2,-4c-0.12,-0.21 0.03,0.04 -2,-4c-0.67,-1.33 -1.32,-2.67 -2,-4c-1.91,-3.76 -2.3,-4.3 -2,-5c0.2,-0.46 0.49,-0.53 4,-2c1.13,-0.48 2.45,-1.03 4,-2c1.13,-0.71 1.71,-1.21 2,-2c0.06,-0.17 0.35,-1.03 0,-2c-0.48,-1.32 -1.88,-2.03 -3,-2c-0.31,0 -0.54,0.07 -0.66,0.11c-2.2,0.63 -4.77,1.67 -5.34,1.89c-2.21,0.88 -3.31,1.31 -4,1c-0.42,-0.19 -0.77,-0.54 -2,-4c-1.21,-3.42 -1.11,-3.77 -1,-4c0.42,-0.85 1.37,-0.79 6,-2c2.46,-0.64 3.57,-1.02 4,-2c0.3,-0.68 0.14,-1.39 0,-2c-0.09,-0.4 -0.54,-2.17 -2,-3c-1.17,-0.66 -2.4,-0.38 -4,0c-3.65,0.88 -4.88,2.55 -6,2c-0.55,-0.27 -1.15,-1.13 -1,-4c-0.42,-2 -0.76,-3 -1,-3l0,0c-0.76,-1.48 -2.4,-2.29 -4,-2c-1.51,0.27 -2.7,1.47 -3,3c-0.17,2.45 0.41,4.01 1,5c0.57,0.95 1.14,1.36 1,2c-0.24,1.14 -2.45,1.64 -4,2c-2.38,0.55 -3.11,0.2 -4,1z" class="cls-13" id="lite-jp-2"/>
|
||||
<path fill="url(#_未命名的渐变_5)" stroke-width="0px" d="m153.07715,286.0022c-0.46,1.12 -0.62,2.69 0,4c0.19,0.41 0.79,1.49 2,2c1.22,0.51 2.43,0.16 3,0c5,-1.43 7.51,-2.15 8,-2c4.42,1.34 3.64,20.08 7,22c2.14,1.22 4,1 4,1c1.43,-0.17 3.03,-0.97 3.02,-1c0,0 0,0 -0.02,0c0.27,-0.2 0.65,-0.52 1,-1c1.53,-2.12 0.85,-5.32 -1,-10c-3.3,-8.33 -6.24,-11.07 -5,-13c0.71,-1.1 1.84,-0.46 5.57,-2.36c2.51,-1.27 4.06,-2.06 4.43,-3.64c0.46,-1.98 -1.11,-4.46 -3,-5c-1.01,-0.29 -2.23,0.21 -4.65,1.22c-3.32,1.39 -3.58,2.02 -4.35,1.78c-2.25,-0.7 -0.9,-6.34 -4,-8c-1.22,-0.65 -2.84,-0.54 -4,0c-0.31,0.14 -1.56,0.73 -2,2c-0.24,0.7 -0.14,1.29 0,2c0.51,2.66 2.08,3.57 2,5.99c0,0 0,0 0,0c0.01,0 0.02,0 0.02,0c0.01,0.1 -10.37,-0.01 -12.02,4l0,0.01z" class="cls-5" id="yuki-jp-1"/>
|
||||
<path fill="url(#_未命名的渐变_69)" stroke-width="0px" d="m230.07715,276.0022c-0.23,-0.2 -0.95,-0.74 -2,-1c-0.58,-0.14 -1.39,-0.34 -2,0c-0.79,0.44 -0.86,1.6 -1,3c0,0 -0.62,6.23 -2,9c-0.43,0.86 -0.97,1.66 -0.97,1.66c-0.12,0.18 -0.24,0.35 -0.35,0.5c-0.2,0.27 -0.42,0.55 -0.68,0.84c-1.47,1.68 -5.93,4.2 -5.93,4.2c-3.23,1.82 -3.66,2.04 -4.07,2.8c-0.61,1.13 -0.9,2.9 0,4c0.8,0.97 2.17,0.99 3,1c0.7,0 3.05,-0.07 7.17,-3.17c1.64,-1.24 3.78,-2.89 5.83,-5.83c3.15,-4.53 3.72,-8.76 4,-11c0.52,-4.2 -0.4,-5.48 -1,-6z" class="cls-31" id="yuki-jp-2-3"/>
|
||||
<path fill="url(#_未命名的渐变_67)" stroke-width="0px" d="m167.88715,359.1822c-1.13,0.52 -1.6,0.87 -1.74,1.41c-0.25,0.96 0.69,2.15 1.62,2.72c2.35,1.44 5.96,-0.31 7.81,-1.71c1.14,-0.86 3.66,-2.76 3.81,-5.96c0.17,-3.63 -2.85,-5.97 -3.45,-6.41c-3.13,-2.29 -6.78,-1.55 -8.46,-1.22c-3.41,0.68 -5.55,2.66 -6.41,3.45c-0.83,0.76 -2.15,2.02 -3.08,4.1c-1.85,4.16 -0.53,8.09 -0.22,8.94c1.05,2.88 2.91,4.54 3.46,5c0.5,0.42 2.09,1.69 4.42,2.34c1.32,0.37 2.61,0.46 3.57,0.53c1.13,0.08 1.96,0.06 2.24,0.05c1.11,-0.04 2.04,-0.06 3.14,-0.37c1.14,-0.32 1.92,-0.79 2.71,-1.28c0.29,-0.18 1.58,-0.98 3.19,-2.61c2.48,-2.49 3.07,-4.25 3.25,-4.84c0.2,-0.68 0.24,-1.11 0.07,-1.51c-0.43,-1.07 -2.08,-1.58 -3.36,-1.31c-0.51,0.11 -0.88,0.32 -1.13,0.48c-1.71,1.09 -2.2,2.45 -3.11,3.52c-1.84,2.18 -5.11,2.86 -7.32,2.49c-1.39,-0.23 -2.59,-0.92 -2.66,-0.96c-0.4,-0.23 -1.08,-0.67 -1.76,-1.38c-0.56,-0.59 -2.08,-2.19 -2.13,-4.52c-0.04,-2.02 1.04,-3.46 1.44,-3.99c1.59,-2.11 4.14,-3.1 6.33,-2.98c0.79,0.04 1.86,0.12 2.66,0.96c0.63,0.67 1.18,1.91 0.74,2.79c-0.57,1.15 -2.28,0.69 -5.65,2.26l0.02,0.01z" class="cls-14" id="liteecho-e2"/>
|
||||
</g>
|
||||
<circle id="svg_6" fill="url(#_未命名的渐变_6)" stroke-width="0px" r="4" cy="301.0022" cx="162.07715" class="cls-23"/>
|
||||
<ellipse id="svg_7" fill="url(#_未命名的渐变_7)" stroke-width="0px" ry="2.5" rx="2.51" cy="270.5022" cx="183.56715" class="cls-11"/>
|
||||
<ellipse id="svg_8" fill="url(#_未命名的渐变_7-2)" stroke-width="0px" ry="2.5" rx="2.51" cy="273.5022" cx="176.56715" class="cls-26"/>
|
||||
<circle id="svg_9" fill="url(#_未命名的渐变_7-3)" stroke-width="0px" r="4" cy="294.3922" cx="185.05715" class="cls-10"/>
|
||||
<circle id="svg_10" stroke-width="0px" fill="url(#_未命名的渐变_8)" r="4" cy="281.2622" cx="209.49715" class="cls-1"/>
|
||||
<circle id="svg_11" fill="url(#_未命名的渐变_55)" stroke-width="0px" r="4" cy="275.2622" cx="217.49715" class="cls-6"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 34 KiB |
@ -1,95 +0,0 @@
|
||||
[
|
||||
{
|
||||
"module_name": "liteyukibot-plugin-nonebot",
|
||||
"project_link": "liteyukibot-plugin-nonebot",
|
||||
"name": "NoneBot插件",
|
||||
"desc": "在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)",
|
||||
"author": "snowykami",
|
||||
"homepage": "https://github.com/LiteyukiStudio/liteyukibot-plugin-nonebot",
|
||||
"tags": [
|
||||
{
|
||||
"label": "app",
|
||||
"color": "#aeeaa8"
|
||||
}
|
||||
],
|
||||
"is_official": true,
|
||||
"type": "application",
|
||||
"valid": true,
|
||||
"version": "rolling"
|
||||
},
|
||||
{
|
||||
"module_name": "liteyukibot-plugin-antidislink",
|
||||
"project_link": "liteyukibot-plugin-antidislink",
|
||||
"name": "防断联插件",
|
||||
"desc": "防止你的群友断联化",
|
||||
"author": "snowykami",
|
||||
"homepage": "https://github.com/snowykami/liteyukibot-plugin-antidislink",
|
||||
"tags": [
|
||||
{
|
||||
"label": "app",
|
||||
"color": "#aeeaa8"
|
||||
},
|
||||
{
|
||||
"label": "dislink",
|
||||
"color": "#d0e9ff"
|
||||
}
|
||||
],
|
||||
"is_official": true,
|
||||
"type": "application",
|
||||
"valid": true,
|
||||
"version": "rolling"
|
||||
},
|
||||
{
|
||||
"module_name": "liteyukibot-plugin-lagrange",
|
||||
"project_link": "liteyukibot-plugin-lagrange",
|
||||
"name": "LagrangePlugin",
|
||||
"desc": "在轻雪中使用lagrange-python!",
|
||||
"author": "snowykami",
|
||||
"homepage": "https://github.com/snowykami/liteyukibot-plugin-lagrange",
|
||||
"tags": [
|
||||
{
|
||||
"label": "app",
|
||||
"color": "#aeeaa8"
|
||||
},
|
||||
{
|
||||
"label": "lagrange",
|
||||
"color": "#ff89f7"
|
||||
}
|
||||
],
|
||||
"is_official": true,
|
||||
"type": "application",
|
||||
"valid": true,
|
||||
"version": "rolling"
|
||||
},
|
||||
{
|
||||
"module_name": "liteyukibot-plugin-htmlrender",
|
||||
"project_link": "liteyukibot-plugin-htmlrender",
|
||||
"name": "htmlrender",
|
||||
"desc": "使用系统中的浏览器对网页进行渲染,便于其他插件使用",
|
||||
"author": "EillesWan",
|
||||
"homepage": "https://github.com/LiteyukiStudio/liteyukibot-plugin-htmlrender",
|
||||
"tags": [
|
||||
{
|
||||
"label": "ch",
|
||||
"color": "#4285f4"
|
||||
},
|
||||
{
|
||||
"label": "ro",
|
||||
"color": "#db4437"
|
||||
},
|
||||
{
|
||||
"label": "mi",
|
||||
"color": "#f4b400"
|
||||
},
|
||||
{
|
||||
"label": "um",
|
||||
"color": "#0f9d58"
|
||||
|
||||
}
|
||||
],
|
||||
"is_official": true,
|
||||
"type": "application",
|
||||
"valid": true,
|
||||
"version": "rolling"
|
||||
}
|
||||
]
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
title: 资源商店
|
||||
order: 1
|
||||
icon: store
|
||||
index: false
|
||||
---
|
||||
|
||||
<ResStore />
|
8
docs/store/plugin.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: 插件商店
|
||||
icon: plug
|
||||
order: 2
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
<pluginStoreComp />
|
8
docs/store/resource.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: 资源商店
|
||||
icon: box
|
||||
order: 1
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
<resourceStoreComp />
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"target": "ES2022",
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"include": [
|
||||
"components/**/*.ts",
|
||||
"./.vuepress/**/*.ts",
|
||||
"./.vuepress/**/*.vue"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
|
8
docs/usage/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: 使用手册
|
||||
index: false
|
||||
icon: laptop-code
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
<Catalog />
|
@ -1,8 +1,9 @@
|
||||
---
|
||||
title: 用户协议
|
||||
icon: user-secret
|
||||
order: 3
|
||||
category: 使用手册
|
||||
---
|
||||
# 用户协议
|
||||
|
||||
1. 本项目遵循`MIT`协议,你可以自由使用,修改,分发,但是请保留原作者信息
|
||||
2. 你可以选择开启`auto_report`(默认开启),轻雪会收集以下内容
|
@ -1,6 +1,8 @@
|
||||
---
|
||||
title: 基础插件
|
||||
title: 基础命令
|
||||
icon: comment
|
||||
order: 1
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
# 基础插件
|
@ -1,9 +1,11 @@
|
||||
---
|
||||
title: 功能命令
|
||||
icon: comment
|
||||
order: 2
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
# 功能插件命令
|
||||
## 功能插件命令
|
||||
|
||||
### **轻雪天气`liteyuki_weather`**
|
||||
|
13
docs/usage/lyapi.md
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: 轻雪API
|
||||
icon: code
|
||||
order: 5
|
||||
category: 使用指南
|
||||
tag:
|
||||
- 配置
|
||||
- 部署
|
||||
---
|
||||
|
||||
## **轻雪API**
|
||||
|
||||
轻雪API是轻雪运行中部分服务的支持,由`go`语言编写,例如错误反馈,图床链接等,目前服务由轻雪服务器提供,用户无需额外部署
|
@ -1,11 +1,15 @@
|
||||
---
|
||||
title: 轻雪函数
|
||||
order: 2
|
||||
icon: code
|
||||
order: 4
|
||||
category: 使用指南
|
||||
tag:
|
||||
- 配置
|
||||
---
|
||||
|
||||
# **轻雪函数**
|
||||
## **轻雪函数**
|
||||
|
||||
轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.
|
||||
轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction.
|
||||
|
||||
### **函数文件**
|
||||
|
||||
@ -66,7 +70,3 @@ await
|
||||
|
||||
> [!warning]
|
||||
> 但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁
|
||||
|
||||
|
||||
> [!tip]
|
||||
> 编写轻雪函数推荐你使用VS Code插件[Liteyuki Function](https://github.com/LiteyukiStudio/lyfunctionTextmate)实现语法高亮
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
title: 资源包开发
|
||||
order: 1
|
||||
title: 资源包
|
||||
icon: paint-brush
|
||||
order: 3
|
||||
category: 使用手册
|
||||
---
|
||||
|
||||
# 简介
|
||||
|
||||
## 简介
|
||||
资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码
|
||||
|
||||
- [资源/主题商店](../store/resource)提供了一些资源包供你选择,你也可以自己制作资源包
|
||||
- [资源/主题商店](/store/)提供了一些资源包供你选择,你也可以自己制作资源包
|
||||
- 资源包的制作很简单,如果你接触过`Minecraft`的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
|
||||
- 部分内容制作需要一点点前端基础,例如`html`,`css`
|
||||
- 轻雪原版资源包请查看`LiteyukiBot/liteyuki/resources`,可以在此基础上进行修改
|
||||
@ -16,11 +16,8 @@ order: 1
|
||||
请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。
|
||||
|
||||
---
|
||||
|
||||
## 加载资源包
|
||||
|
||||
- 资源包通常是以`.zip`格式压缩的,只需要将其解压到根目录`resources`目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
|
||||
|
||||
```shell
|
||||
main.py
|
||||
resources
|
||||
@ -32,10 +29,8 @@ resources
|
||||
├─metadata.yml
|
||||
└─...
|
||||
```
|
||||
|
||||
- 你自己制作的资源包也应该遵循这个规则,并且应该在`metadata.yml`中填写一些信息
|
||||
- 若没有`metadata.yml`文件,则该文件夹不会被识别为资源包
|
||||
|
||||
```yaml
|
||||
name: "资源包名称"
|
||||
version: "1.0.0"
|
||||
@ -43,9 +38,5 @@ description: "资源包描述"
|
||||
# 你可以自定义一些信息,但请保证以上三个字段
|
||||
...
|
||||
```
|
||||
|
||||
- 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个`index.html`文件,B包也定义了一个`index.html`文件,那么加载B包后,A包中的`index.html`文件会被覆盖
|
||||
- 对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了`templates/index.html`,在B中定义了`templates/style.css`,可以在A的`index.html`中用`./style.css`相对路径引用B中的css
|
||||
|
||||
> [!tip]
|
||||
> 资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包
|
@ -1,71 +0,0 @@
|
||||
---
|
||||
title: 配置
|
||||
order: 2
|
||||
---
|
||||
# 配置
|
||||
|
||||
轻雪支持`yaml`、`json`和`toml`作为配置文件,取决于你个人的喜好
|
||||
|
||||
首次运行后生成`config.yml`和`config`目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改`superusers`及`nickname`字段即可
|
||||
|
||||
启动时会加载项目目录下`config.yml/yaml/json/toml`和`config`目录下的所有配置文件,你可在`config`目录下创建多个配置文件,轻雪会自动合并这些配置文件
|
||||
|
||||
## **基础配置项**
|
||||
|
||||
```yaml
|
||||
nonebot:
|
||||
# Nonebot机器人的配置,以前的最外层配置项仍可为Nonebot服务,但是部分内容会被覆盖,请尽快迁移
|
||||
command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
|
||||
host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
|
||||
port: 20216 # 绑定端口
|
||||
nickname: [ "liteyuki" ] # 机器人昵称列表
|
||||
superusers: [ "1919810" ] # 超级用户列表
|
||||
liteyuki:
|
||||
# 写在外层的配置项将会被覆盖,建议迁移到liteyuki下
|
||||
log_level: "INFO" # 日志等级
|
||||
log_icon: true # 是否显示日志等级图标(某些控制台字体不可用)
|
||||
auto_report: true # 是否自动上报问题给轻雪服务器
|
||||
auto_update: true # 是否自动更新轻雪,每天4点检查更新
|
||||
plugins: [ ] # 轻雪插件列表
|
||||
plugin_dirs: [ ] # 轻雪插件目录列表
|
||||
```
|
||||
|
||||
## **其他配置**
|
||||
|
||||
以下为默认值,如需自定义请手动添加
|
||||
|
||||
```yaml
|
||||
# 高级NoneBot配置
|
||||
nonebot:
|
||||
onebot_access_token: "" # 访问令牌,对公开放时建议设置
|
||||
default_language: "zh-CN" # 默认语言
|
||||
alconna_auto_completion: false # alconna是否自动补全指令,默认false,建议开启
|
||||
safe_mode: false # 安全模式,开启后将不会加载任何第三方NoneBot插件
|
||||
# 其他Nonebot插件的配置项
|
||||
custom_config_1: "custom_value1"
|
||||
custom_config_2: "custom_value2"
|
||||
|
||||
# 开发者选项
|
||||
liteyuki:
|
||||
allow_update: true # 是否允许更新
|
||||
debug: false # 轻雪调试,开启会自动重载Bot或者资源,其他插件自带的调试功能也将开启
|
||||
dev_mode: false # 开发者模式,开启后将会启动监视者,监视文件变化并自动重载
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
## **示例:与NoneBot对接的OneBot实现端配置**
|
||||
|
||||
生产环境中推荐反向WebSocket
|
||||
不同的实现端给出的字段可能不同,但是基本上都是一样的,这里给出一个参考值
|
||||
|
||||
| 字段 | 参考值 | 说明 |
|
||||
|-------------|------------------------------------|----------------------------------|
|
||||
| 协议 | 反向WebSocket | 推荐使用反向ws协议进行通信,即轻雪作为服务端 |
|
||||
| 地址 | ws://127.0.0.1:20216/onebot/v11/ws | 地址取决于配置文件,本机默认为`127.0.0.1:20216` |
|
||||
| AccessToken | `""` | 如果你给轻雪配置了`AccessToken`,请在此填写相同的值 |
|
||||
- 要使用其他通信方式请访问[OneBot Adapter](https://onebot.adapters.nonebot.dev/)获取详细信息
|
||||
|
||||
## **其他**
|
||||
|
||||
- 轻雪不局限于OneBot适配器,你可以使用NoneBot2支持的任何适配器或使用轻雪讯息传递插件
|
@ -1,99 +0,0 @@
|
||||
---
|
||||
title: 进程通信
|
||||
order: 4
|
||||
---
|
||||
|
||||
# **通道通信**
|
||||
|
||||
### 简介
|
||||
|
||||
轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,
|
||||
轻雪提供了一个通道[`Channel`](./api/comm/channel#class-channel-generic-t)用于跨进程通信,
|
||||
你可以通过[`Channel`](./api/comm/channel#class-channel-generic-t)发送消息给其他进程,也可以监听其他进程的消息。
|
||||
|
||||
例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。
|
||||
|
||||
### 示例
|
||||
|
||||
通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由`chan.on_receive()`装饰回调函数实现,主动模式需调用`chan.receive()`实现
|
||||
|
||||
- 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为`{process_name}-active`和`{process_name}-passive`,
|
||||
- 主进程中通过`get_channel`函数获取通道对象
|
||||
- 子进程中导入单例`active_channel`及`passive_channel`即可
|
||||
|
||||
> 在轻雪插件中(主进程中)
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
|
||||
from liteyuki.comm import get_channel, Channel
|
||||
from liteyuki import get_bot
|
||||
|
||||
# get_channel函数获取通道对象,参数为调用set_channel时的通道标识
|
||||
channel_passive = get_channel("nonebot-passive") # 获取被动通道
|
||||
channel_active = get_channel("nonebot-active") # 获取主动通道
|
||||
liteyuki_bot = get_bot()
|
||||
|
||||
|
||||
# 注册一个函数在轻雪启动后运行
|
||||
@liteyuki_bot.on_after_start
|
||||
async def send_data():
|
||||
while True:
|
||||
channel_passive.send("I am liteyuki main process passive")
|
||||
channel_active.send("I am liteyuki main process active")
|
||||
await asyncio.sleep(3) # 每3秒发送一次消息
|
||||
```
|
||||
|
||||
> 在子进程中(例如NoneBot插件中)
|
||||
|
||||
```python
|
||||
from nonebot import get_driver
|
||||
from liteyuki.comm import active_channel, passive_channel # 子进程中获取通道直接导入进程全局单例即可
|
||||
from liteyuki.log import logger
|
||||
|
||||
driver = get_driver()
|
||||
|
||||
|
||||
# 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行
|
||||
@passive_channel.on_receive(filter_func=lambda data: isinstance(data, str))
|
||||
async def on_passive_receive(data):
|
||||
logger.info(f"Passive receive: {data}")
|
||||
|
||||
|
||||
# 注册一个函数在NoneBot启动后运行
|
||||
@driver.on_startup
|
||||
def on_startup():
|
||||
while True:
|
||||
data = active_channel.receive()
|
||||
logger.info(f"Active receive: {data}")
|
||||
```
|
||||
|
||||
> 启动后控制台输出
|
||||
|
||||
```log
|
||||
0000-00-00 00:00:00 [ℹ️信息] Passive receive: I am liteyuki main process passive
|
||||
0000-00-00 00:00:00 [ℹ️信息] Active receive: I am liteyuki main process active
|
||||
0000-00-00 00:00:03 [ℹ️信息] Passive receive: I am liteyuki main process passive
|
||||
0000-00-00 00:00:03 [ℹ️信息] Active receive: I am liteyuki main process active
|
||||
...
|
||||
```
|
||||
|
||||
## **共享内存通信**
|
||||
|
||||
### 简介
|
||||
|
||||
- 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过`storage`模块实现内存共享通信,该模块封装通道实现
|
||||
- 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作
|
||||
|
||||
### 示例
|
||||
|
||||
> 在任意进程中均可使用
|
||||
|
||||
```python
|
||||
from liteyuki.comm.storage import shared_memory
|
||||
|
||||
shared_memory.set("key", "value") # 设置共享内存
|
||||
value = shared_memory.get("key") # 获取共享内存
|
||||
```
|
||||
|
||||
源代码:[liteyuki/comm/storage.py](https://github.com/LiteyukiStudio/LiteyukiBot/blob/main/liteyuki/comm/storage.py)
|
@ -1,61 +0,0 @@
|
||||
---
|
||||
title: 开发指南
|
||||
order: 0
|
||||
---
|
||||
# 开发指南
|
||||
|
||||
## 如何开发
|
||||
插件开发无需阅读本文档,请阅读[插件开发文档](./plugin)和[API 引用](./api/)。
|
||||
|
||||
如需往轻雪仓库提交代码,请阅读以下内容:
|
||||
1. 首先[fork](https://github.com/LiteyukiStudio/LiteyukiBot/fork)一份轻雪仓库到你的个人/组织账户下。
|
||||
2. 在你的仓库中进行开发。
|
||||
3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
|
||||
4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的`main`分支。
|
||||
|
||||
参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。
|
||||
出现冲突请与仓库维护者联系。
|
||||
|
||||
### 建议
|
||||
- 开发过程中可以使用`mypy`, `flake8`, `black`等工具进行代码检查和格式化。
|
||||
- 启用开发者模式,可以在`config.yml`中设置`dev_mode: true`,这样可以在控制台看到更多的调试信息。
|
||||
|
||||
## 项目结构
|
||||
- `main.py`: 机器人入口文件
|
||||
- `liteyuki`: 框架目录(liteyukibot)
|
||||
- `src`: 机器人源码目录
|
||||
- `liteyuki_plugins`: 轻雪插件目录
|
||||
- `nonebot_plugins`: Nonebot插件目录
|
||||
- `resources`: 内置资源包目录
|
||||
- `utils`: 工具目录
|
||||
- `tests`: 单元测试目录
|
||||
- `docs`: 文档目录
|
||||
- `en`: 英文文档
|
||||
- `zh`: 中文文档
|
||||
- `docker`: Docker相关内容目录
|
||||
|
||||
其中,`liteyuki`框架是包含在`LiteyukiBot`应用中的,所以此项目既是`LiteyukiBot`应用仓库,同时也是`liteyuki`框架的仓库
|
||||
|
||||
`src`目录下为应用程序部分,业务逻辑请在此目录下进行开发,`liteyuki_plugins`和`nonebot_plugins`目录下为插件目录,插件开发请在此目录下进行开发。
|
||||
|
||||
## 规范化
|
||||
- 代码请遵循[`PEP8`](https://pep8.org/)和[`Google Python Style Guide`](https://google.github.io/styleguide/pyguide.html)
|
||||
- 提交到轻雪仓库的代码,请遵循以下规范:
|
||||
- 请确保代码是可运行的,没有危害的。
|
||||
- 请确保代码的类型提示是正确的。
|
||||
- 请确保注释风格为[`Google Docstring`](https://google.github.io/styleguide/pyguide.html)或[`Liteyuki Docstring`](https://github.com/LiteyukiStudio/litedoc?tab=readme-ov-file#liteyuki-docstring)(推荐)以保证Litedoc能够正确解析并生成文档。
|
||||
- 字符串请使用双引号`"`,尽量避免使用单引号`'`,但在嵌套字符串时可以使用单引号。
|
||||
- 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
|
||||
- commit message请遵循以下规范:
|
||||
- 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
|
||||
- 我们使用gitmoji来标记commit的类型,如`:sparkles:`表示引入新功能,`:bug:`表示修复bug等,具体请参考[gitmoji](https://gitmoji.dev/)
|
||||
- commit message的格式为`<emoji> [module]: <message>`,如`:sparkles: [liteyuki.event]: add new feature`,
|
||||
其中module字段为受影响部分,例如`liteyuki.message`,`docs.en.guide.md`等,不作过多要求,但请尽量填写;message字段为简短的描述,总结来说就是你干了什么。
|
||||
- 不限制commit message的语言,有条件可以使用中英双语。
|
||||
- 文档请遵循[`Markdown`](https://www.markdownguide.org/)语法,并且支持vitepress相关内容:
|
||||
- 修订文档时,每个语言的文档都要修订。
|
||||
- 请确保文档内的链接是正确的,不要出现无法访问的死链接。
|
||||
- 请确保**用户文档**是通俗易懂的,**开发文档**是详细的。
|
||||
|
||||
## 最后
|
||||
- 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。
|
@ -1,80 +0,0 @@
|
||||
---
|
||||
title: 轻雪插件开发
|
||||
order: 3
|
||||
---
|
||||
|
||||
# 简介
|
||||
|
||||
轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能
|
||||
|
||||
## 开始
|
||||
|
||||
### 创建插件
|
||||
|
||||
一个`.py`文件或一个包含`__init__.py`的文件夹即可被识别为插件
|
||||
|
||||
首先创建一个文件夹,例如`watchdog_plugin`,并在其中创建一个`__init__.py`文件,即可创建一个插件
|
||||
|
||||
`__init__.py`
|
||||
```python
|
||||
from liteyuki.plugin import PluginMetadata, PluginType
|
||||
from .watch_dog import * # 导入逻辑部分
|
||||
|
||||
# 定义插件元数据
|
||||
__plugin_meta__ = PluginMetadata(
|
||||
name="NoneDog", # 插件名称
|
||||
version="1.0.0", # 插件版本
|
||||
description="A simple plugin for nonebot developer", # 插件描述
|
||||
type=PluginType.SERVICE # 插件类型
|
||||
)
|
||||
|
||||
# 你的插件代码
|
||||
...
|
||||
```
|
||||
|
||||
### 编写逻辑部分
|
||||
|
||||
轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信
|
||||
以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载
|
||||
`watch_dog.py`
|
||||
```python
|
||||
import os
|
||||
from liteyuki.dev import observer # 导入文件系统观察器
|
||||
from liteyuki import get_bot, logger # 导入轻雪Bot和日志
|
||||
from watchdog.events import FileSystemEvent # 导入文件系统事件
|
||||
|
||||
liteyuki = get_bot() # 获取唯一的轻雪Bot实例
|
||||
|
||||
exclude_extensions = (".pyc", ".pyo") # 排除的文件扩展名
|
||||
|
||||
|
||||
# 用observer的on_file_system_event装饰器监听文件系统事件
|
||||
@observer.on_file_system_event(
|
||||
directories=("src/nonebot_plugins",),
|
||||
event_filter=lambda event: not event.src_path.endswith(exclude_extensions) and ("__pycache__" not in event.src_path) and os.path.isfile(event.src_path)
|
||||
)
|
||||
def restart_nonebot_process(event: FileSystemEvent):
|
||||
logger.debug(f"File {event.src_path} changed, reloading nonebot...")
|
||||
liteyuki.restart_process("nonebot") # 调用重启进程方法
|
||||
```
|
||||
|
||||
### 加载插件
|
||||
|
||||
#### 方法1
|
||||
|
||||
- 在配置文件中的`liteyuki.plugins`中添加你的插件路径,例如`watchdog_plugin`,重启轻雪即可加载插件。
|
||||
|
||||
#### 方法2
|
||||
|
||||
- 使用开发工具快速运行插件,无需手动创建实例
|
||||
- 创建入口文件,例如`main.py`,并在其中写入以下代码
|
||||
|
||||
```python
|
||||
from liteyuki.dev.plugin import run_plugins
|
||||
|
||||
run_plugins("watchdog_plugin")
|
||||
```
|
||||
|
||||
然后运行`python main.py`即可启动插件
|
||||
|
||||
启用插件后,我们在src/nonebot_plugins下创建一个文件,例如`test.py`,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程
|