Compare commits
382 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7b376c940d | |||
| deb4ec9667 | |||
| ac94683da0 | |||
| 0d380cc487 | |||
| f786d18387 | |||
| 1cdce61663 | |||
| ed2ff81fdf | |||
| 3dcbb35142 | |||
| 0139716dd8 | |||
| 0deeb80bde | |||
| 62bf2476eb | |||
| 14b16c3d0e | |||
| 56a6a806b6 | |||
| 76d7784e90 | |||
| a13aed064f | |||
| 137d5725c2 | |||
| e01bb1755d | |||
| 44081dca17 | |||
| d0482804ca | |||
| cbef20febf | |||
| 5e59c9eff0 | |||
| ced0e83bc3 | |||
| 2600595820 | |||
| 944c38ad13 | |||
| fac0112a89 | |||
| 61802e0884 | |||
| 553b95d78d | |||
| 75e12d40fc | |||
| 9c0d1fedab | |||
| 1ec99b5303 | |||
| f3392837cd | |||
| 95c9e33d8c | |||
| 45c0b07bb2 | |||
| 5c96f88b8e | |||
| 7c094999be | |||
| c0bf5708d0 | |||
| 01fe4ef0e7 | |||
| 4c3e976cbb | |||
| 9cf0fc09c6 | |||
| e2eb5377f3 | |||
| ef767dae97 | |||
| f5e685627c | |||
| 53a301db83 | |||
| 02f5c55645 | |||
| b4f25a33c3 | |||
| 2bc52154b8 | |||
| 4a9ce5ce69 | |||
| 5316fcb087 | |||
| a7a3126956 | |||
| fc2c77ba7e | |||
| 2d6c611964 | |||
| 26eb0e82f0 | |||
| 5b1ea8809c | |||
| 502b2709f8 | |||
| 7efcffc78e | |||
| 610d7f67bf | |||
| 26a31ac9d3 | |||
| 01e63c21c5 | |||
| 19562d9cdc | |||
| e5514cff31 | |||
| 635effaec9 | |||
| 8931bdbebf | |||
| e61f7912a7 | |||
| 55acd5fb37 | |||
| 78fee472ad | |||
| 4475504667 | |||
| 4d9b2a4356 | |||
| 307b2d7765 | |||
| 8ea45278f9 | |||
| db887bb0e4 | |||
| 652c0288e3 | |||
| 7f706ca908 | |||
| b4028a89f6 | |||
| 09eb3b27b1 | |||
| 61544e99a8 | |||
| 584aae187b | |||
| be50309525 | |||
| 058bc9176a | |||
| 01bf5ec574 | |||
| 92d18d23ef | |||
| e218b2e3bb | |||
| a0e4670e0e | |||
| 3cb02f7489 | |||
| 736b0ad138 | |||
| a982901478 | |||
| 844a3d3a43 | |||
| 9dfbba6eb2 | |||
| e0fb7cd08c | |||
| 913b0f2f5a | |||
| 789b699f56 | |||
| 4f7dc20a93 | |||
| 5f71edb633 | |||
| 54e98cc2e6 | |||
| 8bcab0472e | |||
| 72ade6f05d | |||
| 7f4467e1a3 | |||
| 6a406625cd | |||
| 111d903b54 | |||
| 11f3959309 | |||
| fa1c9b687f | |||
| bca18b2186 | |||
| de1c62a080 | |||
| d26c1311ab | |||
| 4bb555ce20 | |||
| abea5cd28f | |||
| 9b4f706cef | |||
| 58dfdbdfc5 | |||
| 4ced64846f | |||
| 4605c58715 | |||
| bcf38395d1 | |||
| 76c553ef0f | |||
| 804ef560d0 | |||
| 30b8f46a49 | |||
| 3ca271a30b | |||
| 3005020304 | |||
| b6be0e6608 | |||
| 41486a8cb4 | |||
| cd612136bd | |||
| 5a9276b6b5 | |||
| 4c161571e2 | |||
| 948f8a2cf6 | |||
| 380fb30cdd | |||
| a652d20f6c | |||
| f124443797 | |||
| ffe159b993 | |||
| ad3639d08a | |||
| 20d72751d0 | |||
| 4764cc99e8 | |||
| 79d7d46f04 | |||
| 814b707686 | |||
| 25cac09cb8 | |||
| b008ad670b | |||
| edcd87c573 | |||
| 2339c9dc91 | |||
| 7c5c3439d3 | |||
| 821b7fd68f | |||
| 4bf8083615 | |||
| e2f64a8d7b | |||
| 41913981f8 | |||
| 2ff1d908e1 | |||
| 1bd4826e23 | |||
| 05730017ac | |||
| 52e5b08cda | |||
| ebd95485d0 | |||
| bda09d9bc1 | |||
| cd2e819901 | |||
| a89ceb072f | |||
| 0a559140ba | |||
| e4f0d9224b | |||
| fe7d79d660 | |||
| 845d043c0b | |||
| e50956b8d5 | |||
| 24a5cc5d05 | |||
| 98bfcdd627 | |||
| 26d3fcfe9f | |||
| 4bcd2a52e4 | |||
| 7453bc34d9 | |||
| a1158102b8 | |||
| 3565ecf336 | |||
| 0c567a2558 | |||
| bb6c2de84a | |||
| 0cc7fafe7d | |||
| a3d28c745f | |||
| d9dd1c21dd | |||
| 7c2df0e6e9 | |||
| 157966013e | |||
| 8353cc3466 | |||
| 7e39fc7153 | |||
| bfdab301e7 | |||
| a227080605 | |||
| b529d2eb43 | |||
| 7375e17579 | |||
| 862546f491 | |||
| 2b7420d8f7 | |||
| 282e3bc01c | |||
| 153a56df85 | |||
| b6e85567ce | |||
| 14d6f48568 | |||
| 0953af8d15 | |||
| fa2905b7e5 | |||
| 4855b79d7a | |||
| b015adf0fd | |||
| 9a2e1473ed | |||
| 36c5063974 | |||
| d61df42813 | |||
| 70b462859d | |||
| 58a8fcf43a | |||
| 3f80ee1f36 | |||
| 3236667029 | |||
| e92279ac6c | |||
| 728225d8b8 | |||
| 607dda7270 | |||
| 64048f12b4 | |||
| b2baa9529f | |||
| 44a462269f | |||
| db93373251 | |||
| 88450095ff | |||
| 23f897ddf1 | |||
| 93256a3128 | |||
| b3663cef07 | |||
| 4028ef190b | |||
| 63abca2afc | |||
| 2d8df7bfaa | |||
| d664365a6f | |||
| 951b96a0ba | |||
| b8d26c28cc | |||
| deab76704f | |||
| 006db0628e | |||
| f8c3590eb1 | |||
| 4713912b08 | |||
| 4dea1773ba | |||
| f34e534dde | |||
| 9dfd073308 | |||
| d988be9bb4 | |||
| 11e35dbaf9 | |||
| d3b3a99b23 | |||
| 6cbd9c42ad | |||
| 8a013059a1 | |||
| c89e3d77b2 | |||
| d85100dc25 | |||
| cb9a65c21b | |||
| 8d2c09f97e | |||
| 3d7a59413d | |||
| ce0b016142 | |||
| 0b3304ac31 | |||
| 273eef025a | |||
| d2f9b89641 | |||
| 556a483703 | |||
| 5ee94275f3 | |||
| 95a8537da5 | |||
| ebfd4475d2 | |||
| 9d236aef6e | |||
| 16b315fa33 | |||
| e00d9b17c2 | |||
| 18502e2bcb | |||
| 978d4fb8e8 | |||
| e524a1e382 | |||
| 9544099e8b | |||
| d5531b3b75 | |||
| ae391b06a0 | |||
| 3d9f02bc56 | |||
| 246cfe6689 | |||
| 6d1f578624 | |||
| 1f18315e9b | |||
| e555def4f4 | |||
| 74cec4ef03 | |||
| ec7cdbfc46 | |||
| e3b9734434 | |||
| 3e1b851c87 | |||
| 514e410738 | |||
| 2ce44b5518 | |||
| df13b88881 | |||
| 08657015fc | |||
| 8764dd6a50 | |||
| 279b153471 | |||
| ac11e2e2b8 | |||
| 131bcffa2c | |||
| 0c152e0cb7 | |||
| 43e4c792c1 | |||
| b48edc79c8 | |||
| 0d373210af | |||
| 16d56641b5 | |||
| 2d41e5acf9 | |||
| 2d656f3169 | |||
| 75e378b658 | |||
| d92f73d276 | |||
| 6e42f5c9e7 | |||
| 8e6106baa4 | |||
| 8ce0f5a3f8 | |||
| fc5e58b8d7 | |||
| 32399fbc0f | |||
| 226a695a78 | |||
| 0ae752f807 | |||
| 96cc6cadb2 | |||
| 19c0da81bf | |||
| 589829afee | |||
| 486cda9590 | |||
| f03bff5a7a | |||
| f1a73b3e1b | |||
| c34f552b54 | |||
| 3feb2026c3 | |||
| 2a892acaba | |||
| 8a56924e58 | |||
| ffa02c89f3 | |||
| e2c351208d | |||
| 9413ddd720 | |||
| b59f7c1712 | |||
| 6ec7a49006 | |||
| 64aca2946a | |||
| a313ed26f4 | |||
| abb6280c9c | |||
| 8da7873fb4 | |||
| f7e42ec7cb | |||
| b7a95a24da | |||
| 60ab299739 | |||
| 3b423a61d7 | |||
| 63e29af11e | |||
| 4263ed7f2a | |||
| 0bac6595f9 | |||
| 0b8eed7c34 | |||
| eecc2e60f8 | |||
| aca9e47b0e | |||
| d808649631 | |||
| 615ea4f89c | |||
| 30698005c1 | |||
| dc37df60ec | |||
| 6f8ad69b8d | |||
| 8fce830ac6 | |||
| 06a649de18 | |||
| 0bb3d154f7 | |||
| 68f252fac0 | |||
| 1f5ab42ed6 | |||
| 1c09d017da | |||
| f9c79969a7 | |||
| 693e54b016 | |||
| 1bcd472bfe | |||
| bf0f13ea4f | |||
| 388ab23d69 | |||
| b3533ea03c | |||
| 19ec845ee8 | |||
| f23ba2715d | |||
| 399ca2b110 | |||
| fa42917ccd | |||
| 7c1ddb81d4 | |||
| e990496569 | |||
| 9aa464d611 | |||
| 970b7c52e1 | |||
| 0d0e20423f | |||
| 735da2ef3c | |||
| d84d73f8c4 | |||
| e495034967 | |||
| 7919cecc1b | |||
| 8a71882b42 | |||
| 4122622d45 | |||
| 837ff49af5 | |||
| 2d1256c1ce | |||
| c16689c7c3 | |||
| bf128beaef | |||
| aa25bfef3e | |||
| 8ae64834c6 | |||
| 58ce0ee6f0 | |||
| 86d7e7a353 | |||
| b601270aab | |||
| f2f6bf8492 | |||
| 806fba9f24 | |||
| 75f91a6c34 | |||
| 20532ffdd2 | |||
| 9bb31894a6 | |||
| 220b350ec5 | |||
| 22fa5170e6 | |||
| 4b1ca18de5 | |||
| 79449ec284 | |||
| c95d498a59 | |||
| bac6c660d3 | |||
| dea0ec8f9c | |||
| 48dc52fef6 | |||
| 40f18bbf09 | |||
| f9d37d3562 | |||
| 1774ebf6e0 | |||
| a05d93b712 | |||
| acdc886984 | |||
| 839f176411 | |||
| 079e73aa27 | |||
| aafc6d5d2c | |||
| 1a3390bfcf | |||
| 6bdea06934 | |||
| f1f15b99eb | |||
| 38ccb25afc | |||
| ec85593d87 | |||
| 84dcc061b7 | |||
| 97f01d511d | |||
| 24c16e0060 | |||
| 3ab70c390e | |||
| ecff6ad825 | |||
| fd0749cd3a | |||
| e77239f9b9 | |||
| 907dbfa23e | |||
| 09c1a13ea6 | |||
| 0ca25ee261 | |||
| 69732ffdc6 | |||
| 8965f595f3 | |||
| f53e2b5890 |
@@ -1,12 +0,0 @@
|
||||
# idea
|
||||
plugin/
|
||||
|
||||
# config
|
||||
config.yml
|
||||
|
||||
# external plugins
|
||||
/plugins/
|
||||
|
||||
# pyc/pyo
|
||||
**/*.pyc
|
||||
**/*.pyo
|
||||
@@ -1,80 +0,0 @@
|
||||
<div align="center">
|
||||
<img src="https://ks.liteyuki.icu:809/static/img/liteyuki_icon.png" style="width: 30%; margin-top:10%;" alt="a">
|
||||
</div>
|
||||
<div align=center>
|
||||
<h2>
|
||||
<font color="#d0e9ff">
|
||||
轻雪
|
||||
</font>
|
||||
<font color="#a2d8f4">
|
||||
6.0
|
||||
</font>
|
||||
</h2>
|
||||
</div>
|
||||
<div align=center><h4>轻量,高效,易于扩展</h4></div>
|
||||
|
||||
- 基于[Nonebot2]("https://github.com/nonebot/nonebot2"),有良好的生态支持
|
||||
- 集成了上一代轻雪的优点和~~缺点~~
|
||||
- 支持一切Onebot标准通信,后续会支持更多的平台
|
||||
|
||||
## 手动安装和部署
|
||||
|
||||
1. 安装`Git`和`Python3.10+`后,使用命令`git clone https://github.com/snowykami/LiteyukiBot` 克隆项目至本地。
|
||||
一定要安装Git,Bot自带功能需要git支持
|
||||
2. 切换到轻雪目录,使用`pip install -r requirements.txt`安装依赖
|
||||
|
||||
3. `python main.py`启动!
|
||||
|
||||
## 一键部署脚本(复制到本地保存执行)
|
||||
|
||||
#### 提前部署好`Python3.10+`环境和`Git`环境
|
||||
|
||||
#### Windows
|
||||
|
||||
```bash
|
||||
chcp 65001
|
||||
git clone https://github.com/snowykami/LiteyukiBot
|
||||
cd LiteyukiBot
|
||||
pip install -r requirements.txt
|
||||
echo python3 main.py > start.bat
|
||||
echo Install finished! Please run start.bat to start the bot!
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```bash
|
||||
git clone https://github.com/snowykami/LiteyukiBot
|
||||
cd LiteyukiBot
|
||||
pip install -r requirements.txt
|
||||
echo python3 main.py > start.sh
|
||||
chmod +x start.sh
|
||||
echo Install finished! Please run start.sh to start the bot!
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 尽可能不要去动配置文件,通过与bot交互进行配置即可,若仍然想自定义配置请在`config.yml`中修改
|
||||
|
||||
- 首次启动会提醒用户注册超级用户
|
||||
|
||||
- Bot会自动检测新版本,若出现新版本,可用`git pull`命令更新
|
||||
|
||||
### Onebot实现端配置
|
||||
|
||||
| 字段 | 参考值 | 说明 |
|
||||
|----|-------------------------------|-------------------------|
|
||||
| 协议 | 反向WebSocket | 轻雪使用反向ws协议进行通信,即轻雪作为服务端 |
|
||||
| 地址 | ws://`host`:`port`/onebot/v11 | 地址取决于配置文件,默认为`20216`端口 |
|
||||
|
||||
### 推荐方案
|
||||
1. 使用`Lagrange.Core`,`Lagrange.Core`支持多种协议
|
||||
2. 云崽的`icqq-plugin`和`ws-plugin`进行通信
|
||||
3. `Go-cqhttp`(目前已经半死不活了)
|
||||
4. 人工实现的`Onebot`协议,自己整一个WebSocket客户端,看着QQ的消息,然后给轻雪传输数据
|
||||
|
||||
请先自行查阅文档,若有困难请联系相关开发者而不是Liteyuki的开发者
|
||||
## 鸣谢
|
||||
|
||||
- html转图片使用的[kexue-z](https://github.com/kexue-z)的[nonebot-plugin-htmlrender](https://github.com/kexue-z/nonebot-plugin-htmlrender)插件的部分代码
|
||||
- 重启方案用的[18870](https://github.com/18870)的[Nonebot-plugin-reboot](https://github.com/18870/nonebot-plugin-reboot)插件的部分代码
|
||||
- Lagrange.Core的测试环境支持
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as e,c as o,b as n}from"./app-BvUYPzLF.js";const a={},r=n("p",null,"404 Not Found",-1),s=[r];function c(p,i){return e(),o("div",null,s)}const d=t(a,[["render",c],["__file","404.html.vue"]]),m=JSON.parse('{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound","description":"404 Not Found","head":[["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/404.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:description","content":"404 Not Found"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\",\\"description\\":\\"404 Not Found\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0.01,"words":3},"filePathRelative":null,"autoDesc":true}');export{d as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as o,e as r}from"./app-BvUYPzLF.js";const a={},n=r("<ol><li>本项目遵循<code>MIT</code>协议,你可以自由使用,修改,分发,但是请保留原作者信息</li><li>你可以选择开启<code>auto_report</code>(默认开启),轻雪会收集以下内容 <ul><li>运行环境的设备信息:CPU,内存,系统信息及Python信息</li><li>插件信息(不含插件数据)</li><li>部分异常信息,</li><li>会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把<code>auto_report</code>设定为<code>false</code></li></ul></li><li>本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性</li><li>使用此项目代表你已经同意以上协议</li></ol>",1),i=[n];function l(c,s){return t(),o("div",null,i)}const p=e(a,[["render",l],["__file","agreement.html.vue"]]),d=JSON.parse('{"path":"/en/usage/agreement.html","title":"User Agreement","lang":"en-US","frontmatter":{"title":"User Agreement","icon":"user-secret","order":3,"category":"usage","description":"本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息 你可以选择开启auto_report(默认开启),轻雪会收集以下内容 运行环境的设备信息:CPU,内存,系统信息及Python信息 插件信息(不含插件数据) 部分异常信息, 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/agreement.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/agreement.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"User Agreement"}],["meta",{"property":"og:description","content":"本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息 你可以选择开启auto_report(默认开启),轻雪会收集以下内容 运行环境的设备信息:CPU,内存,系统信息及Python信息 插件信息(不含插件数据) 部分异常信息, 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"User Agreement\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723829277000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.74,"words":222},"filePathRelative":"en/usage/agreement.md","localizedDate":"August 16, 2024","autoDesc":true}');export{p as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as o,e as a}from"./app-BvUYPzLF.js";const r={},i=a("<ol><li>本项目遵循<code>MIT</code>协议,你可以自由使用,修改,分发,但是请保留原作者信息</li><li>你可以选择开启<code>auto_report</code>(默认开启),轻雪会收集以下内容 <ul><li>运行环境的设备信息:CPU,内存,系统信息及Python信息</li><li>插件信息(不含插件数据)</li><li>部分异常信息,</li><li>会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把<code>auto_report</code>设定为<code>false</code></li></ul></li><li>本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性</li><li>使用此项目代表你已经同意以上协议</li></ol>",1),n=[i];function l(c,m){return t(),o("div",null,n)}const s=e(r,[["render",l],["__file","agreement.html.vue"]]),d=JSON.parse('{"path":"/usage/agreement.html","title":"用户协议","lang":"zh-CN","frontmatter":{"title":"用户协议","icon":"user-secret","order":3,"category":"使用手册","description":"本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息 你可以选择开启auto_report(默认开启),轻雪会收集以下内容 运行环境的设备信息:CPU,内存,系统信息及Python信息 插件信息(不含插件数据) 部分异常信息, 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/agreement.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/agreement.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"用户协议"}],["meta",{"property":"og:description","content":"本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息 你可以选择开启auto_report(默认开启),轻雪会收集以下内容 运行环境的设备信息:CPU,内存,系统信息及Python信息 插件信息(不含插件数据) 部分异常信息, 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-07-20T16:40:55.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-20T16:40:55.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"用户协议\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-07-20T16:40:55.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1711621856000,"updatedTime":1721493655000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":3},{"name":"Nanaloveyuki","email":"miaomiao_159@outlook.com","commits":1}]},"readingTime":{"minutes":0.76,"words":227},"filePathRelative":"usage/agreement.md","localizedDate":"2024年3月28日","autoDesc":true}');export{s as comp,d as data};
|
||||
@@ -0,0 +1,212 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},p=t(`<h1 id="liteyuki-comm-channel" tabindex="-1"><a class="header-anchor" href="#liteyuki-comm-channel"><span>liteyuki.comm.channel</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm</p><p>本模块定义了一个通用的通道类,用于进程间通信</p><h3 id="class-channel-generic-t" tabindex="-1"><a class="header-anchor" href="#class-channel-generic-t"><span><em><strong>class</strong></em> <code>Channel(Generic[T])</code></span></a></h3><h4 id="def-init-self-name-str-type-check-optional-bool-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-name-str-type-check-optional-bool-none"><span><em><strong>def</strong></em> <code>__init__(self, name: str, type_check: Optional[bool] = None)</code></span></a></h4><p><strong>说明</strong>: 初始化通道</p><p><strong>参数</strong>:</p><blockquote><ul><li>name: 通道ID</li><li>type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L41" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> type_check<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">bool</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化通道
|
||||
Args:
|
||||
name: 通道ID
|
||||
type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
|
||||
"""</span>
|
||||
<span class="token punctuation">(</span>self<span class="token punctuation">.</span>conn_send<span class="token punctuation">,</span> self<span class="token punctuation">.</span>conn_recv<span class="token punctuation">)</span> <span class="token operator">=</span> Pipe<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_conn_send_inner<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_conn_recv_inner<span class="token punctuation">)</span> <span class="token operator">=</span> Pipe<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>_closed <span class="token operator">=</span> <span class="token boolean">False</span>
|
||||
self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">=</span> name
|
||||
self<span class="token punctuation">.</span>is_receive_loop_running <span class="token operator">=</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">if</span> type_check <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
type_check <span class="token operator">=</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span>
|
||||
<span class="token keyword">elif</span> type_check<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string">'Type hint is required for enforcing type check.'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>type_check <span class="token operator">=</span> type_check
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
_channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> self
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> initialized in main process'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> initialized in sub process, should manually set in main process'</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-get-generic-type-self-optional-type" tabindex="-1"><a class="header-anchor" href="#def-get-generic-type-self-optional-type"><span><em><strong>def</strong></em> <code>_get_generic_type(self) -> Optional[type]</code></span></a></h4><p><strong>说明</strong>: 获取通道传递泛型类型</p><p><strong>返回</strong>: Optional[type]: 泛型类型</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L77" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_get_generic_type</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Optional<span class="token punctuation">[</span><span class="token builtin">type</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道传递泛型类型
|
||||
|
||||
Returns:
|
||||
Optional[type]: 泛型类型
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">hasattr</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token string">'__orig_class__'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> get_args<span class="token punctuation">(</span>self<span class="token punctuation">.</span>__orig_class__<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">None</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-validate-structure-self-data-any-structure-type-bool" tabindex="-1"><a class="header-anchor" href="#def-validate-structure-self-data-any-structure-type-bool"><span><em><strong>def</strong></em> <code>_validate_structure(self, data: Any, structure: type) -> bool</code></span></a></h4><p><strong>说明</strong>: 验证数据结构</p><p><strong>参数</strong>:</p><blockquote><ul><li>data: 数据</li><li>structure: 结构</li></ul></blockquote><p><strong>返回</strong>: bool: 是否通过验证</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L88" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_validate_structure</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> Any<span class="token punctuation">,</span> structure<span class="token punctuation">:</span> <span class="token builtin">type</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
验证数据结构
|
||||
Args:
|
||||
data: 数据
|
||||
structure: 结构
|
||||
|
||||
Returns:
|
||||
bool: 是否通过验证
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> structure<span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">)</span> <span class="token keyword">or</span> <span class="token builtin">len</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>structure<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>d<span class="token punctuation">,</span> s<span class="token punctuation">)</span> <span class="token keyword">for</span> <span class="token punctuation">(</span>d<span class="token punctuation">,</span> s<span class="token punctuation">)</span> <span class="token keyword">in</span> <span class="token builtin">zip</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> structure<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>d<span class="token punctuation">,</span> structure<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> d <span class="token keyword">in</span> data<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>k <span class="token keyword">in</span> data <span class="token keyword">and</span> self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>data<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">,</span> structure<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> k <span class="token keyword">in</span> structure<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-send-self-data-t" tabindex="-1"><a class="header-anchor" href="#def-send-self-data-t"><span><em><strong>def</strong></em> <code>send(self, data: T)</code></span></a></h4><p><strong>说明</strong>: 发送数据,发送函数为同步函数,没有异步的必要</p><p><strong>参数</strong>:</p><blockquote><ul><li>data: 数据</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L117" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">send</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> T<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
发送数据,发送函数为同步函数,没有异步的必要
|
||||
Args:
|
||||
data: 数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>type_check<span class="token punctuation">:</span>
|
||||
_type <span class="token operator">=</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> _type <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token keyword">not</span> self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>data<span class="token punctuation">,</span> _type<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Data must be an instance of </span><span class="token interpolation"><span class="token punctuation">{</span>_type<span class="token punctuation">}</span></span><span class="token string">, </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">type</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string"> found'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Cannot send to a closed channel_'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>conn_send<span class="token punctuation">.</span>send<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-receive-self-t" tabindex="-1"><a class="header-anchor" href="#def-receive-self-t"><span><em><strong>def</strong></em> <code>receive(self) -> T</code></span></a></h4><p><strong>说明</strong>: 同步接收数据,会阻塞线程</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L132" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">receive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> T<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
同步接收数据,会阻塞线程
|
||||
Args:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Cannot receive from a closed channel_'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> self<span class="token punctuation">.</span>conn_recv<span class="token punctuation">.</span>recv<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-async-receive-self-t" tabindex="-1"><a class="header-anchor" href="#async-def-async-receive-self-t"><span><em><strong>async def</strong></em> <code>async_receive(self) -> T</code></span></a></h4><p><strong>说明</strong>: 异步接收数据,会挂起等待</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L144" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">async_receive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> T<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
异步接收数据,会挂起等待
|
||||
"""</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'等待接收数据'</span><span class="token punctuation">)</span>
|
||||
loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>get_running_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> loop<span class="token punctuation">.</span>run_in_executor<span class="token punctuation">(</span><span class="token boolean">None</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>receive<span class="token punctuation">)</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'接收到数据'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any" tabindex="-1"><a class="header-anchor" href="#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any"><span><em><strong>def</strong></em> <code>on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]</code></span></a></h4><p><strong>说明</strong>: 接收数据并执行函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>filter_func: 过滤函数,为None则不过滤</li></ul></blockquote><p><strong>返回</strong>: 装饰器,装饰一个函数在接收到数据后执行</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L154" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_receive</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> filter_func<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span>FILTER_FUNC<span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
接收数据并执行函数
|
||||
Args:
|
||||
filter_func: 过滤函数,为None则不过滤
|
||||
Returns:
|
||||
装饰器,装饰一个函数在接收到数据后执行
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'on_receive can only be used in main process'</span><span class="token punctuation">)</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">decorator</span><span class="token punctuation">(</span>func<span class="token punctuation">:</span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">global</span> _func_id
|
||||
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">wrapper</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> T<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> filter_func <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>filter_func<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token keyword">await</span> filter_func<span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> filter_func<span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>func<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token keyword">await</span> func<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> func<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
_callback_funcs<span class="token punctuation">[</span>_func_id<span class="token punctuation">]</span> <span class="token operator">=</span> wrapper
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">.</span>append<span class="token punctuation">(</span>_func_id<span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">.</span>append<span class="token punctuation">(</span>_func_id<span class="token punctuation">)</span>
|
||||
_func_id <span class="token operator">+=</span> <span class="token number">1</span>
|
||||
<span class="token keyword">return</span> func
|
||||
<span class="token keyword">return</span> decorator
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-on-receive-funcs-self-data-any" tabindex="-1"><a class="header-anchor" href="#async-def-run-on-receive-funcs-self-data-any"><span><em><strong>async def</strong></em> <code>_run_on_receive_funcs(self, data: Any)</code></span></a></h4><p><strong>说明</strong>: 运行接收函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>data: 数据</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L192" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run_on_receive_funcs</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> Any<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
运行接收函数
|
||||
Args:
|
||||
data: 数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>_callback_funcs<span class="token punctuation">[</span>func_id<span class="token punctuation">]</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> func_id <span class="token keyword">in</span> self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">]</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>_callback_funcs<span class="token punctuation">[</span>func_id<span class="token punctuation">]</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> func_id <span class="token keyword">in</span> self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-start-receive-loop-self" tabindex="-1"><a class="header-anchor" href="#async-def-start-receive-loop-self"><span><em><strong>async def</strong></em> <code>start_receive_loop(self)</code></span></a></h4><p><strong>说明</strong>: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L203" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">start_receive_loop</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
开始接收数据
|
||||
会自动判断主进程和子进程,需要在对应进程都调度一次
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'No on_receive function registered for </span><span class="token interpolation"><span class="token punctuation">{</span>self<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span>
|
||||
self<span class="token punctuation">.</span>is_receive_loop_running <span class="token operator">=</span> <span class="token boolean">True</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Starting receive loop for </span><span class="token interpolation"><span class="token punctuation">{</span>self<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token keyword">not</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> self<span class="token punctuation">.</span>async_receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>_run_on_receive_funcs<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="var-active-channel" tabindex="-1"><a class="header-anchor" href="#var-active-channel"><span>var <code>active_channel</code></span></a></h3><ul><li><p><strong>说明</strong>: 子进程可用的主动和被动通道</p></li><li><p><strong>类型</strong>: <code>Channel</code></p></li><li><p><strong>默认值</strong>: <code>Channel(name='active_channel')</code></p></li></ul><h3 id="var-publish-channel" tabindex="-1"><a class="header-anchor" href="#var-publish-channel"><span>var <code>publish_channel</code></span></a></h3><ul><li><p><strong>说明</strong>: 通道传递通道,主进程创建单例,子进程初始化时实例化</p></li><li><p><strong>类型</strong>: <code>Channel[tuple[str, dict[str, Any]]]</code></p></li><li><p><strong>默认值</strong>: <code>Channel(name='publish_channel')</code></p></li></ul><h3 id="var-channel-deliver-active-channel" tabindex="-1"><a class="header-anchor" href="#var-channel-deliver-active-channel"><span>var <code>channel_deliver_active_channel</code></span></a></h3><ul><li><p><strong>说明</strong>: 通道传递通道,主进程创建单例,子进程初始化时实例化</p></li><li><p><strong>类型</strong>: <code>Channel[Channel[Any]]</code></p></li><li><p><strong>默认值</strong>: <code>NO_DEFAULT</code></p></li></ul><h3 id="def-set-channel-name-str-channel-channel" tabindex="-1"><a class="header-anchor" href="#def-set-channel-name-str-channel-channel"><span><em><strong>def</strong></em> <code>set_channel(name: str, channel: Channel)</code></span></a></h3><p><strong>说明</strong>: 设置通道实例</p><p><strong>参数</strong>:</p><blockquote><ul><li>name: 通道名称</li><li>channel: 通道实例</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L250" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">set_channel</span><span class="token punctuation">(</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> channel<span class="token punctuation">:</span> <span class="token string">'Channel'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置通道实例
|
||||
Args:
|
||||
name: 通道名称
|
||||
channel: 通道实例
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>channel<span class="token punctuation">,</span> Channel<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'channel_ must be an instance of Channel, </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">type</span><span class="token punctuation">(</span>channel<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string"> found'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
_channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> channel
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'set_channel'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> name<span class="token punctuation">,</span> <span class="token string">'channel_'</span><span class="token punctuation">:</span> channel<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-set-channels-channels-dict-str-channel" tabindex="-1"><a class="header-anchor" href="#def-set-channels-channels-dict-str-channel"><span><em><strong>def</strong></em> <code>set_channels(channels: dict[str, Channel])</code></span></a></h3><p><strong>说明</strong>: 设置通道实例</p><p><strong>参数</strong>:</p><blockquote><ul><li>channels: 通道名称</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L276" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">set_channels</span><span class="token punctuation">(</span>channels<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token string">'Channel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置通道实例
|
||||
Args:
|
||||
channels: 通道名称
|
||||
"""</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span> <span class="token keyword">in</span> channels<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
set_channel<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-channel-name-str-channel" tabindex="-1"><a class="header-anchor" href="#def-get-channel-name-str-channel"><span><em><strong>def</strong></em> <code>get_channel(name: str) -> Channel</code></span></a></h3><p><strong>说明</strong>: 获取通道实例</p><p><strong>参数</strong>:</p><blockquote><ul><li>name: 通道名称</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L286" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_channel</span><span class="token punctuation">(</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token string">'Channel'</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道实例
|
||||
Args:
|
||||
name: 通道名称
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> _channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> Channel<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token string">'recv_chan'</span><span class="token punctuation">)</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'get_channel'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> name<span class="token punctuation">,</span> <span class="token string">'recv_chan'</span><span class="token punctuation">:</span> recv_chan<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> recv_chan<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-channels-dict-str-channel" tabindex="-1"><a class="header-anchor" href="#def-get-channels-dict-str-channel"><span><em><strong>def</strong></em> <code>get_channels() -> dict[str, Channel]</code></span></a></h3><p><strong>说明</strong>: 获取通道实例</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L310" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_channels</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token string">'Channel'</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道实例
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> _channel
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> Channel<span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token string">'recv_chan'</span><span class="token punctuation">)</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'get_channels'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'recv_chan'</span><span class="token punctuation">:</span> recv_chan<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> recv_chan<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')</code></p><h3 id="def-on-set-channel-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-set-channel-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_set_channel(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L233" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'set_channel'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_set_channel</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'channel_'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
set_channel<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')</code></p><h3 id="def-on-get-channel-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-get-channel-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_get_channel(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L239" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'get_channel'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_get_channel</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">(</span>name<span class="token punctuation">,</span> recv_chan<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'recv_chan'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
recv_chan<span class="token punctuation">.</span>send<span class="token punctuation">(</span>get_channel<span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')</code></p><h3 id="def-on-get-channels-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-get-channels-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_get_channels(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L245" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'get_channels'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_get_channels</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'recv_chan'</span><span class="token punctuation">]</span>
|
||||
recv_chan<span class="token punctuation">.</span>send<span class="token punctuation">(</span>get_channels<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,78),o=[p];function c(l,i){return s(),a("div",null,o)}const r=n(e,[["render",c],["__file","channel.html.vue"]]),d=JSON.parse('{"path":"/dev/api/comm/channel.html","title":"liteyuki.comm.channel","lang":"zh-CN","frontmatter":{"title":"liteyuki.comm.channel","lastUpdated":false,"description":"liteyuki.comm.channel 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channe...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/channel.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/channel.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.comm.channel"}],["meta",{"property":"og:description","content":"liteyuki.comm.channel 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channe..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm.channel\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Channel(Generic[T])","slug":"class-channel-generic-t","link":"#class-channel-generic-t","children":[]},{"level":3,"title":"var active_channel","slug":"var-active-channel","link":"#var-active-channel","children":[]},{"level":3,"title":"var publish_channel","slug":"var-publish-channel","link":"#var-publish-channel","children":[]},{"level":3,"title":"var channel_deliver_active_channel","slug":"var-channel-deliver-active-channel","link":"#var-channel-deliver-active-channel","children":[]},{"level":3,"title":"def set_channel(name: str, channel: Channel)","slug":"def-set-channel-name-str-channel-channel","link":"#def-set-channel-name-str-channel-channel","children":[]},{"level":3,"title":"def set_channels(channels: dict[str, Channel])","slug":"def-set-channels-channels-dict-str-channel","link":"#def-set-channels-channels-dict-str-channel","children":[]},{"level":3,"title":"def get_channel(name: str) -> Channel","slug":"def-get-channel-name-str-channel","link":"#def-get-channel-name-str-channel","children":[]},{"level":3,"title":"def get_channels() -> dict[str, Channel]","slug":"def-get-channels-dict-str-channel","link":"#def-get-channels-dict-str-channel","children":[]},{"level":3,"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","slug":"def-on-set-channel-data-tuple-str-dict-str-any","link":"#def-on-set-channel-data-tuple-str-dict-str-any","children":[]},{"level":3,"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","slug":"def-on-get-channel-data-tuple-str-dict-str-any","link":"#def-on-get-channel-data-tuple-str-dict-str-any","children":[]},{"level":3,"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","slug":"def-on-get-channels-data-tuple-str-dict-str-any","link":"#def-on-get-channels-data-tuple-str-dict-str-any","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":7}]},"readingTime":{"minutes":6.13,"words":1839},"filePathRelative":"dev/api/comm/channel.md","localizedDate":"2024年8月19日","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,212 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},p=t(`<h1 id="liteyuki-comm-channel" tabindex="-1"><a class="header-anchor" href="#liteyuki-comm-channel"><span>liteyuki.comm.channel</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm</p><p>本模块定义了一个通用的通道类,用于进程间通信</p><h3 id="class-channel-generic-t" tabindex="-1"><a class="header-anchor" href="#class-channel-generic-t"><span><em><strong>class</strong></em> <code>Channel(Generic[T])</code></span></a></h3><h4 id="def-init-self-name-str-type-check-optional-bool-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-name-str-type-check-optional-bool-none"><span><em><strong>def</strong></em> <code>__init__(self, name: str, type_check: Optional[bool] = None)</code></span></a></h4><p><strong>Description</strong>: 初始化通道</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 通道ID</li><li>type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L41" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> type_check<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">bool</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化通道
|
||||
Args:
|
||||
name: 通道ID
|
||||
type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
|
||||
"""</span>
|
||||
<span class="token punctuation">(</span>self<span class="token punctuation">.</span>conn_send<span class="token punctuation">,</span> self<span class="token punctuation">.</span>conn_recv<span class="token punctuation">)</span> <span class="token operator">=</span> Pipe<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_conn_send_inner<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_conn_recv_inner<span class="token punctuation">)</span> <span class="token operator">=</span> Pipe<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>_closed <span class="token operator">=</span> <span class="token boolean">False</span>
|
||||
self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">=</span> name
|
||||
self<span class="token punctuation">.</span>is_receive_loop_running <span class="token operator">=</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">if</span> type_check <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
type_check <span class="token operator">=</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span>
|
||||
<span class="token keyword">elif</span> type_check<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string">'Type hint is required for enforcing type check.'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>type_check <span class="token operator">=</span> type_check
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
_channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> self
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> initialized in main process'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> initialized in sub process, should manually set in main process'</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-get-generic-type-self-optional-type" tabindex="-1"><a class="header-anchor" href="#def-get-generic-type-self-optional-type"><span><em><strong>def</strong></em> <code>_get_generic_type(self) -> Optional[type]</code></span></a></h4><p><strong>Description</strong>: 获取通道传递泛型类型</p><p><strong>Return</strong>: Optional[type]: 泛型类型</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L77" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_get_generic_type</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Optional<span class="token punctuation">[</span><span class="token builtin">type</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道传递泛型类型
|
||||
|
||||
Returns:
|
||||
Optional[type]: 泛型类型
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">hasattr</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token string">'__orig_class__'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> get_args<span class="token punctuation">(</span>self<span class="token punctuation">.</span>__orig_class__<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">None</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-validate-structure-self-data-any-structure-type-bool" tabindex="-1"><a class="header-anchor" href="#def-validate-structure-self-data-any-structure-type-bool"><span><em><strong>def</strong></em> <code>_validate_structure(self, data: Any, structure: type) -> bool</code></span></a></h4><p><strong>Description</strong>: 验证数据结构</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>data: 数据</li><li>structure: 结构</li></ul></blockquote><p><strong>Return</strong>: bool: 是否通过验证</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L88" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_validate_structure</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> Any<span class="token punctuation">,</span> structure<span class="token punctuation">:</span> <span class="token builtin">type</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
验证数据结构
|
||||
Args:
|
||||
data: 数据
|
||||
structure: 结构
|
||||
|
||||
Returns:
|
||||
bool: 是否通过验证
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> structure<span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">)</span> <span class="token keyword">or</span> <span class="token builtin">len</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>structure<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>d<span class="token punctuation">,</span> s<span class="token punctuation">)</span> <span class="token keyword">for</span> <span class="token punctuation">(</span>d<span class="token punctuation">,</span> s<span class="token punctuation">)</span> <span class="token keyword">in</span> <span class="token builtin">zip</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> structure<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>d<span class="token punctuation">,</span> structure<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> d <span class="token keyword">in</span> data<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>structure<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token punctuation">(</span>k <span class="token keyword">in</span> data <span class="token keyword">and</span> self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>data<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">,</span> structure<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> k <span class="token keyword">in</span> structure<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">False</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-send-self-data-t" tabindex="-1"><a class="header-anchor" href="#def-send-self-data-t"><span><em><strong>def</strong></em> <code>send(self, data: T)</code></span></a></h4><p><strong>Description</strong>: 发送数据,发送函数为同步函数,没有异步的必要</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>data: 数据</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L117" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">send</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> T<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
发送数据,发送函数为同步函数,没有异步的必要
|
||||
Args:
|
||||
data: 数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>type_check<span class="token punctuation">:</span>
|
||||
_type <span class="token operator">=</span> self<span class="token punctuation">.</span>_get_generic_type<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> _type <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token keyword">not</span> self<span class="token punctuation">.</span>_validate_structure<span class="token punctuation">(</span>data<span class="token punctuation">,</span> _type<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Data must be an instance of </span><span class="token interpolation"><span class="token punctuation">{</span>_type<span class="token punctuation">}</span></span><span class="token string">, </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">type</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string"> found'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Cannot send to a closed channel_'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>conn_send<span class="token punctuation">.</span>send<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-receive-self-t" tabindex="-1"><a class="header-anchor" href="#def-receive-self-t"><span><em><strong>def</strong></em> <code>receive(self) -> T</code></span></a></h4><p><strong>Description</strong>: 同步接收数据,会阻塞线程</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L132" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">receive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> T<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
同步接收数据,会阻塞线程
|
||||
Args:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Cannot receive from a closed channel_'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> self<span class="token punctuation">.</span>conn_recv<span class="token punctuation">.</span>recv<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-async-receive-self-t" tabindex="-1"><a class="header-anchor" href="#async-def-async-receive-self-t"><span><em><strong>async def</strong></em> <code>async_receive(self) -> T</code></span></a></h4><p><strong>Description</strong>: 异步接收数据,会挂起等待</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L144" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">async_receive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> T<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
异步接收数据,会挂起等待
|
||||
"""</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'等待接收数据'</span><span class="token punctuation">)</span>
|
||||
loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>get_running_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> loop<span class="token punctuation">.</span>run_in_executor<span class="token punctuation">(</span><span class="token boolean">None</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>receive<span class="token punctuation">)</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'接收到数据'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any" tabindex="-1"><a class="header-anchor" href="#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any"><span><em><strong>def</strong></em> <code>on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]</code></span></a></h4><p><strong>Description</strong>: 接收数据并执行函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>filter_func: 过滤函数,为None则不过滤</li></ul></blockquote><p><strong>Return</strong>: 装饰器,装饰一个函数在接收到数据后执行</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L154" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_receive</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> filter_func<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span>FILTER_FUNC<span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
接收数据并执行函数
|
||||
Args:
|
||||
filter_func: 过滤函数,为None则不过滤
|
||||
Returns:
|
||||
装饰器,装饰一个函数在接收到数据后执行
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'on_receive can only be used in main process'</span><span class="token punctuation">)</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">decorator</span><span class="token punctuation">(</span>func<span class="token punctuation">:</span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>T<span class="token punctuation">]</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">global</span> _func_id
|
||||
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">wrapper</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> T<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> filter_func <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>filter_func<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token keyword">await</span> filter_func<span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> filter_func<span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>func<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token keyword">await</span> func<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> func<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
_callback_funcs<span class="token punctuation">[</span>_func_id<span class="token punctuation">]</span> <span class="token operator">=</span> wrapper
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">.</span>append<span class="token punctuation">(</span>_func_id<span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">.</span>append<span class="token punctuation">(</span>_func_id<span class="token punctuation">)</span>
|
||||
_func_id <span class="token operator">+=</span> <span class="token number">1</span>
|
||||
<span class="token keyword">return</span> func
|
||||
<span class="token keyword">return</span> decorator
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-on-receive-funcs-self-data-any" tabindex="-1"><a class="header-anchor" href="#async-def-run-on-receive-funcs-self-data-any"><span><em><strong>async def</strong></em> <code>_run_on_receive_funcs(self, data: Any)</code></span></a></h4><p><strong>Description</strong>: 运行接收函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>data: 数据</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L192" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run_on_receive_funcs</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> data<span class="token punctuation">:</span> Any<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
运行接收函数
|
||||
Args:
|
||||
data: 数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>_callback_funcs<span class="token punctuation">[</span>func_id<span class="token punctuation">]</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> func_id <span class="token keyword">in</span> self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">]</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>_callback_funcs<span class="token punctuation">[</span>func_id<span class="token punctuation">]</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> func_id <span class="token keyword">in</span> self<span class="token punctuation">.</span>_on_sub_receive_func_ids<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-start-receive-loop-self" tabindex="-1"><a class="header-anchor" href="#async-def-start-receive-loop-self"><span><em><strong>async def</strong></em> <code>start_receive_loop(self)</code></span></a></h4><p><strong>Description</strong>: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L203" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">start_receive_loop</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
开始接收数据
|
||||
会自动判断主进程和子进程,需要在对应进程都调度一次
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>_on_main_receive_func_ids<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'No on_receive function registered for </span><span class="token interpolation"><span class="token punctuation">{</span>self<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span>
|
||||
self<span class="token punctuation">.</span>is_receive_loop_running <span class="token operator">=</span> <span class="token boolean">True</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Starting receive loop for </span><span class="token interpolation"><span class="token punctuation">{</span>self<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token keyword">not</span> self<span class="token punctuation">.</span>_closed<span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> self<span class="token punctuation">.</span>async_receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>_run_on_receive_funcs<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="var-active-channel" tabindex="-1"><a class="header-anchor" href="#var-active-channel"><span>var <code>active_channel</code></span></a></h3><ul><li><p><strong>Description</strong>: 子进程可用的主动和被动通道</p></li><li><p><strong>Type</strong>: <code>Channel</code></p></li><li><p><strong>Default</strong>: <code>Channel(name='active_channel')</code></p></li></ul><h3 id="var-publish-channel" tabindex="-1"><a class="header-anchor" href="#var-publish-channel"><span>var <code>publish_channel</code></span></a></h3><ul><li><p><strong>Description</strong>: 通道传递通道,主进程创建单例,子进程初始化时实例化</p></li><li><p><strong>Type</strong>: <code>Channel[tuple[str, dict[str, Any]]]</code></p></li><li><p><strong>Default</strong>: <code>Channel(name='publish_channel')</code></p></li></ul><h3 id="var-channel-deliver-active-channel" tabindex="-1"><a class="header-anchor" href="#var-channel-deliver-active-channel"><span>var <code>channel_deliver_active_channel</code></span></a></h3><ul><li><p><strong>Description</strong>: 通道传递通道,主进程创建单例,子进程初始化时实例化</p></li><li><p><strong>Type</strong>: <code>Channel[Channel[Any]]</code></p></li><li><p><strong>Default</strong>: <code>NO_DEFAULT</code></p></li></ul><h3 id="def-set-channel-name-str-channel-channel" tabindex="-1"><a class="header-anchor" href="#def-set-channel-name-str-channel-channel"><span><em><strong>def</strong></em> <code>set_channel(name: str, channel: Channel)</code></span></a></h3><p><strong>Description</strong>: 设置通道实例</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 通道名称</li><li>channel: 通道实例</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L250" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">set_channel</span><span class="token punctuation">(</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> channel<span class="token punctuation">:</span> <span class="token string">'Channel'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置通道实例
|
||||
Args:
|
||||
name: 通道名称
|
||||
channel: 通道实例
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>channel<span class="token punctuation">,</span> Channel<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> TypeError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'channel_ must be an instance of Channel, </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">type</span><span class="token punctuation">(</span>channel<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string"> found'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">in</span> _channel<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Channel </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> already exists'</span></span><span class="token punctuation">)</span>
|
||||
_channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> channel
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'set_channel'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> name<span class="token punctuation">,</span> <span class="token string">'channel_'</span><span class="token punctuation">:</span> channel<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-set-channels-channels-dict-str-channel" tabindex="-1"><a class="header-anchor" href="#def-set-channels-channels-dict-str-channel"><span><em><strong>def</strong></em> <code>set_channels(channels: dict[str, Channel])</code></span></a></h3><p><strong>Description</strong>: 设置通道实例</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>channels: 通道名称</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L276" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">set_channels</span><span class="token punctuation">(</span>channels<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token string">'Channel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置通道实例
|
||||
Args:
|
||||
channels: 通道名称
|
||||
"""</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span> <span class="token keyword">in</span> channels<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
set_channel<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-channel-name-str-channel" tabindex="-1"><a class="header-anchor" href="#def-get-channel-name-str-channel"><span><em><strong>def</strong></em> <code>get_channel(name: str) -> Channel</code></span></a></h3><p><strong>Description</strong>: 获取通道实例</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 通道名称</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L286" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_channel</span><span class="token punctuation">(</span>name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token string">'Channel'</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道实例
|
||||
Args:
|
||||
name: 通道名称
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> _channel<span class="token punctuation">[</span>name<span class="token punctuation">]</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> Channel<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token string">'recv_chan'</span><span class="token punctuation">)</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'get_channel'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> name<span class="token punctuation">,</span> <span class="token string">'recv_chan'</span><span class="token punctuation">:</span> recv_chan<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> recv_chan<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-channels-dict-str-channel" tabindex="-1"><a class="header-anchor" href="#def-get-channels-dict-str-channel"><span><em><strong>def</strong></em> <code>get_channels() -> dict[str, Channel]</code></span></a></h3><p><strong>Description</strong>: 获取通道实例</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L310" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_channels</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token string">'Channel'</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取通道实例
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> _channel
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> Channel<span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token string">'recv_chan'</span><span class="token punctuation">)</span>
|
||||
channel_deliver_passive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'get_channels'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">'recv_chan'</span><span class="token punctuation">:</span> recv_chan<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> recv_chan<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')</code></p><h3 id="def-on-set-channel-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-set-channel-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_set_channel(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L233" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'set_channel'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_set_channel</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'channel_'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
set_channel<span class="token punctuation">(</span>name<span class="token punctuation">,</span> channel<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')</code></p><h3 id="def-on-get-channel-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-get-channel-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_get_channel(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L239" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'get_channel'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_get_channel</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">(</span>name<span class="token punctuation">,</span> recv_chan<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'recv_chan'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
recv_chan<span class="token punctuation">.</span>send<span class="token punctuation">(</span>get_channel<span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p><code>@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')</code></p><h3 id="def-on-get-channels-data-tuple-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-on-get-channels-data-tuple-str-dict-str-any"><span><em><strong>def</strong></em> <code>on_get_channels(data: tuple[str, dict[str, Any]])</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/channel.py#L245" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@channel_deliver_passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">'get_channels'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_get_channels</span><span class="token punctuation">(</span>data<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
recv_chan <span class="token operator">=</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'recv_chan'</span><span class="token punctuation">]</span>
|
||||
recv_chan<span class="token punctuation">.</span>send<span class="token punctuation">(</span>get_channels<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,78),o=[p];function c(l,i){return s(),a("div",null,o)}const r=n(e,[["render",c],["__file","channel.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/comm/channel.html","title":"liteyuki.comm.channel","lang":"en-US","frontmatter":{"title":"liteyuki.comm.channel","lastUpdated":false,"description":"liteyuki.comm.channel Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/channel.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/channel.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.comm.channel"}],["meta",{"property":"og:description","content":"liteyuki.comm.channel Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm.channel\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Channel(Generic[T])","slug":"class-channel-generic-t","link":"#class-channel-generic-t","children":[]},{"level":3,"title":"var active_channel","slug":"var-active-channel","link":"#var-active-channel","children":[]},{"level":3,"title":"var publish_channel","slug":"var-publish-channel","link":"#var-publish-channel","children":[]},{"level":3,"title":"var channel_deliver_active_channel","slug":"var-channel-deliver-active-channel","link":"#var-channel-deliver-active-channel","children":[]},{"level":3,"title":"def set_channel(name: str, channel: Channel)","slug":"def-set-channel-name-str-channel-channel","link":"#def-set-channel-name-str-channel-channel","children":[]},{"level":3,"title":"def set_channels(channels: dict[str, Channel])","slug":"def-set-channels-channels-dict-str-channel","link":"#def-set-channels-channels-dict-str-channel","children":[]},{"level":3,"title":"def get_channel(name: str) -> Channel","slug":"def-get-channel-name-str-channel","link":"#def-get-channel-name-str-channel","children":[]},{"level":3,"title":"def get_channels() -> dict[str, Channel]","slug":"def-get-channels-dict-str-channel","link":"#def-get-channels-dict-str-channel","children":[]},{"level":3,"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","slug":"def-on-set-channel-data-tuple-str-dict-str-any","link":"#def-on-set-channel-data-tuple-str-dict-str-any","children":[]},{"level":3,"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","slug":"def-on-get-channel-data-tuple-str-dict-str-any","link":"#def-on-get-channel-data-tuple-str-dict-str-any","children":[]},{"level":3,"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","slug":"def-on-get-channels-data-tuple-str-dict-str-any","link":"#def-on-get-channels-data-tuple-str-dict-str-any","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":5.85,"words":1754},"filePathRelative":"en/dev/api/comm/channel.md","localizedDate":"August 21, 2024","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,84 @@
|
||||
import{_ as s,o as a,c as t,e as n,b as o}from"./app-BvUYPzLF.js";const e={},p=n('<h1 id="liteyuki-config" tabindex="-1"><a class="header-anchor" href="#liteyuki-config"><span>liteyuki.config</span></a></h1><p><strong>说明</strong>: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式</p><h3 id="def-flat-config-config-dict-str-any-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-flat-config-config-dict-str-any-dict-str-any"><span><em><strong>def</strong></em> <code>flat_config(config: dict[str, Any]) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: 扁平化配置文件</p>',4),i=o("p",{"a.b.c:1":""},"{a:{b:{c:1}}} ->",-1),l=n(`<p><strong>参数</strong>:</p><blockquote><ul><li>config: 配置项目</li></ul></blockquote><p><strong>返回</strong>: 扁平化后的配置文件,但也包含原有的键值对</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L24" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">flat_config</span><span class="token punctuation">(</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
扁平化配置文件
|
||||
|
||||
{a:{b:{c:1}}} -> {"a.b.c": 1}
|
||||
Args:
|
||||
config: 配置项目
|
||||
|
||||
Returns:
|
||||
扁平化后的配置文件,但也包含原有的键值对
|
||||
"""</span>
|
||||
new_config <span class="token operator">=</span> copy<span class="token punctuation">.</span>deepcopy<span class="token punctuation">(</span>config<span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span> <span class="token keyword">in</span> config<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>value<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token keyword">in</span> flat_config<span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
new_config<span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>key<span class="token punctuation">}</span></span><span class="token string">.</span><span class="token interpolation"><span class="token punctuation">{</span>k<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">]</span> <span class="token operator">=</span> v
|
||||
<span class="token keyword">return</span> new_config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-yaml-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-yaml-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_yaml(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: Load config from yaml file</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L43" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_yaml</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from yaml file
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading YAML config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> yaml<span class="token punctuation">.</span>safe_load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-json-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-json-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_json(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: Load config from json file</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L53" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_json</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from json file
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading JSON config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-toml-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-toml-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_toml(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: Load config from toml file</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L62" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_toml</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from toml file
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading TOML config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> toml<span class="token punctuation">.</span>load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-files-files-str-no-warning-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-files-files-str-no-warning-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: 从指定文件加载配置项,会自动识别文件格式 默认执行扁平化选项</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L71" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_files</span><span class="token punctuation">(</span><span class="token operator">*</span>files<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> no_warning<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从指定文件加载配置项,会自动识别文件格式
|
||||
默认执行扁平化选项
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
<span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> files<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'.yaml'</span><span class="token punctuation">,</span> <span class="token string">'yml'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_yaml<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.json'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_json<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.toml'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_toml<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> no_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Unsupported config file format: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">file</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> no_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Config file not found: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">file</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: 从目录下加载配置文件,不递归 按照读取文件的优先级反向覆盖 默认执行扁平化选项</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L94" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_configs_from_dirs</span><span class="token punctuation">(</span><span class="token operator">*</span>directories<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> no_waring<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从目录下加载配置文件,不递归
|
||||
按照读取文件的优先级反向覆盖
|
||||
默认执行扁平化选项
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
<span class="token keyword">for</span> directory <span class="token keyword">in</span> directories<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>directory<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> no_waring<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Directory not found: </span><span class="token interpolation"><span class="token punctuation">{</span>directory<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>directory<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span>_SUPPORTED_CONFIG_FORMATS<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_files<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>directory<span class="token punctuation">,</span> <span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">,</span> no_warning<span class="token operator">=</span>no_waring<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-config-in-default-no-waring-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-config-in-default-no-waring-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_config_in_default(no_waring: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>说明</strong>: 从一个标准的轻雪项目加载配置文件 项目目录下的config.*和config目录下的所有配置文件 项目目录下的配置文件优先</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L116" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_config_in_default</span><span class="token punctuation">(</span>no_waring<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从一个标准的轻雪项目加载配置文件
|
||||
项目目录下的config.*和config目录下的所有配置文件
|
||||
项目目录下的配置文件优先
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> load_configs_from_dirs<span class="token punctuation">(</span><span class="token string">'config'</span><span class="token punctuation">,</span> no_waring<span class="token operator">=</span>no_waring<span class="token punctuation">)</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_files<span class="token punctuation">(</span><span class="token string">'config.yaml'</span><span class="token punctuation">,</span> <span class="token string">'config.toml'</span><span class="token punctuation">,</span> <span class="token string">'config.json'</span><span class="token punctuation">,</span> <span class="token string">'config.yml'</span><span class="token punctuation">,</span> no_warning<span class="token operator">=</span>no_waring<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,22),c=[p,i,l];function u(r,d){return a(),t("div",null,c)}const f=s(e,[["render",u],["__file","config.html.vue"]]),g=JSON.parse('{"path":"/dev/api/config.html","title":"liteyuki.config","lang":"zh-CN","frontmatter":{"title":"liteyuki.config","lastUpdated":false,"description":"liteyuki.config 说明: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请不要将需要动态加载...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/config.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/config.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.config"}],["meta",{"property":"og:description","content":"liteyuki.config 说明: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请不要将需要动态加载..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.config\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","slug":"def-flat-config-config-dict-str-any-dict-str-any","link":"#def-flat-config-config-dict-str-any-dict-str-any","children":[]},{"level":3,"title":"def load_from_yaml(file_: str) -> dict[str, Any]","slug":"def-load-from-yaml-file-str-dict-str-any","link":"#def-load-from-yaml-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_json(file_: str) -> dict[str, Any]","slug":"def-load-from-json-file-str-dict-str-any","link":"#def-load-from-json-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_toml(file_: str) -> dict[str, Any]","slug":"def-load-from-toml-file-str-dict-str-any","link":"#def-load-from-toml-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","slug":"def-load-from-files-files-str-no-warning-bool-false-dict-str-any","link":"#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","children":[]},{"level":3,"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","slug":"def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","link":"#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","children":[]},{"level":3,"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","slug":"def-load-config-in-default-no-waring-bool-false-dict-str-any","link":"#def-load-config-in-default-no-waring-bool-false-dict-str-any","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":5}]},"readingTime":{"minutes":3.29,"words":987},"filePathRelative":"dev/api/config.md","localizedDate":"2024年8月19日","autoDesc":true}');export{f as comp,g as data};
|
||||
@@ -0,0 +1,84 @@
|
||||
import{_ as s,o as a,c as t,e as n,b as o}from"./app-BvUYPzLF.js";const e={},p=n('<h1 id="liteyuki-config" tabindex="-1"><a class="header-anchor" href="#liteyuki-config"><span>liteyuki.config</span></a></h1><p><strong>Description</strong>: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式</p><h3 id="def-flat-config-config-dict-str-any-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-flat-config-config-dict-str-any-dict-str-any"><span><em><strong>def</strong></em> <code>flat_config(config: dict[str, Any]) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: 扁平化配置文件</p>',4),i=o("p",{"a.b.c:1":""},"{a:{b:{c:1}}} ->",-1),c=n(`<p><strong>Arguments</strong>:</p><blockquote><ul><li>config: 配置项目</li></ul></blockquote><p><strong>Return</strong>: 扁平化后的配置文件,但也包含原有的键值对</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L24" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">flat_config</span><span class="token punctuation">(</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
扁平化配置文件
|
||||
|
||||
{a:{b:{c:1}}} -> {"a.b.c": 1}
|
||||
Args:
|
||||
config: 配置项目
|
||||
|
||||
Returns:
|
||||
扁平化后的配置文件,但也包含原有的键值对
|
||||
"""</span>
|
||||
new_config <span class="token operator">=</span> copy<span class="token punctuation">.</span>deepcopy<span class="token punctuation">(</span>config<span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span> <span class="token keyword">in</span> config<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>value<span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token keyword">in</span> flat_config<span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
new_config<span class="token punctuation">[</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>key<span class="token punctuation">}</span></span><span class="token string">.</span><span class="token interpolation"><span class="token punctuation">{</span>k<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">]</span> <span class="token operator">=</span> v
|
||||
<span class="token keyword">return</span> new_config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-yaml-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-yaml-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_yaml(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: Load config from yaml file</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L43" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_yaml</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from yaml file
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading YAML config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> yaml<span class="token punctuation">.</span>safe_load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-json-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-json-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_json(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: Load config from json file</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L53" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_json</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from json file
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading JSON config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-toml-file-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-toml-file-str-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_toml(file_: str) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: Load config from toml file</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L62" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_toml</span><span class="token punctuation">(</span>file_<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
Load config from toml file
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Loading TOML config from </span><span class="token interpolation"><span class="token punctuation">{</span>file_<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
config <span class="token operator">=</span> toml<span class="token punctuation">.</span>load<span class="token punctuation">(</span><span class="token builtin">open</span><span class="token punctuation">(</span>file_<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> flat_config<span class="token punctuation">(</span>config <span class="token keyword">if</span> config <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-from-files-files-str-no-warning-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-from-files-files-str-no-warning-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: 从指定文件加载配置项,会自动识别文件格式 默认执行扁平化选项</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L71" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_from_files</span><span class="token punctuation">(</span><span class="token operator">*</span>files<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> no_warning<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从指定文件加载配置项,会自动识别文件格式
|
||||
默认执行扁平化选项
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
<span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> files<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token string">'.yaml'</span><span class="token punctuation">,</span> <span class="token string">'yml'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_yaml<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.json'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_json<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.toml'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_toml<span class="token punctuation">(</span><span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> no_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Unsupported config file format: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">file</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> <span class="token keyword">not</span> no_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Config file not found: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token builtin">file</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: 从目录下加载配置文件,不递归 按照读取文件的优先级反向覆盖 默认执行扁平化选项</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L94" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_configs_from_dirs</span><span class="token punctuation">(</span><span class="token operator">*</span>directories<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> no_waring<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从目录下加载配置文件,不递归
|
||||
按照读取文件的优先级反向覆盖
|
||||
默认执行扁平化选项
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
<span class="token keyword">for</span> directory <span class="token keyword">in</span> directories<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>directory<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> no_waring<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Directory not found: </span><span class="token interpolation"><span class="token punctuation">{</span>directory<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">for</span> <span class="token builtin">file</span> <span class="token keyword">in</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>directory<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token builtin">file</span><span class="token punctuation">.</span>endswith<span class="token punctuation">(</span>_SUPPORTED_CONFIG_FORMATS<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_files<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>directory<span class="token punctuation">,</span> <span class="token builtin">file</span><span class="token punctuation">)</span><span class="token punctuation">,</span> no_warning<span class="token operator">=</span>no_waring<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-config-in-default-no-waring-bool-false-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-load-config-in-default-no-waring-bool-false-dict-str-any"><span><em><strong>def</strong></em> <code>load_config_in_default(no_waring: bool = False) -> dict[str, Any]</code></span></a></h3><p><strong>Description</strong>: 从一个标准的轻雪项目加载配置文件 项目目录下的config.*和config目录下的所有配置文件 项目目录下的配置文件优先</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/config.py#L116" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_config_in_default</span><span class="token punctuation">(</span>no_waring<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
从一个标准的轻雪项目加载配置文件
|
||||
项目目录下的config.*和config目录下的所有配置文件
|
||||
项目目录下的配置文件优先
|
||||
"""</span>
|
||||
config <span class="token operator">=</span> load_configs_from_dirs<span class="token punctuation">(</span><span class="token string">'config'</span><span class="token punctuation">,</span> no_waring<span class="token operator">=</span>no_waring<span class="token punctuation">)</span>
|
||||
config<span class="token punctuation">.</span>update<span class="token punctuation">(</span>load_from_files<span class="token punctuation">(</span><span class="token string">'config.yaml'</span><span class="token punctuation">,</span> <span class="token string">'config.toml'</span><span class="token punctuation">,</span> <span class="token string">'config.json'</span><span class="token punctuation">,</span> <span class="token string">'config.yml'</span><span class="token punctuation">,</span> no_warning<span class="token operator">=</span>no_waring<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> config
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,22),l=[p,i,c];function u(r,d){return a(),t("div",null,l)}const f=s(e,[["render",u],["__file","config.html.vue"]]),g=JSON.parse('{"path":"/en/dev/api/config.html","title":"liteyuki.config","lang":"en-US","frontmatter":{"title":"liteyuki.config","lastUpdated":false,"description":"liteyuki.config Description: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/config.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/config.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.config"}],["meta",{"property":"og:description","content":"liteyuki.config Description: 该模块用于常用配置文件的加载 多配置文件编写原则: 1.尽量不要冲突: 一个键不要多次出现 2.分工明确: 每个配置文件给一个或一类服务提供配置 3.扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套 4.注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件 5.请..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.config\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","slug":"def-flat-config-config-dict-str-any-dict-str-any","link":"#def-flat-config-config-dict-str-any-dict-str-any","children":[]},{"level":3,"title":"def load_from_yaml(file_: str) -> dict[str, Any]","slug":"def-load-from-yaml-file-str-dict-str-any","link":"#def-load-from-yaml-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_json(file_: str) -> dict[str, Any]","slug":"def-load-from-json-file-str-dict-str-any","link":"#def-load-from-json-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_toml(file_: str) -> dict[str, Any]","slug":"def-load-from-toml-file-str-dict-str-any","link":"#def-load-from-toml-file-str-dict-str-any","children":[]},{"level":3,"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","slug":"def-load-from-files-files-str-no-warning-bool-false-dict-str-any","link":"#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","children":[]},{"level":3,"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","slug":"def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","link":"#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","children":[]},{"level":3,"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","slug":"def-load-config-in-default-no-waring-bool-false-dict-str-any","link":"#def-load-config-in-default-no-waring-bool-false-dict-str-any","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":3.19,"words":956},"filePathRelative":"en/dev/api/config.md","localizedDate":"August 21, 2024","autoDesc":true}');export{f as comp,g as data};
|
||||
@@ -0,0 +1,47 @@
|
||||
import{_ as e,r as t,o,c as p,b as n,d as s,a as c,e as i}from"./app-BvUYPzLF.js";const l={},u=i(`<h2 id="通道通信" tabindex="-1"><a class="header-anchor" href="#通道通信"><span><strong>通道通信</strong></span></a></h2><h3 id="简介" tabindex="-1"><a class="header-anchor" href="#简介"><span>简介</span></a></h3><p>轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道<code>Channel</code>用于跨进程通信,你可以通过<code>Channel</code>发送消息给其他进程,也可以监听其他进程的消息。</p><p>例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。</p><h3 id="示例" tabindex="-1"><a class="header-anchor" href="#示例"><span>示例</span></a></h3><p>通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由<code>chan.on_receive()</code>装饰回调函数实现,主动模式需调用<code>chan.receive()</code>实现</p><ul><li>创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为<code>{process_name}-active</code>和<code>{process_name}-passive</code>,</li><li>主进程中通过<code>get_channel</code>函数获取通道对象</li><li>子进程中导入单例<code>active_channel</code>及<code>passive_channel</code>即可</li></ul><blockquote><p>在轻雪插件中(主进程中)</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> asyncio
|
||||
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm <span class="token keyword">import</span> get_channel<span class="token punctuation">,</span> Channel
|
||||
<span class="token keyword">from</span> liteyuki <span class="token keyword">import</span> get_bot
|
||||
|
||||
<span class="token comment"># get_channel函数获取通道对象,参数为调用set_channel时的通道标识</span>
|
||||
channel_passive <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string">"nonebot-passive"</span><span class="token punctuation">)</span> <span class="token comment"># 获取被动通道</span>
|
||||
channel_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string">"nonebot-active"</span><span class="token punctuation">)</span> <span class="token comment"># 获取主动通道</span>
|
||||
liteyuki_bot <span class="token operator">=</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 注册一个函数在轻雪启动后运行</span>
|
||||
<span class="token decorator annotation punctuation">@liteyuki_bot<span class="token punctuation">.</span>on_after_start</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">send_data</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
channel_passive<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token string">"I am liteyuki main process passive"</span><span class="token punctuation">)</span>
|
||||
channel_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token string">"I am liteyuki main process active"</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment"># 每3秒发送一次消息</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>在子进程中(例如NoneBot插件中)</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> nonebot <span class="token keyword">import</span> get_driver
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm <span class="token keyword">import</span> active_channel<span class="token punctuation">,</span> passive_channel <span class="token comment"># 子进程中获取通道直接导入进程全局单例即可</span>
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>log <span class="token keyword">import</span> logger
|
||||
|
||||
driver <span class="token operator">=</span> get_driver<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行</span>
|
||||
<span class="token decorator annotation punctuation">@passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">on_passive_receive</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Passive receive: </span><span class="token interpolation"><span class="token punctuation">{</span>data<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 注册一个函数在NoneBot启动后运行</span>
|
||||
<span class="token decorator annotation punctuation">@driver<span class="token punctuation">.</span>on_startup</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_startup</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> active_channel<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Active receive: </span><span class="token interpolation"><span class="token punctuation">{</span>data<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>启动后控制台输出</p></blockquote><div class="language-log line-numbers-mode" data-ext="log" data-title="log"><pre class="language-log"><code><span class="token date number">0000-00-00</span> <span class="token time number">00:00:00</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Passive receive:</span> I am liteyuki main process passive
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:00</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Active receive:</span> I am liteyuki main process active
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:03</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Passive receive:</span> I am liteyuki main process passive
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:03</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Active receive:</span> I am liteyuki main process active
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="共享内存通信" tabindex="-1"><a class="header-anchor" href="#共享内存通信"><span><strong>共享内存通信</strong></span></a></h2><h3 id="简介-1" tabindex="-1"><a class="header-anchor" href="#简介-1"><span>简介</span></a></h3><ul><li>相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过<code>storage</code>模块实现内存共享通信,该模块封装通道实现</li><li>内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作</li></ul><h3 id="示例-1" tabindex="-1"><a class="header-anchor" href="#示例-1"><span>示例</span></a></h3><blockquote><p>在任意进程中均可使用</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm<span class="token punctuation">.</span>storage <span class="token keyword">import</span> shared_memory
|
||||
|
||||
shared_memory<span class="token punctuation">.</span><span class="token builtin">set</span><span class="token punctuation">(</span><span class="token string">"key"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span> <span class="token comment"># 设置共享内存</span>
|
||||
value <span class="token operator">=</span> shared_memory<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">"key"</span><span class="token punctuation">)</span> <span class="token comment"># 获取共享内存</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,19),r={href:"https://github.com/LiteyukiStudio/LiteyukiBot/blob/main/liteyuki/comm/storage.py",target:"_blank",rel:"noopener noreferrer"};function d(k,m){const a=t("ExternalLinkIcon");return o(),p("div",null,[u,n("p",null,[s("源代码:"),n("a",r,[s("liteyuki/comm/storage.py"),c(a)])])])}const h=e(l,[["render",d],["__file","dev_comm.html.vue"]]),b=JSON.parse('{"path":"/dev/dev_comm.html","title":"进程通信","lang":"zh-CN","frontmatter":{"title":"进程通信","icon":"exchange-alt","order":4,"category":"开发","description":"通道通信 简介 轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道Channel用于跨进程通信,你可以通过Channel发送消息给其他进程,也可以监听其他进程的消息。 例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_comm.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_comm.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"进程通信"}],["meta",{"property":"og:description","content":"通道通信 简介 轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道Channel用于跨进程通信,你可以通过Channel发送消息给其他进程,也可以监听其他进程的消息。 例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"进程通信\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"通道通信","slug":"通道通信","link":"#通道通信","children":[{"level":3,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"共享内存通信","slug":"共享内存通信","link":"#共享内存通信","children":[{"level":3,"title":"简介","slug":"简介-1","link":"#简介-1","children":[]},{"level":3,"title":"示例","slug":"示例-1","link":"#示例-1","children":[]}]}],"git":{"createdTime":1723413012000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":6},{"name":"Snowykami","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":2.52,"words":757},"filePathRelative":"dev/dev_comm.md","localizedDate":"2024年8月11日","autoDesc":true}');export{h as comp,b as data};
|
||||
@@ -0,0 +1,47 @@
|
||||
import{_ as e,r as t,o,c as p,b as n,d as s,a as c,e as i}from"./app-BvUYPzLF.js";const l={},u=i(`<h2 id="通道通信" tabindex="-1"><a class="header-anchor" href="#通道通信"><span><strong>通道通信</strong></span></a></h2><h3 id="简介" tabindex="-1"><a class="header-anchor" href="#简介"><span>简介</span></a></h3><p>轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道<code>Channel</code>用于跨进程通信,你可以通过<code>Channel</code>发送消息给其他进程,也可以监听其他进程的消息。</p><p>例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。</p><h3 id="示例" tabindex="-1"><a class="header-anchor" href="#示例"><span>示例</span></a></h3><p>通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由<code>chan.on_receive()</code>装饰回调函数实现,主动模式需调用<code>chan.receive()</code>实现</p><ul><li>创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为<code>{process_name}-active</code>和<code>{process_name}-passive</code>,</li><li>主进程中通过<code>get_channel</code>函数获取通道对象</li><li>子进程中导入单例<code>active_channel</code>及<code>passive_channel</code>即可</li></ul><blockquote><p>在轻雪插件中(主进程中)</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> asyncio
|
||||
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm <span class="token keyword">import</span> get_channel<span class="token punctuation">,</span> Channel
|
||||
<span class="token keyword">from</span> liteyuki <span class="token keyword">import</span> get_bot
|
||||
|
||||
<span class="token comment"># get_channel函数获取通道对象,参数为调用set_channel时的通道标识</span>
|
||||
channel_passive <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string">"nonebot-passive"</span><span class="token punctuation">)</span> <span class="token comment"># 获取被动通道</span>
|
||||
channel_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string">"nonebot-active"</span><span class="token punctuation">)</span> <span class="token comment"># 获取主动通道</span>
|
||||
liteyuki_bot <span class="token operator">=</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 注册一个函数在轻雪启动后运行</span>
|
||||
<span class="token decorator annotation punctuation">@liteyuki_bot<span class="token punctuation">.</span>on_after_start</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">send_data</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
channel_passive<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token string">"I am liteyuki main process passive"</span><span class="token punctuation">)</span>
|
||||
channel_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token string">"I am liteyuki main process active"</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment"># 每3秒发送一次消息</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>在子进程中(例如NoneBot插件中)</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> nonebot <span class="token keyword">import</span> get_driver
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm <span class="token keyword">import</span> active_channel<span class="token punctuation">,</span> passive_channel <span class="token comment"># 子进程中获取通道直接导入进程全局单例即可</span>
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>log <span class="token keyword">import</span> logger
|
||||
|
||||
driver <span class="token operator">=</span> get_driver<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行</span>
|
||||
<span class="token decorator annotation punctuation">@passive_channel<span class="token punctuation">.</span>on_receive</span><span class="token punctuation">(</span>filter_func<span class="token operator">=</span><span class="token keyword">lambda</span> data<span class="token punctuation">:</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">on_passive_receive</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Passive receive: </span><span class="token interpolation"><span class="token punctuation">{</span>data<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
|
||||
|
||||
|
||||
<span class="token comment"># 注册一个函数在NoneBot启动后运行</span>
|
||||
<span class="token decorator annotation punctuation">@driver<span class="token punctuation">.</span>on_startup</span>
|
||||
<span class="token keyword">def</span> <span class="token function">on_startup</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> active_channel<span class="token punctuation">.</span>receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Active receive: </span><span class="token interpolation"><span class="token punctuation">{</span>data<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>启动后控制台输出</p></blockquote><div class="language-log line-numbers-mode" data-ext="log" data-title="log"><pre class="language-log"><code><span class="token date number">0000-00-00</span> <span class="token time number">00:00:00</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Passive receive:</span> I am liteyuki main process passive
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:00</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Active receive:</span> I am liteyuki main process active
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:03</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Passive receive:</span> I am liteyuki main process passive
|
||||
<span class="token date number">0000-00-00</span> <span class="token time number">00:00:03</span> <span class="token punctuation">[</span>ℹ️信息<span class="token punctuation">]</span> <span class="token property">Active receive:</span> I am liteyuki main process active
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="共享内存通信" tabindex="-1"><a class="header-anchor" href="#共享内存通信"><span><strong>共享内存通信</strong></span></a></h2><h3 id="简介-1" tabindex="-1"><a class="header-anchor" href="#简介-1"><span>简介</span></a></h3><ul><li>相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过<code>storage</code>模块实现内存共享通信,该模块封装通道实现</li><li>内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作</li></ul><h3 id="示例-1" tabindex="-1"><a class="header-anchor" href="#示例-1"><span>示例</span></a></h3><blockquote><p>在任意进程中均可使用</p></blockquote><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>comm<span class="token punctuation">.</span>storage <span class="token keyword">import</span> shared_memory
|
||||
|
||||
shared_memory<span class="token punctuation">.</span><span class="token builtin">set</span><span class="token punctuation">(</span><span class="token string">"key"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span> <span class="token comment"># 设置共享内存</span>
|
||||
value <span class="token operator">=</span> shared_memory<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">"key"</span><span class="token punctuation">)</span> <span class="token comment"># 获取共享内存</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,19),r={href:"https://github.com/LiteyukiStudio/LiteyukiBot/blob/main/liteyuki/comm/storage.py",target:"_blank",rel:"noopener noreferrer"};function d(k,m){const a=t("ExternalLinkIcon");return o(),p("div",null,[u,n("p",null,[s("源代码:"),n("a",r,[s("liteyuki/comm/storage.py"),c(a)])])])}const h=e(l,[["render",d],["__file","dev_comm.html.vue"]]),b=JSON.parse('{"path":"/en/dev/dev_comm.html","title":"进程通信","lang":"en-US","frontmatter":{"title":"进程通信","icon":"exchange-alt","order":4,"category":"开发","description":"通道通信 简介 轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道Channel用于跨进程通信,你可以通过Channel发送消息给其他进程,也可以监听其他进程的消息。 例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_comm.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_comm.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"进程通信"}],["meta",{"property":"og:description","content":"通道通信 简介 轻雪运行在主进程 MainProcess 里,其他插件框架进程是伴随的子进程,因此无法通过内存共享和直接对象传递的方式进行通信,轻雪提供了一个通道Channel用于跨进程通信,你可以通过Channel发送消息给其他进程,也可以监听其他进程的消息。 例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"进程通信\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"通道通信","slug":"通道通信","link":"#通道通信","children":[{"level":3,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"共享内存通信","slug":"共享内存通信","link":"#共享内存通信","children":[{"level":3,"title":"简介","slug":"简介-1","link":"#简介-1","children":[]},{"level":3,"title":"示例","slug":"示例-1","link":"#示例-1","children":[]}]}],"git":{"createdTime":1723829277000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":2.52,"words":757},"filePathRelative":"en/dev/dev_comm.md","localizedDate":"August 16, 2024","autoDesc":true}');export{h as comp,b as data};
|
||||
@@ -0,0 +1,24 @@
|
||||
import{_ as t,r as o,o as i,c as l,b as n,d as e,a as s,e as c}from"./app-BvUYPzLF.js";const p={},r=c(`<h2 id="轻雪函数" tabindex="-1"><a class="header-anchor" href="#轻雪函数"><span><strong>轻雪函数</strong></span></a></h2><p>轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.</p><h3 id="函数文件" tabindex="-1"><a class="header-anchor" href="#函数文件"><span><strong>函数文件</strong></span></a></h3><p>函数文件放在资源包的<code>functions</code>目录下,文件名以<code>.mcfunction</code> <code>.lyfunction</code> <code>.lyf</code>结尾,例如<code>test.mcfunction</code>,文件内容为一系列的命令,每行一个命令,支持单行注释<code>#</code>(编辑时的语法高亮可采取<code>shell</code>格式),例如:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token comment"># 在发信器输出"hello world"</span>
|
||||
cmd <span class="token builtin class-name">echo</span> hello world
|
||||
|
||||
<span class="token comment"># 如果你想同时输出多行内容可以尝试换行符(Python格式)</span>
|
||||
cmd <span class="token builtin class-name">echo</span> hello world<span class="token punctuation">\\</span>nLiteyuki bot
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>也支持句末注释,例如:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>cmd <span class="token builtin class-name">echo</span> hello world <span class="token comment"># 输出"hello world"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="命令文档" tabindex="-1"><a class="header-anchor" href="#命令文档"><span><strong>命令文档</strong></span></a></h3><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>var <span class="token operator"><</span>var1<span class="token operator">=</span>value<span class="token operator"><span class="token file-descriptor important">1</span>></span> <span class="token punctuation">[</span>var2<span class="token operator">=</span>value2<span class="token punctuation">]</span> <span class="token punctuation">..</span>. <span class="token comment"># 定义变量</span>
|
||||
cmd <span class="token operator"><</span>command<span class="token operator">></span> <span class="token comment"># 在设备上执行命令</span>
|
||||
api <span class="token operator"><</span>api_name<span class="token operator">></span> <span class="token punctuation">[</span>var<span class="token operator">=</span>value<span class="token punctuation">..</span>.<span class="token punctuation">]</span> <span class="token comment"># 调用Bot API</span>
|
||||
<span class="token keyword">function</span> <span class="token operator"><</span>func_name<span class="token operator">></span> <span class="token comment"># 调用函数,可递归</span>
|
||||
<span class="token function">sleep</span> <span class="token operator"><</span>time<span class="token operator">></span> <span class="token comment"># 异步等待,单位s</span>
|
||||
<span class="token function">nohup</span> <span class="token operator"><</span>command<span class="token operator">></span> <span class="token comment"># 使用新的task执行命令,即不等待</span>
|
||||
end <span class="token comment"># 结束函数关键字,包括子task</span>
|
||||
await <span class="token comment"># 等待所有异步任务结束,若函数中启动了其他task,需要在最后调用,否则task对象会被销毁</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示例" tabindex="-1"><a class="header-anchor" href="#示例"><span><strong>示例</strong></span></a></h4><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token comment"># 疯狂戳好友</span>
|
||||
<span class="token comment"># 使用 /function poke user_id=123456 执行</span>
|
||||
<span class="token comment"># 每隔0.2s戳两次,无限戳,会触发最大递归深度限制</span>
|
||||
<span class="token comment"># 若要戳20s后停止,则需要删除await,添加sleep 20和end</span>
|
||||
api friend_poke <span class="token assign-left variable">user_id</span><span class="token operator">=</span>user_id
|
||||
api friend_poke <span class="token assign-left variable">user_id</span><span class="token operator">=</span>user_id
|
||||
<span class="token function">sleep</span> <span class="token number">0.2</span>
|
||||
<span class="token function">nohup</span> <span class="token keyword">function</span> poke
|
||||
await
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="api" tabindex="-1"><a class="header-anchor" href="#api"><span><strong>API</strong></span></a></h3><p>理论上所有基于onebotv11的api都可调用,不同Adapter api也有差别.</p>`,13),d={href:"https://283375.github.io/onebot_v11_vitepress/api/index.html",target:"_blank",rel:"noopener noreferrer"},u=n("h3",{id:"结束关键字",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#结束关键字"},[n("span",null,[n("strong",null,"结束关键字")])])],-1),m=n("p",null,'由于LiteyukiBot基于异步运行, 所以在编写lyfunction时也要注意异步的调用,避免出现"单线程走到底"的情况是效率提升的关键.',-1),h=n("p",null,[n("code",null,"await"),e(" 异步任务结束关键字,用于结束当前已完成function的执行")],-1),v=n("div",{class:"hint-container warning"},[n("p",{class:"hint-container-title"},"Warning"),n("p",null,"但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁")],-1),k={class:"hint-container tip"},f=n("p",{class:"hint-container-title"},"Tips",-1),g={href:"https://github.com/LiteyukiStudio/lyfunctionTextmate",target:"_blank",rel:"noopener noreferrer"};function b(_,y){const a=o("ExternalLinkIcon");return i(),l("div",null,[r,n("p",null,[n("a",d,[e("Onebot v11 API文档"),s(a)])]),u,m,h,v,n("div",k,[f,n("p",null,[e("编写轻雪函数推荐你使用VS Code插件"),n("a",g,[e("Liteyuki Function"),s(a)]),e("实现语法高亮")])])])}const w=t(p,[["render",b],["__file","dev_lyfunc.html.vue"]]),L=JSON.parse('{"path":"/en/dev/dev_lyfunc.html","title":"轻雪函数","lang":"en-US","frontmatter":{"title":"轻雪函数","icon":"code","order":2,"category":"开发","description":"轻雪函数 轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅. 函数文件 函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mc...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_lyfunc.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_lyfunc.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"轻雪函数"}],["meta",{"property":"og:description","content":"轻雪函数 轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅. 函数文件 函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mc..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"轻雪函数\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"轻雪函数","slug":"轻雪函数","link":"#轻雪函数","children":[{"level":3,"title":"函数文件","slug":"函数文件","link":"#函数文件","children":[]},{"level":3,"title":"命令文档","slug":"命令文档","link":"#命令文档","children":[]},{"level":3,"title":"API","slug":"api","link":"#api","children":[]},{"level":3,"title":"结束关键字","slug":"结束关键字","link":"#结束关键字","children":[]}]}],"git":{"createdTime":1723829277000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":1.89,"words":566},"filePathRelative":"en/dev/dev_lyfunc.md","localizedDate":"August 16, 2024","autoDesc":true}');export{w as comp,L as data};
|
||||
@@ -0,0 +1,24 @@
|
||||
import{_ as t,r as o,o as i,c as l,b as n,d as e,a as s,e as c}from"./app-BvUYPzLF.js";const p={},r=c(`<h2 id="轻雪函数" tabindex="-1"><a class="header-anchor" href="#轻雪函数"><span><strong>轻雪函数</strong></span></a></h2><p>轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.</p><h3 id="函数文件" tabindex="-1"><a class="header-anchor" href="#函数文件"><span><strong>函数文件</strong></span></a></h3><p>函数文件放在资源包的<code>functions</code>目录下,文件名以<code>.mcfunction</code> <code>.lyfunction</code> <code>.lyf</code>结尾,例如<code>test.mcfunction</code>,文件内容为一系列的命令,每行一个命令,支持单行注释<code>#</code>(编辑时的语法高亮可采取<code>shell</code>格式),例如:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token comment"># 在发信器输出"hello world"</span>
|
||||
cmd <span class="token builtin class-name">echo</span> hello world
|
||||
|
||||
<span class="token comment"># 如果你想同时输出多行内容可以尝试换行符(Python格式)</span>
|
||||
cmd <span class="token builtin class-name">echo</span> hello world<span class="token punctuation">\\</span>nLiteyuki bot
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>也支持句末注释,例如:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>cmd <span class="token builtin class-name">echo</span> hello world <span class="token comment"># 输出"hello world"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="命令文档" tabindex="-1"><a class="header-anchor" href="#命令文档"><span><strong>命令文档</strong></span></a></h3><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>var <span class="token operator"><</span>var1<span class="token operator">=</span>value<span class="token operator"><span class="token file-descriptor important">1</span>></span> <span class="token punctuation">[</span>var2<span class="token operator">=</span>value2<span class="token punctuation">]</span> <span class="token punctuation">..</span>. <span class="token comment"># 定义变量</span>
|
||||
cmd <span class="token operator"><</span>command<span class="token operator">></span> <span class="token comment"># 在设备上执行命令</span>
|
||||
api <span class="token operator"><</span>api_name<span class="token operator">></span> <span class="token punctuation">[</span>var<span class="token operator">=</span>value<span class="token punctuation">..</span>.<span class="token punctuation">]</span> <span class="token comment"># 调用Bot API</span>
|
||||
<span class="token keyword">function</span> <span class="token operator"><</span>func_name<span class="token operator">></span> <span class="token comment"># 调用函数,可递归</span>
|
||||
<span class="token function">sleep</span> <span class="token operator"><</span>time<span class="token operator">></span> <span class="token comment"># 异步等待,单位s</span>
|
||||
<span class="token function">nohup</span> <span class="token operator"><</span>command<span class="token operator">></span> <span class="token comment"># 使用新的task执行命令,即不等待</span>
|
||||
end <span class="token comment"># 结束函数关键字,包括子task</span>
|
||||
await <span class="token comment"># 等待所有异步任务结束,若函数中启动了其他task,需要在最后调用,否则task对象会被销毁</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示例" tabindex="-1"><a class="header-anchor" href="#示例"><span><strong>示例</strong></span></a></h4><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token comment"># 疯狂戳好友</span>
|
||||
<span class="token comment"># 使用 /function poke user_id=123456 执行</span>
|
||||
<span class="token comment"># 每隔0.2s戳两次,无限戳,会触发最大递归深度限制</span>
|
||||
<span class="token comment"># 若要戳20s后停止,则需要删除await,添加sleep 20和end</span>
|
||||
api friend_poke <span class="token assign-left variable">user_id</span><span class="token operator">=</span>user_id
|
||||
api friend_poke <span class="token assign-left variable">user_id</span><span class="token operator">=</span>user_id
|
||||
<span class="token function">sleep</span> <span class="token number">0.2</span>
|
||||
<span class="token function">nohup</span> <span class="token keyword">function</span> poke
|
||||
await
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="api" tabindex="-1"><a class="header-anchor" href="#api"><span><strong>API</strong></span></a></h3><p>理论上所有基于onebotv11的api都可调用,不同Adapter api也有差别.</p>`,13),d={href:"https://283375.github.io/onebot_v11_vitepress/api/index.html",target:"_blank",rel:"noopener noreferrer"},u=n("h3",{id:"结束关键字",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#结束关键字"},[n("span",null,[n("strong",null,"结束关键字")])])],-1),m=n("p",null,'由于LiteyukiBot基于异步运行, 所以在编写lyfunction时也要注意异步的调用,避免出现"单线程走到底"的情况是效率提升的关键.',-1),h=n("p",null,[n("code",null,"await"),e(" 异步任务结束关键字,用于结束当前已完成function的执行")],-1),v=n("div",{class:"hint-container warning"},[n("p",{class:"hint-container-title"},"注意"),n("p",null,"但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁")],-1),k={class:"hint-container tip"},f=n("p",{class:"hint-container-title"},"提示",-1),b={href:"https://github.com/LiteyukiStudio/lyfunctionTextmate",target:"_blank",rel:"noopener noreferrer"};function g(_,y){const a=o("ExternalLinkIcon");return i(),l("div",null,[r,n("p",null,[n("a",d,[e("Onebot v11 API文档"),s(a)])]),u,m,h,v,n("div",k,[f,n("p",null,[e("编写轻雪函数推荐你使用VS Code插件"),n("a",b,[e("Liteyuki Function"),s(a)]),e("实现语法高亮")])])])}const w=t(p,[["render",g],["__file","dev_lyfunc.html.vue"]]),L=JSON.parse('{"path":"/dev/dev_lyfunc.html","title":"轻雪函数","lang":"zh-CN","frontmatter":{"title":"轻雪函数","icon":"code","order":2,"category":"开发","description":"轻雪函数 轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅. 函数文件 函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mc...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_lyfunc.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_lyfunc.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"轻雪函数"}],["meta",{"property":"og:description","content":"轻雪函数 轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅. 函数文件 函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mc..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"轻雪函数\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"轻雪函数","slug":"轻雪函数","link":"#轻雪函数","children":[{"level":3,"title":"函数文件","slug":"函数文件","link":"#函数文件","children":[]},{"level":3,"title":"命令文档","slug":"命令文档","link":"#命令文档","children":[]},{"level":3,"title":"API","slug":"api","link":"#api","children":[]},{"level":3,"title":"结束关键字","slug":"结束关键字","link":"#结束关键字","children":[]}]}],"git":{"createdTime":1723411596000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":3}]},"readingTime":{"minutes":1.89,"words":566},"filePathRelative":"dev/dev_lyfunc.md","localizedDate":"2024年8月11日","autoDesc":true}');export{w as comp,L as data};
|
||||
@@ -0,0 +1,35 @@
|
||||
import{_ as n,o as s,c as a,e}from"./app-BvUYPzLF.js";const t={},p=e(`<h2 id="简介" tabindex="-1"><a class="header-anchor" href="#简介"><span>简介</span></a></h2><p>轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能</p><h2 id="开始" tabindex="-1"><a class="header-anchor" href="#开始"><span>开始</span></a></h2><h3 id="创建插件" tabindex="-1"><a class="header-anchor" href="#创建插件"><span>创建插件</span></a></h3><p>一个<code>.py</code>文件或一个包含<code>__init__.py</code>的文件夹即可被识别为插件</p><p>首先创建一个文件夹,例如<code>watchdog_plugin</code>,并在其中创建一个<code>__init__.py</code>文件,即可创建一个插件</p><p><code>__init__.py</code></p><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>plugin <span class="token keyword">import</span> PluginMetadata<span class="token punctuation">,</span> PluginType
|
||||
<span class="token keyword">from</span> <span class="token punctuation">.</span>watch_dog <span class="token keyword">import</span> <span class="token operator">*</span> <span class="token comment"># 导入逻辑部分</span>
|
||||
|
||||
<span class="token comment"># 定义插件元数据</span>
|
||||
__plugin_meta__ <span class="token operator">=</span> PluginMetadata<span class="token punctuation">(</span>
|
||||
name<span class="token operator">=</span><span class="token string">"NoneDog"</span><span class="token punctuation">,</span> <span class="token comment"># 插件名称</span>
|
||||
version<span class="token operator">=</span><span class="token string">"1.0.0"</span><span class="token punctuation">,</span> <span class="token comment"># 插件版本</span>
|
||||
description<span class="token operator">=</span><span class="token string">"A simple plugin for nonebot developer"</span><span class="token punctuation">,</span> <span class="token comment"># 插件描述</span>
|
||||
<span class="token builtin">type</span><span class="token operator">=</span>PluginType<span class="token punctuation">.</span>SERVICE <span class="token comment"># 插件类型</span>
|
||||
<span class="token punctuation">)</span>
|
||||
|
||||
<span class="token comment"># 你的插件代码</span>
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="编写逻辑部分" tabindex="-1"><a class="header-anchor" href="#编写逻辑部分"><span>编写逻辑部分</span></a></h3><p>轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信 以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载 <code>watch_dog.py</code></p><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> os
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>dev <span class="token keyword">import</span> observer <span class="token comment"># 导入文件系统观察器</span>
|
||||
<span class="token keyword">from</span> liteyuki <span class="token keyword">import</span> get_bot<span class="token punctuation">,</span> logger <span class="token comment"># 导入轻雪Bot和日志</span>
|
||||
<span class="token keyword">from</span> watchdog<span class="token punctuation">.</span>events <span class="token keyword">import</span> FileSystemEvent <span class="token comment"># 导入文件系统事件</span>
|
||||
|
||||
liteyuki <span class="token operator">=</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># 获取唯一的轻雪Bot实例</span>
|
||||
|
||||
exclude_extensions <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token string">".pyc"</span><span class="token punctuation">,</span> <span class="token string">".pyo"</span><span class="token punctuation">)</span> <span class="token comment"># 排除的文件扩展名</span>
|
||||
|
||||
|
||||
<span class="token comment"># 用observer的on_file_system_event装饰器监听文件系统事件</span>
|
||||
<span class="token decorator annotation punctuation">@observer<span class="token punctuation">.</span>on_file_system_event</span><span class="token punctuation">(</span>
|
||||
directories<span class="token operator">=</span><span class="token punctuation">(</span><span class="token string">"src/nonebot_plugins"</span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
event_filter<span class="token operator">=</span><span class="token keyword">lambda</span> event<span class="token punctuation">:</span> <span class="token keyword">not</span> event<span class="token punctuation">.</span>src_path<span class="token punctuation">.</span>endswith<span class="token punctuation">(</span>exclude_extensions<span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token string">"__pycache__"</span> <span class="token keyword">not</span> <span class="token keyword">in</span> event<span class="token punctuation">.</span>src_path<span class="token punctuation">)</span> <span class="token keyword">and</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isfile<span class="token punctuation">(</span>event<span class="token punctuation">.</span>src_path<span class="token punctuation">)</span>
|
||||
<span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">restart_nonebot_process</span><span class="token punctuation">(</span>event<span class="token punctuation">:</span> FileSystemEvent<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"File </span><span class="token interpolation"><span class="token punctuation">{</span>event<span class="token punctuation">.</span>src_path<span class="token punctuation">}</span></span><span class="token string"> changed, reloading nonebot..."</span></span><span class="token punctuation">)</span>
|
||||
liteyuki<span class="token punctuation">.</span>restart_process<span class="token punctuation">(</span><span class="token string">"nonebot"</span><span class="token punctuation">)</span> <span class="token comment"># 调用重启进程方法</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="加载插件" tabindex="-1"><a class="header-anchor" href="#加载插件"><span>加载插件</span></a></h3><h4 id="方法1" tabindex="-1"><a class="header-anchor" href="#方法1"><span>方法1</span></a></h4><ul><li>在配置文件中的<code>liteyuki.plugins</code>中添加你的插件路径,例如<code>watchdog_plugin</code>,重启轻雪即可加载插件。</li></ul><h4 id="方法2" tabindex="-1"><a class="header-anchor" href="#方法2"><span>方法2</span></a></h4><ul><li>使用开发工具快速运行插件,无需手动创建实例</li><li>创建入口文件,例如<code>main.py</code>,并在其中写入以下代码</li></ul><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>dev<span class="token punctuation">.</span>plugin <span class="token keyword">import</span> run_plugins
|
||||
|
||||
run_plugins<span class="token punctuation">(</span><span class="token string">"watchdog_plugin"</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后运行<code>python main.py</code>即可启动插件</p><p>启用插件后,我们在src/nonebot_plugins下创建一个文件,例如<code>test.py</code>,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程</p>`,19),o=[p];function i(c,l){return s(),a("div",null,o)}const d=n(t,[["render",i],["__file","dev_lyplugin.html.vue"]]),r=JSON.parse('{"path":"/en/dev/dev_lyplugin.html","title":"轻雪插件开发","lang":"en-US","frontmatter":{"title":"轻雪插件开发","icon":"laptop-code","order":3,"category":"开发","description":"简介 轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能 开始 创建插件 一个.py文件或一个包含__init__.py的文件夹即可被识别为插件 首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件 __init__.py 编写逻辑部分 轻雪主进程不涉及聊天部分,...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_lyplugin.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_lyplugin.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"轻雪插件开发"}],["meta",{"property":"og:description","content":"简介 轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能 开始 创建插件 一个.py文件或一个包含__init__.py的文件夹即可被识别为插件 首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件 __init__.py 编写逻辑部分 轻雪主进程不涉及聊天部分,..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"轻雪插件开发\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"开始","slug":"开始","link":"#开始","children":[{"level":3,"title":"创建插件","slug":"创建插件","link":"#创建插件","children":[]},{"level":3,"title":"编写逻辑部分","slug":"编写逻辑部分","link":"#编写逻辑部分","children":[]},{"level":3,"title":"加载插件","slug":"加载插件","link":"#加载插件","children":[]}]}],"git":{"createdTime":1723829277000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":1.68,"words":504},"filePathRelative":"en/dev/dev_lyplugin.md","localizedDate":"August 16, 2024","autoDesc":true}');export{d as comp,r as data};
|
||||
@@ -0,0 +1,35 @@
|
||||
import{_ as n,o as s,c as a,e}from"./app-BvUYPzLF.js";const t={},p=e(`<h2 id="简介" tabindex="-1"><a class="header-anchor" href="#简介"><span>简介</span></a></h2><p>轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能</p><h2 id="开始" tabindex="-1"><a class="header-anchor" href="#开始"><span>开始</span></a></h2><h3 id="创建插件" tabindex="-1"><a class="header-anchor" href="#创建插件"><span>创建插件</span></a></h3><p>一个<code>.py</code>文件或一个包含<code>__init__.py</code>的文件夹即可被识别为插件</p><p>首先创建一个文件夹,例如<code>watchdog_plugin</code>,并在其中创建一个<code>__init__.py</code>文件,即可创建一个插件</p><p><code>__init__.py</code></p><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>plugin <span class="token keyword">import</span> PluginMetadata<span class="token punctuation">,</span> PluginType
|
||||
<span class="token keyword">from</span> <span class="token punctuation">.</span>watch_dog <span class="token keyword">import</span> <span class="token operator">*</span> <span class="token comment"># 导入逻辑部分</span>
|
||||
|
||||
<span class="token comment"># 定义插件元数据</span>
|
||||
__plugin_meta__ <span class="token operator">=</span> PluginMetadata<span class="token punctuation">(</span>
|
||||
name<span class="token operator">=</span><span class="token string">"NoneDog"</span><span class="token punctuation">,</span> <span class="token comment"># 插件名称</span>
|
||||
version<span class="token operator">=</span><span class="token string">"1.0.0"</span><span class="token punctuation">,</span> <span class="token comment"># 插件版本</span>
|
||||
description<span class="token operator">=</span><span class="token string">"A simple plugin for nonebot developer"</span><span class="token punctuation">,</span> <span class="token comment"># 插件描述</span>
|
||||
<span class="token builtin">type</span><span class="token operator">=</span>PluginType<span class="token punctuation">.</span>SERVICE <span class="token comment"># 插件类型</span>
|
||||
<span class="token punctuation">)</span>
|
||||
|
||||
<span class="token comment"># 你的插件代码</span>
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="编写逻辑部分" tabindex="-1"><a class="header-anchor" href="#编写逻辑部分"><span>编写逻辑部分</span></a></h3><p>轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信 以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载 <code>watch_dog.py</code></p><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> os
|
||||
<span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>dev <span class="token keyword">import</span> observer <span class="token comment"># 导入文件系统观察器</span>
|
||||
<span class="token keyword">from</span> liteyuki <span class="token keyword">import</span> get_bot<span class="token punctuation">,</span> logger <span class="token comment"># 导入轻雪Bot和日志</span>
|
||||
<span class="token keyword">from</span> watchdog<span class="token punctuation">.</span>events <span class="token keyword">import</span> FileSystemEvent <span class="token comment"># 导入文件系统事件</span>
|
||||
|
||||
liteyuki <span class="token operator">=</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># 获取唯一的轻雪Bot实例</span>
|
||||
|
||||
exclude_extensions <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token string">".pyc"</span><span class="token punctuation">,</span> <span class="token string">".pyo"</span><span class="token punctuation">)</span> <span class="token comment"># 排除的文件扩展名</span>
|
||||
|
||||
|
||||
<span class="token comment"># 用observer的on_file_system_event装饰器监听文件系统事件</span>
|
||||
<span class="token decorator annotation punctuation">@observer<span class="token punctuation">.</span>on_file_system_event</span><span class="token punctuation">(</span>
|
||||
directories<span class="token operator">=</span><span class="token punctuation">(</span><span class="token string">"src/nonebot_plugins"</span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
event_filter<span class="token operator">=</span><span class="token keyword">lambda</span> event<span class="token punctuation">:</span> <span class="token keyword">not</span> event<span class="token punctuation">.</span>src_path<span class="token punctuation">.</span>endswith<span class="token punctuation">(</span>exclude_extensions<span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token string">"__pycache__"</span> <span class="token keyword">not</span> <span class="token keyword">in</span> event<span class="token punctuation">.</span>src_path<span class="token punctuation">)</span> <span class="token keyword">and</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isfile<span class="token punctuation">(</span>event<span class="token punctuation">.</span>src_path<span class="token punctuation">)</span>
|
||||
<span class="token punctuation">)</span>
|
||||
<span class="token keyword">def</span> <span class="token function">restart_nonebot_process</span><span class="token punctuation">(</span>event<span class="token punctuation">:</span> FileSystemEvent<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"File </span><span class="token interpolation"><span class="token punctuation">{</span>event<span class="token punctuation">.</span>src_path<span class="token punctuation">}</span></span><span class="token string"> changed, reloading nonebot..."</span></span><span class="token punctuation">)</span>
|
||||
liteyuki<span class="token punctuation">.</span>restart_process<span class="token punctuation">(</span><span class="token string">"nonebot"</span><span class="token punctuation">)</span> <span class="token comment"># 调用重启进程方法</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="加载插件" tabindex="-1"><a class="header-anchor" href="#加载插件"><span>加载插件</span></a></h3><h4 id="方法1" tabindex="-1"><a class="header-anchor" href="#方法1"><span>方法1</span></a></h4><ul><li>在配置文件中的<code>liteyuki.plugins</code>中添加你的插件路径,例如<code>watchdog_plugin</code>,重启轻雪即可加载插件。</li></ul><h4 id="方法2" tabindex="-1"><a class="header-anchor" href="#方法2"><span>方法2</span></a></h4><ul><li>使用开发工具快速运行插件,无需手动创建实例</li><li>创建入口文件,例如<code>main.py</code>,并在其中写入以下代码</li></ul><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">from</span> liteyuki<span class="token punctuation">.</span>dev<span class="token punctuation">.</span>plugin <span class="token keyword">import</span> run_plugins
|
||||
|
||||
run_plugins<span class="token punctuation">(</span><span class="token string">"watchdog_plugin"</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后运行<code>python main.py</code>即可启动插件</p><p>启用插件后,我们在src/nonebot_plugins下创建一个文件,例如<code>test.py</code>,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程</p>`,19),o=[p];function i(c,l){return s(),a("div",null,o)}const d=n(t,[["render",i],["__file","dev_lyplugin.html.vue"]]),r=JSON.parse('{"path":"/dev/dev_lyplugin.html","title":"轻雪插件开发","lang":"zh-CN","frontmatter":{"title":"轻雪插件开发","icon":"laptop-code","order":3,"category":"开发","description":"简介 轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能 开始 创建插件 一个.py文件或一个包含__init__.py的文件夹即可被识别为插件 首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件 __init__.py 编写逻辑部分 轻雪主进程不涉及聊天部分,...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_lyplugin.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_lyplugin.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"轻雪插件开发"}],["meta",{"property":"og:description","content":"简介 轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能 开始 创建插件 一个.py文件或一个包含__init__.py的文件夹即可被识别为插件 首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件 __init__.py 编写逻辑部分 轻雪主进程不涉及聊天部分,..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"轻雪插件开发\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"开始","slug":"开始","link":"#开始","children":[{"level":3,"title":"创建插件","slug":"创建插件","link":"#创建插件","children":[]},{"level":3,"title":"编写逻辑部分","slug":"编写逻辑部分","link":"#编写逻辑部分","children":[]},{"level":3,"title":"加载插件","slug":"加载插件","link":"#加载插件","children":[]}]}],"git":{"createdTime":1723411596000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":6}]},"readingTime":{"minutes":1.68,"words":504},"filePathRelative":"dev/dev_lyplugin.md","localizedDate":"2024年8月11日","autoDesc":true}');export{d as comp,r as data};
|
||||
@@ -0,0 +1,15 @@
|
||||
import{_ as a,r as s,o as l,c as o,b as e,a as i,w as c,d as t,e as d}from"./app-BvUYPzLF.js";const r={},p=e("h2",{id:"简介",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#简介"},[e("span",null,"简介")])],-1),u=e("p",null,"资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码",-1),m=e("li",null,[t("资源包的制作很简单,如果你接触过"),e("code",null,"Minecraft"),t("的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。")],-1),h=e("li",null,[t("部分内容制作需要一点点前端基础,例如"),e("code",null,"html"),t(","),e("code",null,"css")],-1),v=e("li",null,[t("轻雪原版资源包请查看"),e("code",null,"LiteyukiBot/liteyuki/resources"),t(",可以在此基础上进行修改")],-1),_=e("li",null,"欢迎各位投稿资源包到轻雪资源商店",-1),k=d(`<p>请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。</p><hr><h2 id="加载资源包" tabindex="-1"><a class="header-anchor" href="#加载资源包"><span>加载资源包</span></a></h2><ul><li>资源包通常是以<code>.zip</code>格式压缩的,只需要将其解压到根目录<code>resources</code>目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的</li></ul><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>main.py
|
||||
resources
|
||||
└─resource_pack_1
|
||||
├─metadata.yml
|
||||
├─templates
|
||||
└───<span class="token punctuation">..</span>.
|
||||
└─resource_pack_2
|
||||
├─metadata.yml
|
||||
└─<span class="token punctuation">..</span>.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>你自己制作的资源包也应该遵循这个规则,并且应该在<code>metadata.yml</code>中填写一些信息</li><li>若没有<code>metadata.yml</code>文件,则该文件夹不会被识别为资源包</li></ul><div class="language-yaml line-numbers-mode" data-ext="yml" data-title="yml"><pre class="language-yaml"><code><span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">"资源包名称"</span>
|
||||
<span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">"1.0.0"</span>
|
||||
<span class="token key atrule">description</span><span class="token punctuation">:</span> <span class="token string">"资源包描述"</span>
|
||||
<span class="token comment"># 你可以自定义一些信息,但请保证以上三个字段</span>
|
||||
<span class="token punctuation">...</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个<code>index.html</code>文件,B包也定义了一个<code>index.html</code>文件,那么加载B包后,A包中的<code>index.html</code>文件会被覆盖</li><li>对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了<code>templates/index.html</code>,在B中定义了<code>templates/style.css</code>,可以在A的<code>index.html</code>中用<code>./style.css</code>相对路径引用B中的css</li></ul><div class="hint-container tip"><p class="hint-container-title">提示</p><p>资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包</p></div>`,9);function y(g,b){const n=s("RouteLink");return l(),o("div",null,[p,u,e("ul",null,[e("li",null,[i(n,{to:"/store/"},{default:c(()=>[t("资源/主题商店")]),_:1}),t("提供了一些资源包供你选择,你也可以自己制作资源包")]),m,h,v,_]),k])}const x=a(r,[["render",y],["__file","dev_resource_pack.html.vue"]]),B=JSON.parse('{"path":"/dev/dev_resource_pack.html","title":"资源包开发","lang":"zh-CN","frontmatter":{"title":"资源包开发","icon":"box","order":1,"category":"开发","description":"简介 资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码 提供了一些资源包供你选择,你也可以自己制作资源包 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。 部分内容制作需要一点点前端基础,例如html,c...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_resource_pack.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_resource_pack.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"资源包开发"}],["meta",{"property":"og:description","content":"简介 资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码 提供了一些资源包供你选择,你也可以自己制作资源包 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。 部分内容制作需要一点点前端基础,例如html,c..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"资源包开发\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"加载资源包","slug":"加载资源包","link":"#加载资源包","children":[]}],"git":{"createdTime":1723411596000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":3}]},"readingTime":{"minutes":2.15,"words":644},"filePathRelative":"dev/dev_resource_pack.md","localizedDate":"2024年8月11日","autoDesc":true}');export{x as comp,B as data};
|
||||
@@ -0,0 +1,15 @@
|
||||
import{_ as a,r as s,o as l,c as o,b as e,a as i,w as c,d as t,e as d}from"./app-BvUYPzLF.js";const r={},p=e("h2",{id:"简介",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#简介"},[e("span",null,"简介")])],-1),u=e("p",null,"资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码",-1),m=e("li",null,[t("资源包的制作很简单,如果你接触过"),e("code",null,"Minecraft"),t("的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。")],-1),h=e("li",null,[t("部分内容制作需要一点点前端基础,例如"),e("code",null,"html"),t(","),e("code",null,"css")],-1),v=e("li",null,[t("轻雪原版资源包请查看"),e("code",null,"LiteyukiBot/liteyuki/resources"),t(",可以在此基础上进行修改")],-1),_=e("li",null,"欢迎各位投稿资源包到轻雪资源商店",-1),k=d(`<p>请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。</p><hr><h2 id="加载资源包" tabindex="-1"><a class="header-anchor" href="#加载资源包"><span>加载资源包</span></a></h2><ul><li>资源包通常是以<code>.zip</code>格式压缩的,只需要将其解压到根目录<code>resources</code>目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的</li></ul><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>main.py
|
||||
resources
|
||||
└─resource_pack_1
|
||||
├─metadata.yml
|
||||
├─templates
|
||||
└───<span class="token punctuation">..</span>.
|
||||
└─resource_pack_2
|
||||
├─metadata.yml
|
||||
└─<span class="token punctuation">..</span>.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>你自己制作的资源包也应该遵循这个规则,并且应该在<code>metadata.yml</code>中填写一些信息</li><li>若没有<code>metadata.yml</code>文件,则该文件夹不会被识别为资源包</li></ul><div class="language-yaml line-numbers-mode" data-ext="yml" data-title="yml"><pre class="language-yaml"><code><span class="token key atrule">name</span><span class="token punctuation">:</span> <span class="token string">"资源包名称"</span>
|
||||
<span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">"1.0.0"</span>
|
||||
<span class="token key atrule">description</span><span class="token punctuation">:</span> <span class="token string">"资源包描述"</span>
|
||||
<span class="token comment"># 你可以自定义一些信息,但请保证以上三个字段</span>
|
||||
<span class="token punctuation">...</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个<code>index.html</code>文件,B包也定义了一个<code>index.html</code>文件,那么加载B包后,A包中的<code>index.html</code>文件会被覆盖</li><li>对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了<code>templates/index.html</code>,在B中定义了<code>templates/style.css</code>,可以在A的<code>index.html</code>中用<code>./style.css</code>相对路径引用B中的css</li></ul><div class="hint-container tip"><p class="hint-container-title">Tips</p><p>资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包</p></div>`,9);function y(g,b){const n=s("RouteLink");return l(),o("div",null,[p,u,e("ul",null,[e("li",null,[i(n,{to:"/store/"},{default:c(()=>[t("资源/主题商店")]),_:1}),t("提供了一些资源包供你选择,你也可以自己制作资源包")]),m,h,v,_]),k])}const x=a(r,[["render",y],["__file","dev_resource_pack.html.vue"]]),B=JSON.parse('{"path":"/en/dev/dev_resource_pack.html","title":"资源包开发","lang":"en-US","frontmatter":{"title":"资源包开发","icon":"box","order":1,"category":"开发","description":"简介 资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码 提供了一些资源包供你选择,你也可以自己制作资源包 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。 部分内容制作需要一点点前端基础,例如html,c...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/dev_resource_pack.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/dev_resource_pack.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"资源包开发"}],["meta",{"property":"og:description","content":"简介 资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码 提供了一些资源包供你选择,你也可以自己制作资源包 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。 部分内容制作需要一点点前端基础,例如html,c..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"资源包开发\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"加载资源包","slug":"加载资源包","link":"#加载资源包","children":[]}],"git":{"createdTime":1723829277000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":2.15,"words":644},"filePathRelative":"en/dev/dev_resource_pack.md","localizedDate":"August 16, 2024","autoDesc":true}');export{x as comp,B as data};
|
||||
@@ -0,0 +1,38 @@
|
||||
import{_ as s,o as n,c as a,e}from"./app-BvUYPzLF.js";const t={},p=e(`<h1 id="liteyuki-message-event" tabindex="-1"><a class="header-anchor" href="#liteyuki-message-event"><span>liteyuki.message.event</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm</p><h3 id="class-messageevent" tabindex="-1"><a class="header-anchor" href="#class-messageevent"><span><em><strong>class</strong></em> <code>MessageEvent</code></span></a></h3><h4 id="def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none"><span><em><strong>def</strong></em> <code>__init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)</code></span></a></h4><p><strong>Description</strong>: 轻雪抽象消息事件</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/event.py#L18" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> bot_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">|</span> <span class="token builtin">str</span><span class="token punctuation">,</span> message_type<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> raw_message<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> session_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> user_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> session_type<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> receive_channel<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span><span class="token string">'MessageEvent'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
轻雪抽象消息事件
|
||||
Args:
|
||||
|
||||
bot_id: 机器人ID
|
||||
message: 消息,消息段数组[{type: str, data: dict[str, Any]}]
|
||||
raw_message: 原始消息(通常为纯文本的格式)
|
||||
message_type: 消息类型(private, group, other)
|
||||
|
||||
session_id: 会话ID(私聊通常为用户ID,群聊通常为群ID)
|
||||
session_type: 会话类型(private, group)
|
||||
receive_channel: 接收频道(用于回复消息)
|
||||
|
||||
data: 附加数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> data <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
self<span class="token punctuation">.</span>message_type <span class="token operator">=</span> message_type
|
||||
self<span class="token punctuation">.</span>data <span class="token operator">=</span> data
|
||||
self<span class="token punctuation">.</span>bot_id <span class="token operator">=</span> bot_id
|
||||
self<span class="token punctuation">.</span>message <span class="token operator">=</span> message
|
||||
self<span class="token punctuation">.</span>raw_message <span class="token operator">=</span> raw_message
|
||||
self<span class="token punctuation">.</span>session_id <span class="token operator">=</span> session_id
|
||||
self<span class="token punctuation">.</span>session_type <span class="token operator">=</span> session_type
|
||||
self<span class="token punctuation">.</span>user_id <span class="token operator">=</span> user_id
|
||||
self<span class="token punctuation">.</span>receive_channel <span class="token operator">=</span> receive_channel
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-reply-self-message-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-reply-self-message-str-dict-str-any"><span><em><strong>def</strong></em> <code>reply(self, message: str | dict[str, Any])</code></span></a></h4><p><strong>Description</strong>: 回复消息</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>message:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/event.py#L66" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">reply</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">|</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
回复消息
|
||||
Args:
|
||||
message:
|
||||
Returns:
|
||||
"""</span>
|
||||
reply_event <span class="token operator">=</span> MessageEvent<span class="token punctuation">(</span>message_type<span class="token operator">=</span>self<span class="token punctuation">.</span>session_type<span class="token punctuation">,</span> message<span class="token operator">=</span>message<span class="token punctuation">,</span> raw_message<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">,</span> data<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'message'</span><span class="token punctuation">:</span> message<span class="token punctuation">}</span><span class="token punctuation">,</span> bot_id<span class="token operator">=</span>self<span class="token punctuation">.</span>bot_id<span class="token punctuation">,</span> session_id<span class="token operator">=</span>self<span class="token punctuation">.</span>session_id<span class="token punctuation">,</span> user_id<span class="token operator">=</span>self<span class="token punctuation">.</span>user_id<span class="token punctuation">,</span> session_type<span class="token operator">=</span>self<span class="token punctuation">.</span>session_type<span class="token punctuation">,</span> receive_channel<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>receive_channel<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>receive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span>reply_event<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,12),o=[p];function i(l,c){return n(),a("div",null,o)}const u=s(t,[["render",i],["__file","event.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/message/event.html","title":"liteyuki.message.event","lang":"en-US","frontmatter":{"title":"liteyuki.message.event","lastUpdated":false,"description":"liteyuki.message.event Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @Fil...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/event.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/event.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.message.event"}],["meta",{"property":"og:description","content":"liteyuki.message.event Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @Fil..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message.event\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class MessageEvent","slug":"class-messageevent","link":"#class-messageevent","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":1.05,"words":314},"filePathRelative":"en/dev/api/message/event.md","localizedDate":"August 21, 2024","autoDesc":true}');export{u as comp,d as data};
|
||||
@@ -0,0 +1,4 @@
|
||||
import{_ as e,o as t,c as n,e as a}from"./app-BvUYPzLF.js";const s={},o=a(`<h1 id="liteyuki-comm-event" tabindex="-1"><a class="header-anchor" href="#liteyuki-comm-event"><span>liteyuki.comm.event</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm</p><h3 id="class-event" tabindex="-1"><a class="header-anchor" href="#class-event"><span><em><strong>class</strong></em> <code>Event</code></span></a></h3><h4 id="def-init-self-name-str-data-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-init-self-name-str-data-dict-str-any"><span><em><strong>def</strong></em> <code>__init__(self, name: str, data: dict[str, Any])</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/event.py#L19" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>name <span class="token operator">=</span> name
|
||||
self<span class="token punctuation">.</span>data <span class="token operator">=</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),i=[o];function c(p,l){return t(),n("div",null,i)}const m=e(s,[["render",c],["__file","event.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/comm/event.html","title":"liteyuki.comm.event","lang":"en-US","frontmatter":{"title":"liteyuki.comm.event","lastUpdated":false,"description":"liteyuki.comm.event Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File :...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/event.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/event.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.comm.event"}],["meta",{"property":"og:description","content":"liteyuki.comm.event Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File :..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm.event\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Event","slug":"class-event","link":"#class-event","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.24,"words":73},"filePathRelative":"en/dev/api/comm/event.md","localizedDate":"August 21, 2024","autoDesc":true}');export{m as comp,d as data};
|
||||
@@ -0,0 +1,4 @@
|
||||
import{_ as e,o as t,c as n,e as a}from"./app-BvUYPzLF.js";const s={},o=a(`<h1 id="liteyuki-comm-event" tabindex="-1"><a class="header-anchor" href="#liteyuki-comm-event"><span>liteyuki.comm.event</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm</p><h3 id="class-event" tabindex="-1"><a class="header-anchor" href="#class-event"><span><em><strong>class</strong></em> <code>Event</code></span></a></h3><h4 id="def-init-self-name-str-data-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-init-self-name-str-data-dict-str-any"><span><em><strong>def</strong></em> <code>__init__(self, name: str, data: dict[str, Any])</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/comm/event.py#L19" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>name <span class="token operator">=</span> name
|
||||
self<span class="token punctuation">.</span>data <span class="token operator">=</span> data
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),i=[o];function p(c,l){return t(),n("div",null,i)}const m=e(s,[["render",p],["__file","event.html.vue"]]),d=JSON.parse('{"path":"/dev/api/comm/event.html","title":"liteyuki.comm.event","lang":"zh-CN","frontmatter":{"title":"liteyuki.comm.event","lastUpdated":false,"description":"liteyuki.comm.event 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/event.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/event.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.comm.event"}],["meta",{"property":"og:description","content":"liteyuki.comm.event 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm.event\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Event","slug":"class-event","link":"#class-event","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":0.26,"words":77},"filePathRelative":"dev/api/comm/event.md","localizedDate":"2024年8月19日","autoDesc":true}');export{m as comp,d as data};
|
||||
@@ -0,0 +1,38 @@
|
||||
import{_ as s,o as n,c as a,e}from"./app-BvUYPzLF.js";const t={},p=e(`<h1 id="liteyuki-message-event" tabindex="-1"><a class="header-anchor" href="#liteyuki-message-event"><span>liteyuki.message.event</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm</p><h3 id="class-messageevent" tabindex="-1"><a class="header-anchor" href="#class-messageevent"><span><em><strong>class</strong></em> <code>MessageEvent</code></span></a></h3><h4 id="def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none"><span><em><strong>def</strong></em> <code>__init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)</code></span></a></h4><p><strong>说明</strong>: 轻雪抽象消息事件</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/event.py#L18" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> bot_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">|</span> <span class="token builtin">str</span><span class="token punctuation">,</span> message_type<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> raw_message<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> session_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> user_id<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> session_type<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> receive_channel<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span><span class="token string">'MessageEvent'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> data<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
轻雪抽象消息事件
|
||||
Args:
|
||||
|
||||
bot_id: 机器人ID
|
||||
message: 消息,消息段数组[{type: str, data: dict[str, Any]}]
|
||||
raw_message: 原始消息(通常为纯文本的格式)
|
||||
message_type: 消息类型(private, group, other)
|
||||
|
||||
session_id: 会话ID(私聊通常为用户ID,群聊通常为群ID)
|
||||
session_type: 会话类型(private, group)
|
||||
receive_channel: 接收频道(用于回复消息)
|
||||
|
||||
data: 附加数据
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> data <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
self<span class="token punctuation">.</span>message_type <span class="token operator">=</span> message_type
|
||||
self<span class="token punctuation">.</span>data <span class="token operator">=</span> data
|
||||
self<span class="token punctuation">.</span>bot_id <span class="token operator">=</span> bot_id
|
||||
self<span class="token punctuation">.</span>message <span class="token operator">=</span> message
|
||||
self<span class="token punctuation">.</span>raw_message <span class="token operator">=</span> raw_message
|
||||
self<span class="token punctuation">.</span>session_id <span class="token operator">=</span> session_id
|
||||
self<span class="token punctuation">.</span>session_type <span class="token operator">=</span> session_type
|
||||
self<span class="token punctuation">.</span>user_id <span class="token operator">=</span> user_id
|
||||
self<span class="token punctuation">.</span>receive_channel <span class="token operator">=</span> receive_channel
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-reply-self-message-str-dict-str-any" tabindex="-1"><a class="header-anchor" href="#def-reply-self-message-str-dict-str-any"><span><em><strong>def</strong></em> <code>reply(self, message: str | dict[str, Any])</code></span></a></h4><p><strong>说明</strong>: 回复消息</p><p><strong>参数</strong>:</p><blockquote><ul><li>message:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/event.py#L66" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">reply</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">|</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
回复消息
|
||||
Args:
|
||||
message:
|
||||
Returns:
|
||||
"""</span>
|
||||
reply_event <span class="token operator">=</span> MessageEvent<span class="token punctuation">(</span>message_type<span class="token operator">=</span>self<span class="token punctuation">.</span>session_type<span class="token punctuation">,</span> message<span class="token operator">=</span>message<span class="token punctuation">,</span> raw_message<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">,</span> data<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'message'</span><span class="token punctuation">:</span> message<span class="token punctuation">}</span><span class="token punctuation">,</span> bot_id<span class="token operator">=</span>self<span class="token punctuation">.</span>bot_id<span class="token punctuation">,</span> session_id<span class="token operator">=</span>self<span class="token punctuation">.</span>session_id<span class="token punctuation">,</span> user_id<span class="token operator">=</span>self<span class="token punctuation">.</span>user_id<span class="token punctuation">,</span> session_type<span class="token operator">=</span>self<span class="token punctuation">.</span>session_type<span class="token punctuation">,</span> receive_channel<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>receive_channel<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>receive_channel<span class="token punctuation">.</span>send<span class="token punctuation">(</span>reply_event<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,12),o=[p];function i(l,c){return n(),a("div",null,o)}const r=s(t,[["render",i],["__file","event.html.vue"]]),d=JSON.parse('{"path":"/dev/api/message/event.html","title":"liteyuki.message.event","lang":"zh-CN","frontmatter":{"title":"liteyuki.message.event","lastUpdated":false,"description":"liteyuki.message.event 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/event.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/event.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.message.event"}],["meta",{"property":"og:description","content":"liteyuki.message.event 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message.event\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class MessageEvent","slug":"class-messageevent","link":"#class-messageevent","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":1.08,"words":324},"filePathRelative":"dev/api/message/event.md","localizedDate":"2024年8月21日","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,o,c as n,b as e,d as t}from"./app-BvUYPzLF.js";const c={},a=e("h1",{id:"liteyuki-exception",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-exception"},[e("span",null,"liteyuki.exception")])],-1),p=e("p",null,[e("strong",null,"说明"),t(": exception模块包含了liteyuki运行中的所有错误")],-1),l=e("h3",{id:"class-liteyukiexception-baseexception",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#class-liteyukiexception-baseexception"},[e("span",null,[e("em",null,[e("strong",null,"class")]),t(),e("code",null,"LiteyukiException(BaseException)")])])],-1),s=[a,p,l];function r(d,u){return o(),n("div",null,s)}const x=i(c,[["render",r],["__file","exception.html.vue"]]),h=JSON.parse('{"path":"/dev/api/exception.html","title":"liteyuki.exception","lang":"zh-CN","frontmatter":{"title":"liteyuki.exception","lastUpdated":false,"description":"liteyuki.exception 说明: exception模块包含了liteyuki运行中的所有错误 class LiteyukiException(BaseException)","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/exception.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/exception.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.exception"}],["meta",{"property":"og:description","content":"liteyuki.exception 说明: exception模块包含了liteyuki运行中的所有错误 class LiteyukiException(BaseException)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.exception\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class LiteyukiException(BaseException)","slug":"class-liteyukiexception-baseexception","link":"#class-liteyukiexception-baseexception","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.08,"words":25},"filePathRelative":"dev/api/exception.md","localizedDate":"2024年8月19日","autoDesc":true}');export{x as comp,h as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,o,c as n,b as e,d as t}from"./app-BvUYPzLF.js";const c={},a=e("h1",{id:"liteyuki-exception",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-exception"},[e("span",null,"liteyuki.exception")])],-1),p=e("p",null,[e("strong",null,"Description"),t(": exception模块包含了liteyuki运行中的所有错误")],-1),l=e("h3",{id:"class-liteyukiexception-baseexception",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#class-liteyukiexception-baseexception"},[e("span",null,[e("em",null,[e("strong",null,"class")]),t(),e("code",null,"LiteyukiException(BaseException)")])])],-1),s=[a,p,l];function r(d,u){return o(),n("div",null,s)}const x=i(c,[["render",r],["__file","exception.html.vue"]]),h=JSON.parse('{"path":"/en/dev/api/exception.html","title":"liteyuki.exception","lang":"en-US","frontmatter":{"title":"liteyuki.exception","lastUpdated":false,"description":"liteyuki.exception Description: exception模块包含了liteyuki运行中的所有错误 class LiteyukiException(BaseException)","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/exception.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/exception.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.exception"}],["meta",{"property":"og:description","content":"liteyuki.exception Description: exception模块包含了liteyuki运行中的所有错误 class LiteyukiException(BaseException)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.exception\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class LiteyukiException(BaseException)","slug":"class-liteyukiexception-baseexception","link":"#class-liteyukiexception-baseexception","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.08,"words":24},"filePathRelative":"en/dev/api/exception.md","localizedDate":"August 21, 2024","autoDesc":true}');export{x as comp,h as data};
|
||||
@@ -0,0 +1,5 @@
|
||||
import{_ as t,o as e,c as a,e as n}from"./app-BvUYPzLF.js";const s={},r=n(`<h2 id="功能插件命令" tabindex="-1"><a class="header-anchor" href="#功能插件命令"><span>功能插件命令</span></a></h2><h3 id="轻雪天气liteyuki-weather" tabindex="-1"><a class="header-anchor" href="#轻雪天气liteyuki-weather"><span><strong>轻雪天气<code>liteyuki_weather</code></strong></span></a></h3><p>查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。</p><p>配置项</p><div class="language-yaml line-numbers-mode" data-ext="yml" data-title="yml"><pre class="language-yaml"><code><span class="token key atrule">weather_key</span><span class="token punctuation">:</span> <span class="token string">""</span> <span class="token comment"># 和风天气的天气key,会自动判断key版本</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>命令</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>weather <span class="token operator"><</span>keywords<span class="token punctuation">..</span>.<span class="token operator">></span> <span class="token comment"># Keywords为城市名,支持中英文</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>查询目标地实时天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>bind-city <span class="token operator"><</span>keywords<span class="token punctuation">..</span>.<span class="token operator">></span> <span class="token comment"># Keywords为城市名,支持中英文</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>绑定查询城市,个人全局生效</p><h4 id="命令别名" tabindex="-1"><a class="header-anchor" href="#命令别名"><span>命令别名</span></a></h4><table><thead><tr><th style="text-align:center;">命令</th><th style="text-align:left;">别名</th></tr></thead><tbody><tr><td style="text-align:center;">weather</td><td style="text-align:left;">天气</td></tr><tr><td style="text-align:center;">bind-city</td><td style="text-align:left;">绑定城市</td></tr></tbody></table><hr><h3 id="统计信息liteyuki-statistics" tabindex="-1"><a class="header-anchor" href="#统计信息liteyuki-statistics"><span><strong>统计信息<code>liteyuki_statistics</code></strong></span></a></h3><p>统计信息 命令</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>statistic message <span class="token parameter variable">--duration</span> <span class="token operator"><</span>duration<span class="token operator">></span> <span class="token parameter variable">--period</span> <span class="token operator"><</span>period<span class="token operator">></span> <span class="token parameter variable">--group</span> <span class="token punctuation">[</span>current<span class="token operator">|</span>group_id<span class="token punctuation">]</span> <span class="token parameter variable">--bot</span> <span class="token punctuation">[</span>current<span class="token operator">|</span>bot_id<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>功能: 用于统计Bot接收到的消息, 统计周期为<code>period</code>, 统计时间范围为<code>duration</code></p><table><thead><tr><th style="text-align:center;">参数</th><th style="text-align:center;">格式</th></tr></thead><tbody><tr><td style="text-align:center;">duration</td><td style="text-align:center;">使用通用日期简写: <code>1d</code>(天), <code>1h</code>(小时), <code>45m</code>(分钟), <code>14s</code>(秒)</td></tr><tr><td style="text-align:center;">period</td><td style="text-align:center;">使用通用日期简写: <code>1d</code>(天), <code>1h</code>(小时), <code>45m</code>(分钟), <code>14s</code>(秒)</td></tr><tr><td style="text-align:center;">group</td><td style="text-align:center;"><code>current</code> (当前群聊) 或 <code>group_id</code> (QQ群号)</td></tr><tr><td style="text-align:center;">bot</td><td style="text-align:center;"><code>current</code> (当前Bot) 或 <code>bot_id</code></td></tr></tbody></table><h4 id="命令别名-1" tabindex="-1"><a class="header-anchor" href="#命令别名-1"><span>命令别名</span></a></h4><table><thead><tr><th style="text-align:center;">命令</th><th style="text-align:center;">别名</th></tr></thead><tbody><tr><td style="text-align:center;"><code>statistic</code></td><td style="text-align:center;">stat</td></tr><tr><td style="text-align:center;"><code>message</code></td><td style="text-align:center;">m</td></tr><tr><td style="text-align:center;"><code>--duration</code></td><td style="text-align:center;">-d</td></tr><tr><td style="text-align:center;">--period\`</td><td style="text-align:center;">-p</td></tr><tr><td style="text-align:center;"><code>--group</code></td><td style="text-align:center;">-g</td></tr><tr><td style="text-align:center;"><code>--bot</code></td><td style="text-align:center;">-b</td></tr><tr><td style="text-align:center;"><code>current</code></td><td style="text-align:center;">c</td></tr></tbody></table>`,20),o=[r];function d(i,l){return e(),a("div",null,o)}const p=t(s,[["render",d],["__file","extra_command.html.vue"]]),u=JSON.parse('{"path":"/usage/extra_command.html","title":"功能命令","lang":"zh-CN","frontmatter":{"title":"功能命令","icon":"comment","order":2,"category":"使用手册","description":"功能插件命令 轻雪天气liteyuki_weather 查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。 配置项 命令 查询目标地实时天气,例如:\\"天气 北京 海淀\\", \\"weather Tokyo Shinjuku\\" 绑定查询城市,个人全局生效 命令别名 统计信息liteyuki_statistics 统计信息 命令 功能: 用于统...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/extra_command.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/extra_command.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"功能命令"}],["meta",{"property":"og:description","content":"功能插件命令 轻雪天气liteyuki_weather 查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。 配置项 命令 查询目标地实时天气,例如:\\"天气 北京 海淀\\", \\"weather Tokyo Shinjuku\\" 绑定查询城市,个人全局生效 命令别名 统计信息liteyuki_statistics 统计信息 命令 功能: 用于统..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-07-01T08:00:46.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-01T08:00:46.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"功能命令\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-07-01T08:00:46.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"功能插件命令","slug":"功能插件命令","link":"#功能插件命令","children":[{"level":3,"title":"轻雪天气liteyuki_weather","slug":"轻雪天气liteyuki-weather","link":"#轻雪天气liteyuki-weather","children":[]},{"level":3,"title":"统计信息liteyuki_statistics","slug":"统计信息liteyuki-statistics","link":"#统计信息liteyuki-statistics","children":[]}]}],"git":{"createdTime":1711598703000,"updatedTime":1719820846000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":8},{"name":"Nanaloveyuki","email":"136328617+Nanaloveyuki@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":0.95,"words":286},"filePathRelative":"usage/extra_command.md","localizedDate":"2024年3月28日","autoDesc":true}');export{p as comp,u as data};
|
||||
@@ -0,0 +1,5 @@
|
||||
import{_ as t,o as e,c as a,e as n}from"./app-BvUYPzLF.js";const s={},r=n(`<h2 id="功能插件命令" tabindex="-1"><a class="header-anchor" href="#功能插件命令"><span>功能插件命令</span></a></h2><h3 id="轻雪天气liteyuki-weather" tabindex="-1"><a class="header-anchor" href="#轻雪天气liteyuki-weather"><span><strong>轻雪天气<code>liteyuki_weather</code></strong></span></a></h3><p>查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。</p><p>配置项</p><div class="language-yaml line-numbers-mode" data-ext="yml" data-title="yml"><pre class="language-yaml"><code><span class="token key atrule">weather_key</span><span class="token punctuation">:</span> <span class="token string">""</span> <span class="token comment"># 和风天气的天气key,会自动判断key版本</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>命令</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>weather <span class="token operator"><</span>keywords<span class="token punctuation">..</span>.<span class="token operator">></span> <span class="token comment"># Keywords为城市名,支持中英文</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>查询目标地实时天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>bind-city <span class="token operator"><</span>keywords<span class="token punctuation">..</span>.<span class="token operator">></span> <span class="token comment"># Keywords为城市名,支持中英文</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>绑定查询城市,个人全局生效</p><h4 id="命令别名" tabindex="-1"><a class="header-anchor" href="#命令别名"><span>命令别名</span></a></h4><table><thead><tr><th style="text-align:center;">命令</th><th style="text-align:left;">别名</th></tr></thead><tbody><tr><td style="text-align:center;">weather</td><td style="text-align:left;">天气</td></tr><tr><td style="text-align:center;">bind-city</td><td style="text-align:left;">绑定城市</td></tr></tbody></table><hr><h3 id="统计信息liteyuki-statistics" tabindex="-1"><a class="header-anchor" href="#统计信息liteyuki-statistics"><span><strong>统计信息<code>liteyuki_statistics</code></strong></span></a></h3><p>统计信息 命令</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>statistic message <span class="token parameter variable">--duration</span> <span class="token operator"><</span>duration<span class="token operator">></span> <span class="token parameter variable">--period</span> <span class="token operator"><</span>period<span class="token operator">></span> <span class="token parameter variable">--group</span> <span class="token punctuation">[</span>current<span class="token operator">|</span>group_id<span class="token punctuation">]</span> <span class="token parameter variable">--bot</span> <span class="token punctuation">[</span>current<span class="token operator">|</span>bot_id<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>功能: 用于统计Bot接收到的消息, 统计周期为<code>period</code>, 统计时间范围为<code>duration</code></p><table><thead><tr><th style="text-align:center;">参数</th><th style="text-align:center;">格式</th></tr></thead><tbody><tr><td style="text-align:center;">duration</td><td style="text-align:center;">使用通用日期简写: <code>1d</code>(天), <code>1h</code>(小时), <code>45m</code>(分钟), <code>14s</code>(秒)</td></tr><tr><td style="text-align:center;">period</td><td style="text-align:center;">使用通用日期简写: <code>1d</code>(天), <code>1h</code>(小时), <code>45m</code>(分钟), <code>14s</code>(秒)</td></tr><tr><td style="text-align:center;">group</td><td style="text-align:center;"><code>current</code> (当前群聊) 或 <code>group_id</code> (QQ群号)</td></tr><tr><td style="text-align:center;">bot</td><td style="text-align:center;"><code>current</code> (当前Bot) 或 <code>bot_id</code></td></tr></tbody></table><h4 id="命令别名-1" tabindex="-1"><a class="header-anchor" href="#命令别名-1"><span>命令别名</span></a></h4><table><thead><tr><th style="text-align:center;">命令</th><th style="text-align:center;">别名</th></tr></thead><tbody><tr><td style="text-align:center;"><code>statistic</code></td><td style="text-align:center;">stat</td></tr><tr><td style="text-align:center;"><code>message</code></td><td style="text-align:center;">m</td></tr><tr><td style="text-align:center;"><code>--duration</code></td><td style="text-align:center;">-d</td></tr><tr><td style="text-align:center;">--period\`</td><td style="text-align:center;">-p</td></tr><tr><td style="text-align:center;"><code>--group</code></td><td style="text-align:center;">-g</td></tr><tr><td style="text-align:center;"><code>--bot</code></td><td style="text-align:center;">-b</td></tr><tr><td style="text-align:center;"><code>current</code></td><td style="text-align:center;">c</td></tr></tbody></table>`,20),o=[r];function d(i,l){return e(),a("div",null,o)}const p=t(s,[["render",d],["__file","extra_command.html.vue"]]),h=JSON.parse('{"path":"/en/usage/extra_command.html","title":"Extra Commands","lang":"en-US","frontmatter":{"title":"Extra Commands","icon":"comment","order":2,"category":"usage","description":"功能插件命令 轻雪天气liteyuki_weather 查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。 配置项 命令 查询目标地实时天气,例如:\\"天气 北京 海淀\\", \\"weather Tokyo Shinjuku\\" 绑定查询城市,个人全局生效 命令别名 统计信息liteyuki_statistics 统计信息 命令 功能: 用于统...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/extra_command.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/extra_command.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"Extra Commands"}],["meta",{"property":"og:description","content":"功能插件命令 轻雪天气liteyuki_weather 查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。 配置项 命令 查询目标地实时天气,例如:\\"天气 北京 海淀\\", \\"weather Tokyo Shinjuku\\" 绑定查询城市,个人全局生效 命令别名 统计信息liteyuki_statistics 统计信息 命令 功能: 用于统..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Extra Commands\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"功能插件命令","slug":"功能插件命令","link":"#功能插件命令","children":[{"level":3,"title":"轻雪天气liteyuki_weather","slug":"轻雪天气liteyuki-weather","link":"#轻雪天气liteyuki-weather","children":[]},{"level":3,"title":"统计信息liteyuki_statistics","slug":"统计信息liteyuki-statistics","link":"#统计信息liteyuki-statistics","children":[]}]}],"git":{"createdTime":1723829277000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.94,"words":281},"filePathRelative":"en/usage/extra_command.md","localizedDate":"August 16, 2024","autoDesc":true}');export{p as comp,h as data};
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
|
After Width: | Height: | Size: 9.0 KiB |
@@ -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 |
@@ -0,0 +1 @@
|
||||
import{_ as t,r as n,o,c as a,a as s}from"./app-BvUYPzLF.js";const p={};function l(r,i){const e=n("Catalog");return o(),a("div",null,[s(e)])}const m=t(p,[["render",l],["__file","index.html.vue"]]),g=JSON.parse('{"path":"/en/dev/api/plugins/","title":"Plugins","lang":"zh-CN","frontmatter":{"title":"Plugins","article":false,"feed":false,"sitemap":false,"head":[["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"Plugins"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Plugins\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null}');export{m as comp,g as data};
|
||||
@@ -0,0 +1,231 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},i=t(`<h1 id="liteyuki-bot" tabindex="-1"><a class="header-anchor" href="#liteyuki-bot"><span>liteyuki.bot</span></a></h1><h3 id="class-liteyukibot" tabindex="-1"><a class="header-anchor" href="#class-liteyukibot"><span><em><strong>class</strong></em> <code>LiteyukiBot</code></span></a></h3><h4 id="def-init-self-args-kwargs-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-args-kwargs-none"><span><em><strong>def</strong></em> <code>__init__(self, *args, **kwargs) -> None</code></span></a></h4><p><strong>说明</strong>: 初始化轻雪实例</p><p><strong>参数</strong>:</p><blockquote><ul><li>*args:</li><li>**kwargs: 配置</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L27" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化轻雪实例
|
||||
Args:
|
||||
*args:
|
||||
**kwargs: 配置
|
||||
|
||||
"""</span>
|
||||
<span class="token string">'常规操作'</span>
|
||||
print_logo<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">global</span> _BOT_INSTANCE
|
||||
_BOT_INSTANCE <span class="token operator">=</span> self
|
||||
<span class="token string">'配置'</span>
|
||||
self<span class="token punctuation">.</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span> <span class="token operator">=</span> kwargs
|
||||
<span class="token string">'初始化'</span>
|
||||
self<span class="token punctuation">.</span>init<span class="token punctuation">(</span><span class="token operator">**</span>self<span class="token punctuation">.</span>config<span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is initializing...'</span><span class="token punctuation">)</span>
|
||||
<span class="token string">'生命周期管理'</span>
|
||||
self<span class="token punctuation">.</span>lifespan <span class="token operator">=</span> Lifespan<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>process_manager<span class="token punctuation">:</span> ProcessManager <span class="token operator">=</span> ProcessManager<span class="token punctuation">(</span>lifespan<span class="token operator">=</span>self<span class="token punctuation">.</span>lifespan<span class="token punctuation">)</span>
|
||||
<span class="token string">'事件循环'</span>
|
||||
self<span class="token punctuation">.</span>loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>new_event_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
asyncio<span class="token punctuation">.</span>set_event_loop<span class="token punctuation">(</span>self<span class="token punctuation">.</span>loop<span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop_event <span class="token operator">=</span> threading<span class="token punctuation">.</span>Event<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>call_restart_count <span class="token operator">=</span> <span class="token number">0</span>
|
||||
<span class="token string">'加载插件加载器'</span>
|
||||
load_plugin<span class="token punctuation">(</span><span class="token string">'liteyuki.plugins.plugin_loader'</span><span class="token punctuation">)</span>
|
||||
<span class="token string">'信号处理'</span>
|
||||
signal<span class="token punctuation">.</span>signal<span class="token punctuation">(</span>signal<span class="token punctuation">.</span>SIGINT<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_handle_exit<span class="token punctuation">)</span>
|
||||
signal<span class="token punctuation">.</span>signal<span class="token punctuation">(</span>signal<span class="token punctuation">.</span>SIGTERM<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_handle_exit<span class="token punctuation">)</span>
|
||||
atexit<span class="token punctuation">.</span>register<span class="token punctuation">(</span>self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>terminate_all<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-self" tabindex="-1"><a class="header-anchor" href="#async-def-run-self"><span><em><strong>async def</strong></em> <code>_run(self)</code></span></a></h4><p><strong>说明</strong>: 启动逻辑</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L65" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动逻辑
|
||||
"""</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>start_all<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>after_start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>keep_alive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-run-self" tabindex="-1"><a class="header-anchor" href="#def-run-self"><span><em><strong>def</strong></em> <code>run(self)</code></span></a></h4><p><strong>说明</strong>: 外部启动接口</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L74" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">run</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
外部启动接口
|
||||
"""</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
asyncio<span class="token punctuation">.</span>run<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_run<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is stopping...'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-keep-alive-self" tabindex="-1"><a class="header-anchor" href="#async-def-keep-alive-self"><span><em><strong>async def</strong></em> <code>keep_alive(self)</code></span></a></h4><p><strong>说明</strong>: 保持轻雪运行</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L83" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">keep_alive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
保持轻雪运行
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token keyword">not</span> self<span class="token punctuation">.</span>stop_event<span class="token punctuation">.</span>is_set<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is stopping...'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-handle-exit-self-signum-frame" tabindex="-1"><a class="header-anchor" href="#def-handle-exit-self-signum-frame"><span><em><strong>def</strong></em> <code>_handle_exit(self, signum, frame)</code></span></a></h4><p><strong>说明</strong>: 信号处理</p><p><strong>参数</strong>:</p><blockquote><ul><li>signum:</li><li>frame:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L96" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_handle_exit</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> signum<span class="token punctuation">,</span> frame<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
信号处理
|
||||
Args:
|
||||
signum:
|
||||
frame:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Received signal, stopping all processes.'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-restart-self-delay-int-0" tabindex="-1"><a class="header-anchor" href="#def-restart-self-delay-int-0"><span><em><strong>def</strong></em> <code>restart(self, delay: int = 0)</code></span></a></h4><p><strong>说明</strong>: 重启轻雪本体</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L110" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> delay<span class="token punctuation">:</span> <span class="token builtin">int</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启轻雪本体
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>call_restart_count <span class="token operator"><</span> <span class="token number">1</span><span class="token punctuation">:</span>
|
||||
executable <span class="token operator">=</span> sys<span class="token punctuation">.</span>executable
|
||||
args <span class="token operator">=</span> sys<span class="token punctuation">.</span>argv
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Restarting LiteyukiBot...'</span><span class="token punctuation">)</span>
|
||||
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span>delay<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Windows'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'start'</span>
|
||||
<span class="token keyword">elif</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Linux'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'nohup'</span>
|
||||
<span class="token keyword">elif</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Darwin'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'open'</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'nohup'</span>
|
||||
self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>terminate_all<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
threading<span class="token punctuation">.</span>Thread<span class="token punctuation">(</span>target<span class="token operator">=</span>os<span class="token punctuation">.</span>system<span class="token punctuation">,</span> args<span class="token operator">=</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>cmd<span class="token punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token punctuation">{</span>executable<span class="token punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>args<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>call_restart_count <span class="token operator">+=</span> <span class="token number">1</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-restart-process-self-name-optional-str-none" tabindex="-1"><a class="header-anchor" href="#def-restart-process-self-name-optional-str-none"><span><em><strong>def</strong></em> <code>restart_process(self, name: Optional[str] = None)</code></span></a></h4><p><strong>说明</strong>: 停止轻雪</p><p><strong>参数</strong>:</p><blockquote><ul><li>name: 进程名称, 默认为None, 所有进程</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L135" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">restart_process</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止轻雪
|
||||
Args:
|
||||
name: 进程名称, 默认为None, 所有进程
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> process_name <span class="token keyword">in</span> self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>processes<span class="token punctuation">:</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>process_name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-init-self-args-kwargs" tabindex="-1"><a class="header-anchor" href="#def-init-self-args-kwargs"><span><em><strong>def</strong></em> <code>init(self, *args, **kwargs)</code></span></a></h4><p><strong>说明</strong>: 初始化轻雪, 自动调用</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L150" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化轻雪, 自动调用
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>init_logger<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-init-logger-self" tabindex="-1"><a class="header-anchor" href="#def-init-logger-self"><span><em><strong>def</strong></em> <code>init_logger(self)</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L158" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init_logger</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
init_log<span class="token punctuation">(</span>config<span class="token operator">=</span>self<span class="token punctuation">.</span>config<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-stop-self" tabindex="-1"><a class="header-anchor" href="#def-stop-self"><span><em><strong>def</strong></em> <code>stop(self)</code></span></a></h4><p><strong>说明</strong>: 停止轻雪</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L162" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">stop</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止轻雪
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>stop_event<span class="token punctuation">.</span><span class="token builtin">set</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>loop<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-start-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_start(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册启动前的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L171" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动前的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_start<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-start-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_start(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册启动后的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L182" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动后的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_start<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-shutdown-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册停止后的函数:未实现</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L193" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止后的函数:未实现
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_shutdown<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-shutdown-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册进程停止前的函数,为子进程停止时调用</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L204" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册进程停止前的函数,为子进程停止时调用
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_process_shutdown<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-restart-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册进程重启前的函数,为子进程重启时调用</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L215" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册进程重启前的函数,为子进程重启时调用
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_process_restart<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-restart-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_restart(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>说明</strong>: 注册重启后的函数:未实现</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L227" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启后的函数:未实现
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_restart<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-bot-liteyukibot" tabindex="-1"><a class="header-anchor" href="#def-get-bot-liteyukibot"><span><em><strong>def</strong></em> <code>get_bot() -> LiteyukiBot</code></span></a></h3><p><strong>说明</strong>: 获取轻雪实例</p><p><strong>返回</strong>: LiteyukiBot: 当前的轻雪实例</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L242" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_bot</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LiteyukiBot<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取轻雪实例
|
||||
|
||||
Returns:
|
||||
LiteyukiBot: 当前的轻雪实例
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> _BOT_INSTANCE <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Liteyuki instance not initialized.'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> _BOT_INSTANCE
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">"Can't get bot instance in sub process."</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-config-key-str-default-any-none-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-key-str-default-any-none-any"><span><em><strong>def</strong></em> <code>get_config(key: str, default: Any = None) -> Any</code></span></a></h3><p><strong>说明</strong>: 获取配置</p><p><strong>参数</strong>:</p><blockquote><ul><li>key: 配置键</li><li>default: 默认值</li></ul></blockquote><p><strong>返回</strong>: Any: 配置值</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L258" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_config</span><span class="token punctuation">(</span>key<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> default<span class="token punctuation">:</span> Any<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取配置
|
||||
Args:
|
||||
key: 配置键
|
||||
default: 默认值
|
||||
|
||||
Returns:
|
||||
Any: 配置值
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">.</span>get<span class="token punctuation">(</span>key<span class="token punctuation">,</span> default<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any"><span><em><strong>def</strong></em> <code>get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any</code></span></a></h3><p><strong>说明</strong>: 获取配置,兼容旧版本</p><p><strong>参数</strong>:</p><blockquote><ul><li>key: 配置键</li><li>compat_keys: 兼容键</li><li>default: 默认值</li></ul></blockquote><p><strong>返回</strong>: Any: 配置值</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L271" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_config_with_compat</span><span class="token punctuation">(</span>key<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> compat_keys<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">]</span><span class="token punctuation">,</span> default<span class="token punctuation">:</span> Any<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取配置,兼容旧版本
|
||||
Args:
|
||||
key: 配置键
|
||||
compat_keys: 兼容键
|
||||
default: 默认值
|
||||
|
||||
Returns:
|
||||
Any: 配置值
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> key <span class="token keyword">in</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">[</span>key<span class="token punctuation">]</span>
|
||||
<span class="token keyword">for</span> compat_key <span class="token keyword">in</span> compat_keys<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> compat_key <span class="token keyword">in</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Config key "</span><span class="token interpolation"><span class="token punctuation">{</span>compat_key<span class="token punctuation">}</span></span><span class="token string">" will be deprecated, use "</span><span class="token interpolation"><span class="token punctuation">{</span>key<span class="token punctuation">}</span></span><span class="token string">" instead.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">[</span>compat_key<span class="token punctuation">]</span>
|
||||
<span class="token keyword">return</span> default
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-print-logo" tabindex="-1"><a class="header-anchor" href="#def-print-logo"><span><em><strong>def</strong></em> <code>print_logo()</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L291" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">print_logo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'\\x1b[34m'</span> <span class="token operator">+</span> <span class="token string">'\\n __ ______ ________ ________ __ __ __ __ __ __ ______ \\n / | / |/ |/ |/ \\\\ / |/ | / |/ | / |/ |\\n $$ | $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$ \\\\ /$$/ $$ | $$ |$$ | /$$/ $$$$$$/ \\n $$ | $$ | $$ | $$ |__ $$ \\\\/$$/ $$ | $$ |$$ |/$$/ $$ | \\n $$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |$$ $$< $$ | \\n $$ | $$ | $$ | $$$$$/ $$$$/ $$ | $$ |$$$$$ \\\\ $$ | \\n $$ |_____ _$$ |_ $$ | $$ |_____ $$ | $$ \\\\__$$ |$$ |$$ \\\\ _$$ |_ \\n $$ |/ $$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |/ $$ |\\n $$$$$$$$/ $$$$$$/ $$/ $$$$$$$$/ $$/ $$$$$$/ $$/ $$/ $$$$$$/ \\n '</span> <span class="token operator">+</span> <span class="token string">'\\x1b[0m'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details>`,85),o=[i];function p(l,c){return s(),a("div",null,o)}const r=n(e,[["render",p],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/dev/api/bot/","title":"liteyuki.bot","lang":"zh-CN","frontmatter":{"title":"liteyuki.bot","lastUpdated":false,"description":"liteyuki.bot class LiteyukiBot def __init__(self, *args, **kwargs) -> None 说明: 初始化轻雪实例 参数: *args: **kwargs: 配置 源代码 或 在GitHub上查看 async def _run(self) 说明: 启动逻辑 源代码 或 在GitHub上查看 de...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/bot/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/bot/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.bot"}],["meta",{"property":"og:description","content":"liteyuki.bot class LiteyukiBot def __init__(self, *args, **kwargs) -> None 说明: 初始化轻雪实例 参数: *args: **kwargs: 配置 源代码 或 在GitHub上查看 async def _run(self) 说明: 启动逻辑 源代码 或 在GitHub上查看 de..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.bot\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class LiteyukiBot","slug":"class-liteyukibot","link":"#class-liteyukibot","children":[]},{"level":3,"title":"def get_bot() -> LiteyukiBot","slug":"def-get-bot-liteyukibot","link":"#def-get-bot-liteyukibot","children":[]},{"level":3,"title":"def get_config(key: str, default: Any = None) -> Any","slug":"def-get-config-key-str-default-any-none-any","link":"#def-get-config-key-str-default-any-none-any","children":[]},{"level":3,"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","slug":"def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","link":"#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","children":[]},{"level":3,"title":"def print_logo()","slug":"def-print-logo","link":"#def-print-logo","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":6}]},"readingTime":{"minutes":5.1,"words":1529},"filePathRelative":"dev/api/bot/README.md","localizedDate":"2024年8月19日","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const p={};function c(i,l){const e=o("Catalog");return a(),n("div",null,[r(e)])}const s=t(p,[["render",c],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/dev/","title":"开发及贡献","lang":"zh-CN","frontmatter":{"title":"开发及贡献","index":false,"icon":"laptop-code","category":"开发","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"开发及贡献"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"开发及贡献\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723411596000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":3}]},"readingTime":{"minutes":0.05,"words":16},"filePathRelative":"dev/README.md","localizedDate":"2024年8月11日"}');export{s as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,o,c as a,b as e,d as t}from"./app-BvUYPzLF.js";const s={},n=e("h1",{id:"liteyuki-message",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-message"},[e("span",null,"liteyuki.message")])],-1),l=e("p",null,[e("strong",null,"说明"),t(": Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved")],-1),r=e("p",null,[t("@Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : "),e("strong",null,"init"),t(".py.py @Software: PyCharm")],-1),m=[n,l,r];function p(c,d){return o(),a("div",null,m)}const u=i(s,[["render",p],["__file","index.html.vue"]]),h=JSON.parse('{"path":"/dev/api/message/","title":"liteyuki.message","lang":"zh-CN","frontmatter":{"title":"liteyuki.message","lastUpdated":false,"description":"liteyuki.message 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py ...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.message"}],["meta",{"property":"og:description","content":"liteyuki.message 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.1,"words":29},"filePathRelative":"dev/api/message/README.md","localizedDate":"2024年8月21日","autoDesc":true}');export{u as comp,h as data};
|
||||
@@ -0,0 +1,8 @@
|
||||
import{_ as e,o as t,c as n,e as i}from"./app-BvUYPzLF.js";const a={},s=i(`<h1 id="liteyuki-plugin" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin"><span>liteyuki.plugin</span></a></h1><h3 id="def-get-loaded-plugins-dict-str-plugin" tabindex="-1"><a class="header-anchor" href="#def-get-loaded-plugins-dict-str-plugin"><span><em><strong>def</strong></em> <code>get_loaded_plugins() -> dict[str, Plugin]</code></span></a></h3><p><strong>说明</strong>: 获取已加载的插件</p><p><strong>返回</strong>: dict[str, Plugin]: 插件字典</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/__init__.py#L13" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_loaded_plugins</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取已加载的插件
|
||||
Returns:
|
||||
dict[str, Plugin]: 插件字典
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> _plugins
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,5),l=[s];function o(p,d){return t(),n("div",null,l)}const u=e(a,[["render",o],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/dev/api/plugin/","title":"liteyuki.plugin","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugin","lastUpdated":false,"description":"liteyuki.plugin def get_loaded_plugins() -> dict[str, Plugin] 说明: 获取已加载的插件 返回: dict[str, Plugin]: 插件字典 源代码 或 在GitHub上查看","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugin"}],["meta",{"property":"og:description","content":"liteyuki.plugin def get_loaded_plugins() -> dict[str, Plugin] 说明: 获取已加载的插件 返回: dict[str, Plugin]: 插件字典 源代码 或 在GitHub上查看"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def get_loaded_plugins() -> dict[str, Plugin]","slug":"def-get-loaded-plugins-dict-str-plugin","link":"#def-get-loaded-plugins-dict-str-plugin","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":0.25,"words":76},"filePathRelative":"dev/api/plugin/README.md","localizedDate":"2024年8月19日","autoDesc":true}');export{u as comp,c as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const p={};function c(i,l){const e=o("Catalog");return a(),n("div",null,[r(e)])}const s=t(p,[["render",c],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/deploy/","title":"项目部署","lang":"zh-CN","frontmatter":{"title":"项目部署","index":false,"icon":"laptop-code","category":"部署","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/deploy/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/deploy/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"项目部署"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"项目部署\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723832665000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.05,"words":15},"filePathRelative":"deploy/README.md","localizedDate":"2024年8月16日"}');export{s as comp,d as data};
|
||||
@@ -0,0 +1,9 @@
|
||||
import{_ as n,o as e,c as t,e as a}from"./app-BvUYPzLF.js";const s={},i=a(`<h1 id="liteyuki-plugins-plugin-loader" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugins-plugin-loader"><span>liteyuki.plugins.plugin_loader</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : <strong>init</strong>.py.py @Software: PyCharm</p><h3 id="def-default-plugins-loader" tabindex="-1"><a class="header-anchor" href="#def-default-plugins-loader"><span><em><strong>def</strong></em> <code>default_plugins_loader()</code></span></a></h3><p><strong>Description</strong>: 默认插件加载器,应在初始化时调用</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugins/plugin_loader/__init__.py#L21" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">default_plugins_loader</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
默认插件加载器,应在初始化时调用
|
||||
"""</span>
|
||||
<span class="token keyword">for</span> plugin <span class="token keyword">in</span> get_config<span class="token punctuation">(</span><span class="token string">'liteyuki.plugins'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
load_plugin<span class="token punctuation">(</span>plugin<span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> plugin_dir <span class="token keyword">in</span> get_config<span class="token punctuation">(</span><span class="token string">'liteyuki.plugin_dirs'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'src/liteyuki_plugins'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
load_plugins<span class="token punctuation">(</span>plugin_dir<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),o=[i];function l(p,u){return e(),t("div",null,o)}const d=n(s,[["render",l],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/en/dev/api/plugins/plugin_loader/","title":"liteyuki.plugins.plugin_loader","lang":"en-US","frontmatter":{"title":"liteyuki.plugins.plugin_loader","lastUpdated":false,"description":"liteyuki.plugins.plugin_loader Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook....","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugins/plugin_loader/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/plugin_loader/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugins.plugin_loader"}],["meta",{"property":"og:description","content":"liteyuki.plugins.plugin_loader Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook...."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugins.plugin_loader\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def default_plugins_loader()","slug":"def-default-plugins-loader","link":"#def-default-plugins-loader","children":[]}],"git":{"createdTime":1724912379000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.33,"words":99},"filePathRelative":"en/dev/api/plugins/plugin_loader/README.md","localizedDate":"August 29, 2024","autoDesc":true}');export{d as comp,c as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as o}from"./app-BvUYPzLF.js";const i={};function a(s,l){return t(),o("div")}const c=e(i,[["render",a],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/","title":"首页","lang":"zh-CN","frontmatter":{"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":null,"bgImageDark":null,"bgImageStyle":{"background-attachment":"fixed"},"heroText":"LiteyukiBot","tagline":"LiteyukiBot 轻雪机器人,综合性的机器人应用及管理框架","actions":[{"text":"快速部署","icon":"rocket","link":"./deploy/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":"支持多种框架","icon":"robot","details":"兼容nonebot,melobot等,拥有良好的生态支持","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","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"首页"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-18T15:43:48.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-18T15:43:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"首页\\"}"]]},"headers":[],"git":{"createdTime":1711460020000,"updatedTime":1723995828000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":43},{"name":"Nanaloveyuki","email":"miaomiao_159@outlook.com","commits":1},{"name":"Snowykami","email":"79104275+snowykami@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":1.37,"words":411},"filePathRelative":"README.md","localizedDate":"2024年3月26日"}');export{c as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as i,e as o}from"./app-BvUYPzLF.js";const a={},n=o('<h1 id="liteyuki" tabindex="-1"><a class="header-anchor" href="#liteyuki"><span>liteyuki</span></a></h1><h3 id="var-version" tabindex="-1"><a class="header-anchor" href="#var-version"><span>var <code>__version__</code></span></a></h3><ul><li><p><strong>Description</strong>: 测试版本号</p></li><li><p><strong>Default</strong>: <code>'6.3.10'</code></p></li></ul>',3),r=[n];function s(l,p){return t(),i("div",null,r)}const d=e(a,[["render",s],["__file","index.html.vue"]]),m=JSON.parse(`{"path":"/en/dev/api/","title":"liteyuki","lang":"en-US","frontmatter":{"title":"liteyuki","lastUpdated":false,"description":"liteyuki var __version__ Description: 测试版本号 Default: '6.3.10'","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki"}],["meta",{"property":"og:description","content":"liteyuki var __version__ Description: 测试版本号 Default: '6.3.10'"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"var __version__","slug":"var-version","link":"#var-version","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.05,"words":15},"filePathRelative":"en/dev/api/README.md","localizedDate":"August 21, 2024","autoDesc":true}`);export{d as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as i,b as e}from"./app-BvUYPzLF.js";const r={},a=e("h1",{id:"liteyuki-core",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-core"},[e("span",null,"liteyuki.core")])],-1),n=[a];function c(p,l){return o(),i("div",null,n)}const d=t(r,[["render",c],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/dev/api/core/","title":"liteyuki.core","lang":"zh-CN","frontmatter":{"title":"liteyuki.core","lastUpdated":false,"description":"liteyuki.core","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/core/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/core/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.core"}],["meta",{"property":"og:description","content":"liteyuki.core"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.core\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.02,"words":5},"filePathRelative":"dev/api/core/README.md","localizedDate":"2024年8月19日","autoDesc":true}');export{d as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,o,c as a,b as e,d as t}from"./app-BvUYPzLF.js";const s={},n=e("h1",{id:"liteyuki-message",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-message"},[e("span",null,"liteyuki.message")])],-1),r=e("p",null,[e("strong",null,"Description"),t(": Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved")],-1),l=e("p",null,[t("@Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : "),e("strong",null,"init"),t(".py.py @Software: PyCharm")],-1),m=[n,r,l];function p(c,d){return o(),a("div",null,m)}const y=i(s,[["render",p],["__file","index.html.vue"]]),h=JSON.parse('{"path":"/en/dev/api/message/","title":"liteyuki.message","lang":"en-US","frontmatter":{"title":"liteyuki.message","lastUpdated":false,"description":"liteyuki.message Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : in...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.message"}],["meta",{"property":"og:description","content":"liteyuki.message Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:44 @Author : snowykami @Email : snowykami@outlook.com @File : in..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/dev/api/message/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{y as comp,h as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as i,b as e}from"./app-BvUYPzLF.js";const r={},a=e("h1",{id:"liteyuki-core",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-core"},[e("span",null,"liteyuki.core")])],-1),n=[a];function c(p,l){return o(),i("div",null,n)}const d=t(r,[["render",c],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/en/dev/api/core/","title":"liteyuki.core","lang":"en-US","frontmatter":{"title":"liteyuki.core","lastUpdated":false,"description":"liteyuki.core","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/core/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/core/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.core"}],["meta",{"property":"og:description","content":"liteyuki.core"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.core\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.02,"words":5},"filePathRelative":"en/dev/api/core/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{d as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const p={};function c(i,l){const e=o("Catalog");return a(),n("div",null,[r(e)])}const m=t(p,[["render",c],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/usage/","title":"使用手册","lang":"zh-CN","frontmatter":{"title":"使用手册","index":false,"icon":"laptop-code","category":"使用手册","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"使用手册"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-03-28T04:05:03.000Z"}],["meta",{"property":"article:modified_time","content":"2024-03-28T04:05:03.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"使用手册\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-03-28T04:05:03.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1711589926000,"updatedTime":1711598703000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":0.06,"words":17},"filePathRelative":"usage/README.md","localizedDate":"2024年3月28日"}');export{m as comp,d as data};
|
||||
@@ -0,0 +1,8 @@
|
||||
import{_ as e,o as t,c as n,e as i}from"./app-BvUYPzLF.js";const a={},s=i(`<h1 id="liteyuki-plugin" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin"><span>liteyuki.plugin</span></a></h1><h3 id="def-get-loaded-plugins-dict-str-plugin" tabindex="-1"><a class="header-anchor" href="#def-get-loaded-plugins-dict-str-plugin"><span><em><strong>def</strong></em> <code>get_loaded_plugins() -> dict[str, Plugin]</code></span></a></h3><p><strong>Description</strong>: 获取已加载的插件</p><p><strong>Return</strong>: dict[str, Plugin]: 插件字典</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/__init__.py#L13" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_loaded_plugins</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取已加载的插件
|
||||
Returns:
|
||||
dict[str, Plugin]: 插件字典
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> _plugins
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,5),o=[s];function l(p,r){return t(),n("div",null,o)}const u=e(a,[["render",l],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/en/dev/api/plugin/","title":"liteyuki.plugin","lang":"en-US","frontmatter":{"title":"liteyuki.plugin","lastUpdated":false,"description":"liteyuki.plugin def get_loaded_plugins() -> dict[str, Plugin] Description: 获取已加载的插件 Return: dict[str, Plugin]: 插件字典 Source code or View on GitHub","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugin"}],["meta",{"property":"og:description","content":"liteyuki.plugin def get_loaded_plugins() -> dict[str, Plugin] Description: 获取已加载的插件 Return: dict[str, Plugin]: 插件字典 Source code or View on GitHub"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def get_loaded_plugins() -> dict[str, Plugin]","slug":"def-get-loaded-plugins-dict-str-plugin","link":"#def-get-loaded-plugins-dict-str-plugin","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.24,"words":71},"filePathRelative":"en/dev/api/plugin/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{u as comp,c as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as n,c as r,a}from"./app-BvUYPzLF.js";const s={};function i(c,p){const e=o("Catalog");return n(),r("div",null,[a(e)])}const m=t(s,[["render",i],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/store/","title":"Extensions Store","lang":"en-US","frontmatter":{"title":"Extensions Store","index":false,"icon":"store","category":"store","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/store/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/store/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"Extensions Store"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Extensions Store\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723829277000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.04,"words":11},"filePathRelative":"en/store/README.md","localizedDate":"August 16, 2024"}');export{m as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as i,b as e,d as a}from"./app-BvUYPzLF.js";const n={},r=e("h1",{id:"liteyuki-dev",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-dev"},[e("span",null,"liteyuki.dev")])],-1),d=e("p",null,[e("strong",null,"Description"),a(": 该模块用于存放一些开发工具")],-1),p=[r,d];function c(l,s){return o(),i("div",null,p)}const u=t(n,[["render",c],["__file","index.html.vue"]]),h=JSON.parse('{"path":"/en/dev/api/dev/","title":"liteyuki.dev","lang":"en-US","frontmatter":{"title":"liteyuki.dev","lastUpdated":false,"description":"liteyuki.dev Description: 该模块用于存放一些开发工具","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/dev/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/dev/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.dev"}],["meta",{"property":"og:description","content":"liteyuki.dev Description: 该模块用于存放一些开发工具"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.dev\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.06,"words":19},"filePathRelative":"en/dev/api/dev/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{u as comp,h as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as i,b as e,d as a}from"./app-BvUYPzLF.js";const n={},r=e("h1",{id:"liteyuki-dev",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-dev"},[e("span",null,"liteyuki.dev")])],-1),d=e("p",null,[e("strong",null,"说明"),a(": 该模块用于存放一些开发工具")],-1),l=[r,d];function p(c,s){return o(),i("div",null,l)}const u=t(n,[["render",p],["__file","index.html.vue"]]),h=JSON.parse('{"path":"/dev/api/dev/","title":"liteyuki.dev","lang":"zh-CN","frontmatter":{"title":"liteyuki.dev","lastUpdated":false,"description":"liteyuki.dev 说明: 该模块用于存放一些开发工具","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/dev/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/dev/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.dev"}],["meta",{"property":"og:description","content":"liteyuki.dev 说明: 该模块用于存放一些开发工具"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.dev\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.07,"words":20},"filePathRelative":"dev/api/dev/README.md","localizedDate":"2024年8月19日","autoDesc":true}');export{u as comp,h as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as o}from"./app-BvUYPzLF.js";const i={};function a(s,n){return t(),o("div")}const r=e(i,[["render",a],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/en/","title":"Home","lang":"en-US","frontmatter":{"home":true,"icon":"home","title":"Home","heroImage":"https://cdn.liteyuki.icu/static/svg/lylogo-full.svg","heroImageDark":"https://cdn.liteyuki.icu/static/svg/lylogo-full-dark.svg","bgImage":null,"bgImageDark":null,"bgImageStyle":{"background-attachment":"fixed"},"heroText":"LiteyukiBot","tagline":"LiteyukiBot A high-performance, easy-to-use chatbot framework and application","actions":[{"text":"Get Started","icon":"rocket","link":"./deploy/install.html","type":"primary"},{"text":"Usage","icon":"book","link":"./usage/basic_command.html"}],"highlights":[{"header":"Simple and Efficient","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":"Multi-Framework Support","icon":"robot","details":"Compatible with nonebot, melobot, etc., with good ecological support","link":"https://nonebot.dev/"},{"title":"Convenient Management","icon":"plug","details":"Use package manager to manage plugins and resource packs"},{"title":"Custom Themes Support","icon":"paint-brush","details":"Fully customize the appearance with resource packs","link":"https://bot.liteyuki.icu/usage/resource_pack.html"},{"title":"i18n","icon":"globe","details":"Support multiple languages through resource packs","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"Easy to Use","icon":"cog","details":"No need for cumbersome pre-processes, ready to use","link":"https://bot.liteyuki.icu/deployment/config.html"},{"title":"High Performance","icon":"tachometer-alt","details":"500 plugins, start within 2s"},{"title":"Rolling Update","icon":"cloud-download","details":"Keep your bot up to date"},{"title":"OpenSource","icon":"code","details":"MIT LICENCE open source project, welcome your contribution"}]},{"header":"Quick Start","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":"Install Git and Python3.10+ environment"},{"title":"Use <code>git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1</code> to clone the project locally"},{"title":"Use <code>cd LiteyukiBot</code> to change the directory to the project root"},{"title":"Use <code>pip install -r requirements.txt</code> install the project dependencies","details":"If you have multiple Python environments, please use <code>pythonx -m pip install -r requirements.txt</code>."},{"title":"Start bot with <code>python main.py</code>."}]}],"copyright":"© 2021-2024 SnowyKami All Rights Reserved","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"Home"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T20:50:27.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T20:50:27.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Home\\"}"]]},"headers":[],"git":{"createdTime":1723829277000,"updatedTime":1723841427000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2},{"name":"Snowykami","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":1,"words":300},"filePathRelative":"en/README.md","localizedDate":"August 16, 2024"}');export{r as comp,c as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as p}from"./app-BvUYPzLF.js";const r={};function l(c,i){const e=o("Catalog");return a(),n("div",null,[p(e)])}const s=t(r,[["render",l],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/deploy/","title":"Deploy","lang":"en-US","frontmatter":{"title":"Deploy","index":false,"icon":"laptop-code","category":"deploy","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/deploy/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/deploy/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"Deploy"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Deploy\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723832665000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.04,"words":11},"filePathRelative":"en/deploy/README.md","localizedDate":"August 16, 2024"}');export{s as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as o,e as i}from"./app-BvUYPzLF.js";const a={},r=i('<h1 id="liteyuki" tabindex="-1"><a class="header-anchor" href="#liteyuki"><span>liteyuki</span></a></h1><h3 id="var-version" tabindex="-1"><a class="header-anchor" href="#var-version"><span>var <code>__version__</code></span></a></h3><ul><li><p><strong>说明</strong>: 测试版本号</p></li><li><p><strong>默认值</strong>: <code>'6.3.10'</code></p></li></ul>',3),n=[r];function s(l,p){return t(),o("div",null,n)}const d=e(a,[["render",s],["__file","index.html.vue"]]),m=JSON.parse(`{"path":"/dev/api/","title":"liteyuki","lang":"zh-CN","frontmatter":{"title":"liteyuki","lastUpdated":false,"description":"liteyuki var __version__ 说明: 测试版本号 默认值: '6.3.10'","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki"}],["meta",{"property":"og:description","content":"liteyuki var __version__ 说明: 测试版本号 默认值: '6.3.10'"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"var __version__","slug":"var-version","link":"#var-version","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.06,"words":18},"filePathRelative":"dev/api/README.md","localizedDate":"2024年8月19日","autoDesc":true}`);export{d as comp,m as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const c={};function p(s,i){const e=o("Catalog");return a(),n("div",null,[r(e)])}const m=t(c,[["render",p],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/usage/","title":"Usage","lang":"en-US","frontmatter":{"title":"Usage","index":false,"icon":"laptop-code","category":"usage","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/usage/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/usage/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"Usage"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-16T18:24:25.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-16T18:24:25.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Usage\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-16T18:24:25.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723829277000,"updatedTime":1723832665000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.04,"words":11},"filePathRelative":"en/usage/README.md","localizedDate":"August 16, 2024"}');export{m as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as n,o as a,c as o,a as p}from"./app-BvUYPzLF.js";const l={};function s(r,i){const e=n("Catalog");return a(),o("div",null,[p(e)])}const m=t(l,[["render",s],["__file","index.html.vue"]]),g=JSON.parse('{"path":"/dev/api/plugins/","title":"Plugins","lang":"zh-CN","frontmatter":{"title":"Plugins","article":false,"feed":false,"sitemap":false,"head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugins/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"Plugins"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Plugins\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null}');export{m as comp,g as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as a,b as e,d as n}from"./app-BvUYPzLF.js";const i={},c=e("h1",{id:"liteyuki-comm",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-comm"},[e("span",null,"liteyuki.comm")])],-1),r=e("p",null,[e("strong",null,"说明"),n(": 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage")],-1),m=[c,r];function l(p,s){return o(),a("div",null,m)}const h=t(i,[["render",l],["__file","index.html.vue"]]),_=JSON.parse('{"path":"/dev/api/comm/","title":"liteyuki.comm","lang":"zh-CN","frontmatter":{"title":"liteyuki.comm","lastUpdated":false,"description":"liteyuki.comm 说明: 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.comm"}],["meta",{"property":"og:description","content":"liteyuki.comm 说明: 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.13,"words":38},"filePathRelative":"dev/api/comm/README.md","localizedDate":"2024年8月19日","autoDesc":true}');export{h as comp,_ as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as n,b as e,d as a}from"./app-BvUYPzLF.js";const i={},c=e("h1",{id:"liteyuki-comm",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-comm"},[e("span",null,"liteyuki.comm")])],-1),r=e("p",null,[e("strong",null,"Description"),a(": 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage")],-1),m=[c,r];function l(p,s){return o(),n("div",null,m)}const h=t(i,[["render",l],["__file","index.html.vue"]]),u=JSON.parse('{"path":"/en/dev/api/comm/","title":"liteyuki.comm","lang":"en-US","frontmatter":{"title":"liteyuki.comm","lastUpdated":false,"description":"liteyuki.comm Description: 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/comm/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/comm/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.comm"}],["meta",{"property":"og:description","content":"liteyuki.comm Description: 该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.comm\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.12,"words":37},"filePathRelative":"en/dev/api/comm/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{h as comp,u as data};
|
||||
@@ -0,0 +1,9 @@
|
||||
import{_ as n,o as e,c as t,e as a}from"./app-BvUYPzLF.js";const s={},i=a(`<h1 id="liteyuki-plugins-plugin-loader" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugins-plugin-loader"><span>liteyuki.plugins.plugin_loader</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : <strong>init</strong>.py.py @Software: PyCharm</p><h3 id="def-default-plugins-loader" tabindex="-1"><a class="header-anchor" href="#def-default-plugins-loader"><span><em><strong>def</strong></em> <code>default_plugins_loader()</code></span></a></h3><p><strong>说明</strong>: 默认插件加载器,应在初始化时调用</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugins/plugin_loader/__init__.py#L21" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">default_plugins_loader</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
默认插件加载器,应在初始化时调用
|
||||
"""</span>
|
||||
<span class="token keyword">for</span> plugin <span class="token keyword">in</span> get_config<span class="token punctuation">(</span><span class="token string">'liteyuki.plugins'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
load_plugin<span class="token punctuation">(</span>plugin<span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> plugin_dir <span class="token keyword">in</span> get_config<span class="token punctuation">(</span><span class="token string">'liteyuki.plugin_dirs'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'src/liteyuki_plugins'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
load_plugins<span class="token punctuation">(</span>plugin_dir<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),o=[i];function l(p,u){return e(),t("div",null,o)}const d=n(s,[["render",l],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/dev/api/plugins/plugin_loader/","title":"liteyuki.plugins.plugin_loader","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugins.plugin_loader","lastUpdated":false,"description":"liteyuki.plugins.plugin_loader 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/plugin_loader/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugins/plugin_loader/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugins.plugin_loader"}],["meta",{"property":"og:description","content":"liteyuki.plugins.plugin_loader 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugins.plugin_loader\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def default_plugins_loader()","slug":"def-default-plugins-loader","link":"#def-default-plugins-loader","children":[]}],"git":{"createdTime":1724912379000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.35,"words":104},"filePathRelative":"dev/api/plugins/plugin_loader/README.md","localizedDate":"2024年8月29日","autoDesc":true}');export{d as comp,c as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const c={};function p(i,l){const e=o("Catalog");return a(),n("div",null,[r(e)])}const s=t(c,[["render",p],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/dev/","title":"开发及贡献","lang":"en-US","frontmatter":{"title":"开发及贡献","index":false,"icon":"laptop-code","category":"开发","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"开发及贡献"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"开发及贡献\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1723829277000,"updatedTime":1724912593000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":0.05,"words":16},"filePathRelative":"en/dev/README.md","localizedDate":"August 16, 2024"}');export{s as comp,d as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,r as o,o as a,c as n,a as r}from"./app-BvUYPzLF.js";const i={};function c(p,s){const e=o("Catalog");return a(),n("div",null,[r(e)])}const m=t(i,[["render",c],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/store/","title":"资源及插件商店","lang":"zh-CN","frontmatter":{"title":"资源及插件商店","index":false,"icon":"store","category":"商店","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/store/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/store/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"资源及插件商店"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-11T21:26:36.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-11T21:26:36.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"资源及插件商店\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-11T21:26:36.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1712364501000,"updatedTime":1723411596000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":5}]},"readingTime":{"minutes":0.06,"words":17},"filePathRelative":"store/README.md","localizedDate":"2024年4月6日"}');export{m as comp,d as data};
|
||||
@@ -0,0 +1,231 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},i=t(`<h1 id="liteyuki-bot" tabindex="-1"><a class="header-anchor" href="#liteyuki-bot"><span>liteyuki.bot</span></a></h1><h3 id="class-liteyukibot" tabindex="-1"><a class="header-anchor" href="#class-liteyukibot"><span><em><strong>class</strong></em> <code>LiteyukiBot</code></span></a></h3><h4 id="def-init-self-args-kwargs-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-args-kwargs-none"><span><em><strong>def</strong></em> <code>__init__(self, *args, **kwargs) -> None</code></span></a></h4><p><strong>Description</strong>: 初始化轻雪实例</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>*args:</li><li>**kwargs: 配置</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L27" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化轻雪实例
|
||||
Args:
|
||||
*args:
|
||||
**kwargs: 配置
|
||||
|
||||
"""</span>
|
||||
<span class="token string">'常规操作'</span>
|
||||
print_logo<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">global</span> _BOT_INSTANCE
|
||||
_BOT_INSTANCE <span class="token operator">=</span> self
|
||||
<span class="token string">'配置'</span>
|
||||
self<span class="token punctuation">.</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span> <span class="token operator">=</span> kwargs
|
||||
<span class="token string">'初始化'</span>
|
||||
self<span class="token punctuation">.</span>init<span class="token punctuation">(</span><span class="token operator">**</span>self<span class="token punctuation">.</span>config<span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is initializing...'</span><span class="token punctuation">)</span>
|
||||
<span class="token string">'生命周期管理'</span>
|
||||
self<span class="token punctuation">.</span>lifespan <span class="token operator">=</span> Lifespan<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>process_manager<span class="token punctuation">:</span> ProcessManager <span class="token operator">=</span> ProcessManager<span class="token punctuation">(</span>lifespan<span class="token operator">=</span>self<span class="token punctuation">.</span>lifespan<span class="token punctuation">)</span>
|
||||
<span class="token string">'事件循环'</span>
|
||||
self<span class="token punctuation">.</span>loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>new_event_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
asyncio<span class="token punctuation">.</span>set_event_loop<span class="token punctuation">(</span>self<span class="token punctuation">.</span>loop<span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop_event <span class="token operator">=</span> threading<span class="token punctuation">.</span>Event<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>call_restart_count <span class="token operator">=</span> <span class="token number">0</span>
|
||||
<span class="token string">'加载插件加载器'</span>
|
||||
load_plugin<span class="token punctuation">(</span><span class="token string">'liteyuki.plugins.plugin_loader'</span><span class="token punctuation">)</span>
|
||||
<span class="token string">'信号处理'</span>
|
||||
signal<span class="token punctuation">.</span>signal<span class="token punctuation">(</span>signal<span class="token punctuation">.</span>SIGINT<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_handle_exit<span class="token punctuation">)</span>
|
||||
signal<span class="token punctuation">.</span>signal<span class="token punctuation">(</span>signal<span class="token punctuation">.</span>SIGTERM<span class="token punctuation">,</span> self<span class="token punctuation">.</span>_handle_exit<span class="token punctuation">)</span>
|
||||
atexit<span class="token punctuation">.</span>register<span class="token punctuation">(</span>self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>terminate_all<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-self" tabindex="-1"><a class="header-anchor" href="#async-def-run-self"><span><em><strong>async def</strong></em> <code>_run(self)</code></span></a></h4><p><strong>Description</strong>: 启动逻辑</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L65" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动逻辑
|
||||
"""</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>start_all<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>after_start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>keep_alive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-run-self" tabindex="-1"><a class="header-anchor" href="#def-run-self"><span><em><strong>def</strong></em> <code>run(self)</code></span></a></h4><p><strong>Description</strong>: 外部启动接口</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L74" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">run</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
外部启动接口
|
||||
"""</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
asyncio<span class="token punctuation">.</span>run<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_run<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is stopping...'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-keep-alive-self" tabindex="-1"><a class="header-anchor" href="#async-def-keep-alive-self"><span><em><strong>async def</strong></em> <code>keep_alive(self)</code></span></a></h4><p><strong>Description</strong>: 保持轻雪运行</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L83" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">keep_alive</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
保持轻雪运行
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">while</span> <span class="token keyword">not</span> self<span class="token punctuation">.</span>stop_event<span class="token punctuation">.</span>is_set<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Liteyuki is stopping...'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-handle-exit-self-signum-frame" tabindex="-1"><a class="header-anchor" href="#def-handle-exit-self-signum-frame"><span><em><strong>def</strong></em> <code>_handle_exit(self, signum, frame)</code></span></a></h4><p><strong>Description</strong>: 信号处理</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>signum:</li><li>frame:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L96" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">_handle_exit</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> signum<span class="token punctuation">,</span> frame<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
信号处理
|
||||
Args:
|
||||
signum:
|
||||
frame:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Received signal, stopping all processes.'</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-restart-self-delay-int-0" tabindex="-1"><a class="header-anchor" href="#def-restart-self-delay-int-0"><span><em><strong>def</strong></em> <code>restart(self, delay: int = 0)</code></span></a></h4><p><strong>Description</strong>: 重启轻雪本体</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L110" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> delay<span class="token punctuation">:</span> <span class="token builtin">int</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启轻雪本体
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> self<span class="token punctuation">.</span>call_restart_count <span class="token operator"><</span> <span class="token number">1</span><span class="token punctuation">:</span>
|
||||
executable <span class="token operator">=</span> sys<span class="token punctuation">.</span>executable
|
||||
args <span class="token operator">=</span> sys<span class="token punctuation">.</span>argv
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Restarting LiteyukiBot...'</span><span class="token punctuation">)</span>
|
||||
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span>delay<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Windows'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'start'</span>
|
||||
<span class="token keyword">elif</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Linux'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'nohup'</span>
|
||||
<span class="token keyword">elif</span> platform<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'Darwin'</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'open'</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
cmd <span class="token operator">=</span> <span class="token string">'nohup'</span>
|
||||
self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>terminate_all<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
threading<span class="token punctuation">.</span>Thread<span class="token punctuation">(</span>target<span class="token operator">=</span>os<span class="token punctuation">.</span>system<span class="token punctuation">,</span> args<span class="token operator">=</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>cmd<span class="token punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token punctuation">{</span>executable<span class="token punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>args<span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>call_restart_count <span class="token operator">+=</span> <span class="token number">1</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-restart-process-self-name-optional-str-none" tabindex="-1"><a class="header-anchor" href="#def-restart-process-self-name-optional-str-none"><span><em><strong>def</strong></em> <code>restart_process(self, name: Optional[str] = None)</code></span></a></h4><p><strong>Description</strong>: 停止轻雪</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 进程名称, 默认为None, 所有进程</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L135" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">restart_process</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> Optional<span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止轻雪
|
||||
Args:
|
||||
name: 进程名称, 默认为None, 所有进程
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">is</span> <span class="token keyword">not</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> process_name <span class="token keyword">in</span> self<span class="token punctuation">.</span>process_manager<span class="token punctuation">.</span>processes<span class="token punctuation">:</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>process_name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_active<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-init-self-args-kwargs" tabindex="-1"><a class="header-anchor" href="#def-init-self-args-kwargs"><span><em><strong>def</strong></em> <code>init(self, *args, **kwargs)</code></span></a></h4><p><strong>Description</strong>: 初始化轻雪, 自动调用</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L150" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
初始化轻雪, 自动调用
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>init_logger<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-init-logger-self" tabindex="-1"><a class="header-anchor" href="#def-init-logger-self"><span><em><strong>def</strong></em> <code>init_logger(self)</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L158" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init_logger</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
init_log<span class="token punctuation">(</span>config<span class="token operator">=</span>self<span class="token punctuation">.</span>config<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-stop-self" tabindex="-1"><a class="header-anchor" href="#def-stop-self"><span><em><strong>def</strong></em> <code>stop(self)</code></span></a></h4><p><strong>Description</strong>: 停止轻雪</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L162" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">stop</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止轻雪
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>stop_event<span class="token punctuation">.</span><span class="token builtin">set</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>loop<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-start-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_start(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册启动前的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L171" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动前的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_start<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-start-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_start(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册启动后的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L182" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动后的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_start<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-shutdown-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册停止后的函数:未实现</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L193" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止后的函数:未实现
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_shutdown<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-shutdown-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册进程停止前的函数,为子进程停止时调用</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L204" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册进程停止前的函数,为子进程停止时调用
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_process_shutdown<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-restart-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册进程重启前的函数,为子进程重启时调用</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L215" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册进程重启前的函数,为子进程重启时调用
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_before_process_restart<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-restart-self-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_restart(self, func: LIFESPAN_FUNC)</code></span></a></h4><p><strong>Description</strong>: 注册重启后的函数:未实现</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L227" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启后的函数:未实现
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_restart<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-bot-liteyukibot" tabindex="-1"><a class="header-anchor" href="#def-get-bot-liteyukibot"><span><em><strong>def</strong></em> <code>get_bot() -> LiteyukiBot</code></span></a></h3><p><strong>Description</strong>: 获取轻雪实例</p><p><strong>Return</strong>: LiteyukiBot: 当前的轻雪实例</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L242" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_bot</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LiteyukiBot<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取轻雪实例
|
||||
|
||||
Returns:
|
||||
LiteyukiBot: 当前的轻雪实例
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> IS_MAIN_PROCESS<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> _BOT_INSTANCE <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">'Liteyuki instance not initialized.'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> _BOT_INSTANCE
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> RuntimeError<span class="token punctuation">(</span><span class="token string">"Can't get bot instance in sub process."</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-config-key-str-default-any-none-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-key-str-default-any-none-any"><span><em><strong>def</strong></em> <code>get_config(key: str, default: Any = None) -> Any</code></span></a></h3><p><strong>Description</strong>: 获取配置</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>key: 配置键</li><li>default: 默认值</li></ul></blockquote><p><strong>Return</strong>: Any: 配置值</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L258" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_config</span><span class="token punctuation">(</span>key<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> default<span class="token punctuation">:</span> Any<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取配置
|
||||
Args:
|
||||
key: 配置键
|
||||
default: 默认值
|
||||
|
||||
Returns:
|
||||
Any: 配置值
|
||||
"""</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">.</span>get<span class="token punctuation">(</span>key<span class="token punctuation">,</span> default<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any"><span><em><strong>def</strong></em> <code>get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any</code></span></a></h3><p><strong>Description</strong>: 获取配置,兼容旧版本</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>key: 配置键</li><li>compat_keys: 兼容键</li><li>default: 默认值</li></ul></blockquote><p><strong>Return</strong>: Any: 配置值</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L271" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_config_with_compat</span><span class="token punctuation">(</span>key<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> compat_keys<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">]</span><span class="token punctuation">,</span> default<span class="token punctuation">:</span> Any<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Any<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
获取配置,兼容旧版本
|
||||
Args:
|
||||
key: 配置键
|
||||
compat_keys: 兼容键
|
||||
default: 默认值
|
||||
|
||||
Returns:
|
||||
Any: 配置值
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> key <span class="token keyword">in</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">[</span>key<span class="token punctuation">]</span>
|
||||
<span class="token keyword">for</span> compat_key <span class="token keyword">in</span> compat_keys<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> compat_key <span class="token keyword">in</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Config key "</span><span class="token interpolation"><span class="token punctuation">{</span>compat_key<span class="token punctuation">}</span></span><span class="token string">" will be deprecated, use "</span><span class="token interpolation"><span class="token punctuation">{</span>key<span class="token punctuation">}</span></span><span class="token string">" instead.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> get_bot<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>config<span class="token punctuation">[</span>compat_key<span class="token punctuation">]</span>
|
||||
<span class="token keyword">return</span> default
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-print-logo" tabindex="-1"><a class="header-anchor" href="#def-print-logo"><span><em><strong>def</strong></em> <code>print_logo()</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/__init__.py#L291" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">print_logo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'\\x1b[34m'</span> <span class="token operator">+</span> <span class="token string">'\\n __ ______ ________ ________ __ __ __ __ __ __ ______ \\n / | / |/ |/ |/ \\\\ / |/ | / |/ | / |/ |\\n $$ | $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$ \\\\ /$$/ $$ | $$ |$$ | /$$/ $$$$$$/ \\n $$ | $$ | $$ | $$ |__ $$ \\\\/$$/ $$ | $$ |$$ |/$$/ $$ | \\n $$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |$$ $$< $$ | \\n $$ | $$ | $$ | $$$$$/ $$$$/ $$ | $$ |$$$$$ \\\\ $$ | \\n $$ |_____ _$$ |_ $$ | $$ |_____ $$ | $$ \\\\__$$ |$$ |$$ \\\\ _$$ |_ \\n $$ |/ $$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |/ $$ |\\n $$$$$$$$/ $$$$$$/ $$/ $$$$$$$$/ $$/ $$$$$$/ $$/ $$/ $$$$$$/ \\n '</span> <span class="token operator">+</span> <span class="token string">'\\x1b[0m'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details>`,85),o=[i];function p(l,c){return s(),a("div",null,o)}const r=n(e,[["render",p],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/bot/","title":"liteyuki.bot","lang":"en-US","frontmatter":{"title":"liteyuki.bot","lastUpdated":false,"description":"liteyuki.bot class LiteyukiBot def __init__(self, *args, **kwargs) -> None Description: 初始化轻雪实例 Arguments: *args: **kwargs: 配置 Source code or View on GitHub async def _run(self)...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/bot/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/bot/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.bot"}],["meta",{"property":"og:description","content":"liteyuki.bot class LiteyukiBot def __init__(self, *args, **kwargs) -> None Description: 初始化轻雪实例 Arguments: *args: **kwargs: 配置 Source code or View on GitHub async def _run(self)..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.bot\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class LiteyukiBot","slug":"class-liteyukibot","link":"#class-liteyukibot","children":[]},{"level":3,"title":"def get_bot() -> LiteyukiBot","slug":"def-get-bot-liteyukibot","link":"#def-get-bot-liteyukibot","children":[]},{"level":3,"title":"def get_config(key: str, default: Any = None) -> Any","slug":"def-get-config-key-str-default-any-none-any","link":"#def-get-config-key-str-default-any-none-any","children":[]},{"level":3,"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","slug":"def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","link":"#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","children":[]},{"level":3,"title":"def print_logo()","slug":"def-print-logo","link":"#def-print-logo","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":4.79,"words":1437},"filePathRelative":"en/dev/api/bot/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,128 @@
|
||||
import{_ as e,r as t,o,c as p,b as n,a as i,e as s}from"./app-BvUYPzLF.js";const l={},u=s(`<h1 id="liteyuki-bot-lifespan" tabindex="-1"><a class="header-anchor" href="#liteyuki-bot-lifespan"><span>liteyuki.bot.lifespan</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm</p><h3 id="class-lifespan" tabindex="-1"><a class="header-anchor" href="#class-lifespan"><span><em><strong>class</strong></em> <code>Lifespan</code></span></a></h3><h4 id="def-init-self-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-none"><span><em><strong>def</strong></em> <code>__init__(self) -> None</code></span></a></h4><p><strong>说明</strong>: 轻雪生命周期管理,启动、停止、重启</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L27" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
轻雪生命周期管理,启动、停止、重启
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>life_flag<span class="token punctuation">:</span> <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">0</span>
|
||||
self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,7),c={href:"https://docs.python.org/3/library/functions.html#staticmethod",target:"_blank",rel:"noopener noreferrer"},r=n("code",null,"@staticmethod",-1),d=s(`<h4 id="async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none" tabindex="-1"><a class="header-anchor" href="#async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none"><span><em><strong>async def</strong></em> <code>run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None</code></span></a></h4><p><strong>说明</strong>: 并发运行异步函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>funcs:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L43" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@staticmethod</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">run_funcs</span><span class="token punctuation">(</span>funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>ASYNC_LIFESPAN_FUNC <span class="token operator">|</span> PROCESS_LIFESPAN_FUNC<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
并发运行异步函数
|
||||
Args:
|
||||
funcs:
|
||||
Returns:
|
||||
"""</span>
|
||||
loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>get_running_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
tasks <span class="token operator">=</span> <span class="token punctuation">[</span>func<span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>func<span class="token punctuation">)</span> <span class="token keyword">else</span> async_wrapper<span class="token punctuation">(</span>func<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token keyword">for</span> func <span class="token keyword">in</span> funcs<span class="token punctuation">]</span>
|
||||
<span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>gather<span class="token punctuation">(</span><span class="token operator">*</span>tasks<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-start-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-start-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册启动时的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L54" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-start-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-start-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册启动时的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L65" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册停止前的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L76" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止前的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-shutdown-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-shutdown-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册停止后的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L87" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止后的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-restart-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-restart-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册重启时的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L100" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-restart-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-restart-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>说明</strong>: 注册重启后的函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>返回</strong>: LIFESPAN_FUNC:</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L111" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启后的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-start-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-start-self-none"><span><em><strong>async def</strong></em> <code>before_start(self) -> None</code></span></a></h4><p><strong>说明</strong>: 启动前</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L122" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_start functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-start-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-start-self-none"><span><em><strong>async def</strong></em> <code>after_start(self) -> None</code></span></a></h4><p><strong>说明</strong>: 启动后</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L130" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动后
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_start functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-process-shutdown-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-process-shutdown-self-none"><span><em><strong>async def</strong></em> <code>before_process_shutdown(self) -> None</code></span></a></h4><p><strong>说明</strong>: 停止前</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L138" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_shutdown functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-shutdown-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-shutdown-self-none"><span><em><strong>async def</strong></em> <code>after_shutdown(self) -> None</code></span></a></h4><p><strong>说明</strong>: 停止后</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L146" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止后
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_shutdown functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-process-restart-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-process-restart-self-none"><span><em><strong>async def</strong></em> <code>before_process_restart(self) -> None</code></span></a></h4><p><strong>说明</strong>: 重启前</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L154" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_restart functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-restart-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-restart-self-none"><span><em><strong>async def</strong></em> <code>after_restart(self) -> None</code></span></a></h4><p><strong>说明</strong>: 重启后</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L162" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启后
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_restart functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,59);function k(f,m){const a=t("ExternalLinkIcon");return o(),p("div",null,[u,n("p",null,[n("a",c,[r,i(a)])]),d])}const v=e(l,[["render",k],["__file","lifespan.html.vue"]]),g=JSON.parse('{"path":"/dev/api/bot/lifespan.html","title":"liteyuki.bot.lifespan","lang":"zh-CN","frontmatter":{"title":"liteyuki.bot.lifespan","lastUpdated":false,"description":"liteyuki.bot.lifespan 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespa...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/bot/lifespan.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/bot/lifespan.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.bot.lifespan"}],["meta",{"property":"og:description","content":"liteyuki.bot.lifespan 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespa..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.bot.lifespan\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Lifespan","slug":"class-lifespan","link":"#class-lifespan","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":6}]},"readingTime":{"minutes":3.05,"words":916},"filePathRelative":"dev/api/bot/lifespan.md","localizedDate":"2024年8月19日","autoDesc":true}');export{v as comp,g as data};
|
||||
@@ -0,0 +1,128 @@
|
||||
import{_ as e,r as t,o,c as p,b as n,a as i,e as s}from"./app-BvUYPzLF.js";const c={},u=s(`<h1 id="liteyuki-bot-lifespan" tabindex="-1"><a class="header-anchor" href="#liteyuki-bot-lifespan"><span>liteyuki.bot.lifespan</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm</p><h3 id="class-lifespan" tabindex="-1"><a class="header-anchor" href="#class-lifespan"><span><em><strong>class</strong></em> <code>Lifespan</code></span></a></h3><h4 id="def-init-self-none" tabindex="-1"><a class="header-anchor" href="#def-init-self-none"><span><em><strong>def</strong></em> <code>__init__(self) -> None</code></span></a></h4><p><strong>Description</strong>: 轻雪生命周期管理,启动、停止、重启</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L27" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
轻雪生命周期管理,启动、停止、重启
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>life_flag<span class="token punctuation">:</span> <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">0</span>
|
||||
self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>LIFESPAN_FUNC<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,7),l={href:"https://docs.python.org/3/library/functions.html#staticmethod",target:"_blank",rel:"noopener noreferrer"},r=n("code",null,"@staticmethod",-1),d=s(`<h4 id="async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none" tabindex="-1"><a class="header-anchor" href="#async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none"><span><em><strong>async def</strong></em> <code>run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None</code></span></a></h4><p><strong>Description</strong>: 并发运行异步函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>funcs:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L43" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@staticmethod</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">run_funcs</span><span class="token punctuation">(</span>funcs<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>ASYNC_LIFESPAN_FUNC <span class="token operator">|</span> PROCESS_LIFESPAN_FUNC<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
并发运行异步函数
|
||||
Args:
|
||||
funcs:
|
||||
Returns:
|
||||
"""</span>
|
||||
loop <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>get_running_loop<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
tasks <span class="token operator">=</span> <span class="token punctuation">[</span>func<span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token keyword">if</span> is_coroutine_callable<span class="token punctuation">(</span>func<span class="token punctuation">)</span> <span class="token keyword">else</span> async_wrapper<span class="token punctuation">(</span>func<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>kwargs<span class="token punctuation">)</span> <span class="token keyword">for</span> func <span class="token keyword">in</span> funcs<span class="token punctuation">]</span>
|
||||
<span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>gather<span class="token punctuation">(</span><span class="token operator">*</span>tasks<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-start-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-start-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册启动时的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L54" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-start-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-start-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册启动时的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L65" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册启动时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册停止前的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L76" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止前的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-shutdown-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-shutdown-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册停止后的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L87" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册停止后的函数
|
||||
Args:
|
||||
func:
|
||||
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-before-process-restart-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-restart-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册重启时的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L100" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启时的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-on-after-restart-self-func-lifespan-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#def-on-after-restart-self-func-lifespan-func-lifespan-func"><span><em><strong>def</strong></em> <code>on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC</code></span></a></h4><p><strong>Description</strong>: 注册重启后的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><p><strong>Return</strong>: LIFESPAN_FUNC:</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L111" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">on_after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> func<span class="token punctuation">:</span> LIFESPAN_FUNC<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> LIFESPAN_FUNC<span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
注册重启后的函数
|
||||
Args:
|
||||
func:
|
||||
Returns:
|
||||
LIFESPAN_FUNC:
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">.</span>append<span class="token punctuation">(</span>func<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> func
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-start-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-start-self-none"><span><em><strong>async def</strong></em> <code>before_start(self) -> None</code></span></a></h4><p><strong>Description</strong>: 启动前</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L122" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_start</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_start functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_start_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-start-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-start-self-none"><span><em><strong>async def</strong></em> <code>after_start(self) -> None</code></span></a></h4><p><strong>Description</strong>: 启动后</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L130" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_start</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
启动后
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_start functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_start_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-process-shutdown-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-process-shutdown-self-none"><span><em><strong>async def</strong></em> <code>before_process_shutdown(self) -> None</code></span></a></h4><p><strong>Description</strong>: 停止前</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L138" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_process_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_shutdown functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_process_shutdown_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-shutdown-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-shutdown-self-none"><span><em><strong>async def</strong></em> <code>after_shutdown(self) -> None</code></span></a></h4><p><strong>Description</strong>: 停止后</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L146" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_shutdown</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
停止后
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_shutdown functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_shutdown_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-before-process-restart-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-before-process-restart-self-none"><span><em><strong>async def</strong></em> <code>before_process_restart(self) -> None</code></span></a></h4><p><strong>Description</strong>: 重启前</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L154" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">before_process_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启前
|
||||
Returns:
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running before_restart functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_before_process_restart_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-after-restart-self-none" tabindex="-1"><a class="header-anchor" href="#async-def-after-restart-self-none"><span><em><strong>async def</strong></em> <code>after_restart(self) -> None</code></span></a></h4><p><strong>Description</strong>: 重启后</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/bot/lifespan.py#L162" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">after_restart</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
重启后
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>debug<span class="token punctuation">(</span><span class="token string">'Running after_restart functions'</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>run_funcs<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_after_restart_funcs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,59);function k(f,m){const a=t("ExternalLinkIcon");return o(),p("div",null,[u,n("p",null,[n("a",l,[r,i(a)])]),d])}const v=e(c,[["render",k],["__file","lifespan.html.vue"]]),g=JSON.parse('{"path":"/en/dev/api/bot/lifespan.html","title":"liteyuki.bot.lifespan","lang":"en-US","frontmatter":{"title":"liteyuki.bot.lifespan","lastUpdated":false,"description":"liteyuki.bot.lifespan Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File ...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/bot/lifespan.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/bot/lifespan.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.bot.lifespan"}],["meta",{"property":"og:description","content":"liteyuki.bot.lifespan Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.bot.lifespan\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Lifespan","slug":"class-lifespan","link":"#class-lifespan","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":2.82,"words":846},"filePathRelative":"en/dev/api/bot/lifespan.md","localizedDate":"August 21, 2024","autoDesc":true}');export{v as comp,g as data};
|
||||
@@ -0,0 +1,4 @@
|
||||
import{_ as e,o as t,c as n,e as a}from"./app-BvUYPzLF.js";const s={},o=a(`<h1 id="liteyuki-plugins-liteecho" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugins-liteecho"><span>liteyuki.plugins.liteecho</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : liteecho.py @Software: PyCharm</p><p><code>@on_startswith(['liteecho'], rule=is_su_rule).handle()</code></p><h3 id="async-def-liteecho-event-messageevent" tabindex="-1"><a class="header-anchor" href="#async-def-liteecho-event-messageevent"><span><em><strong>async def</strong></em> <code>liteecho(event: MessageEvent)</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugins/liteecho.py#L18" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@on_startswith</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'liteecho'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> rule<span class="token operator">=</span>is_su_rule<span class="token punctuation">)</span><span class="token punctuation">.</span>handle<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">liteecho</span><span class="token punctuation">(</span>event<span class="token punctuation">:</span> MessageEvent<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
event<span class="token punctuation">.</span>reply<span class="token punctuation">(</span>event<span class="token punctuation">.</span>raw_message<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">8</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),i=[o];function p(l,c){return t(),n("div",null,i)}const r=e(s,[["render",p],["__file","liteecho.html.vue"]]),d=JSON.parse('{"path":"/dev/api/plugins/liteecho.html","title":"liteyuki.plugins.liteecho","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugins.liteecho","lastUpdated":false,"description":"liteyuki.plugins.liteecho 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : li...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/liteecho.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugins/liteecho.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugins.liteecho"}],["meta",{"property":"og:description","content":"liteyuki.plugins.liteecho 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : li..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugins.liteecho\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"async def liteecho(event: MessageEvent)","slug":"async-def-liteecho-event-messageevent","link":"#async-def-liteecho-event-messageevent","children":[]}],"git":{"createdTime":1724912379000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.26,"words":77},"filePathRelative":"dev/api/plugins/liteecho.md","localizedDate":"2024年8月29日","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,4 @@
|
||||
import{_ as e,o as t,c as n,e as s}from"./app-BvUYPzLF.js";const a={},o=s(`<h1 id="liteyuki-plugins-liteecho" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugins-liteecho"><span>liteyuki.plugins.liteecho</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : liteecho.py @Software: PyCharm</p><p><code>@on_startswith(['liteecho'], rule=is_su_rule).handle()</code></p><h3 id="async-def-liteecho-event-messageevent" tabindex="-1"><a class="header-anchor" href="#async-def-liteecho-event-messageevent"><span><em><strong>async def</strong></em> <code>liteecho(event: MessageEvent)</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugins/liteecho.py#L18" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token decorator annotation punctuation">@on_startswith</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'liteecho'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> rule<span class="token operator">=</span>is_su_rule<span class="token punctuation">)</span><span class="token punctuation">.</span>handle<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">liteecho</span><span class="token punctuation">(</span>event<span class="token punctuation">:</span> MessageEvent<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
event<span class="token punctuation">.</span>reply<span class="token punctuation">(</span>event<span class="token punctuation">.</span>raw_message<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">8</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,6),i=[o];function p(l,c){return t(),n("div",null,i)}const r=e(a,[["render",p],["__file","liteecho.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/plugins/liteecho.html","title":"liteyuki.plugins.liteecho","lang":"en-US","frontmatter":{"title":"liteyuki.plugins.liteecho","lastUpdated":false,"description":"liteyuki.plugins.liteecho Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugins/liteecho.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugins/liteecho.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugins.liteecho"}],["meta",{"property":"og:description","content":"liteyuki.plugins.liteecho Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugins.liteecho\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"async def liteecho(event: MessageEvent)","slug":"async-def-liteecho-event-messageevent","link":"#async-def-liteecho-event-messageevent","children":[]}],"git":{"createdTime":1724912379000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":1}]},"readingTime":{"minutes":0.24,"words":73},"filePathRelative":"en/dev/api/plugins/liteecho.md","localizedDate":"August 29, 2024","autoDesc":true}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,86 @@
|
||||
import{_ as p,r as o,o as e,c as i,b as s,d as n,a as l,w as c,e as a}from"./app-BvUYPzLF.js";const u={},r=a(`<h1 id="liteyuki-plugin-load" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin-load"><span>liteyuki.plugin.load</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm</p><h3 id="def-load-plugin-module-path-str-path-optional-plugin" tabindex="-1"><a class="header-anchor" href="#def-load-plugin-module-path-str-path-optional-plugin"><span><em><strong>def</strong></em> <code>load_plugin(module_path: str | Path) -> Optional[Plugin]</code></span></a></h3><p><strong>说明</strong>: 加载单个插件,可以是本地插件或是通过 <code>pip</code> 安装的插件。</p><p><strong>参数</strong>:</p><blockquote><ul><li>module_path: 插件名称 <code>path.to.your.plugin</code></li><li>或插件路径 <code>pathlib.Path(path/to/your/plugin)</code>:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L30" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_plugin</span><span class="token punctuation">(</span>module_path<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">|</span> Path<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Optional<span class="token punctuation">[</span>Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""加载单个插件,可以是本地插件或是通过 \`pip\` 安装的插件。
|
||||
|
||||
参数:
|
||||
module_path: 插件名称 \`path.to.your.plugin\`
|
||||
或插件路径 \`pathlib.Path(path/to/your/plugin)\`
|
||||
"""</span>
|
||||
module_path <span class="token operator">=</span> path_to_module_name<span class="token punctuation">(</span>Path<span class="token punctuation">(</span>module_path<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>module_path<span class="token punctuation">,</span> Path<span class="token punctuation">)</span> <span class="token keyword">else</span> module_path
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
module <span class="token operator">=</span> import_module<span class="token punctuation">(</span>module_path<span class="token punctuation">)</span>
|
||||
_plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span> <span class="token operator">=</span> Plugin<span class="token punctuation">(</span>name<span class="token operator">=</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">,</span> module<span class="token operator">=</span>module<span class="token punctuation">,</span> module_name<span class="token operator">=</span>module_path<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__plugin_metadata__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__plugin_metadata__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
|
||||
<span class="token keyword">elif</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__liteyuki_plugin_meta__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__liteyuki_plugin_meta__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> format_display_name<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>metadata<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">)"</span></span><span class="token punctuation">,</span> metadata<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__plugin_meta__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__plugin_meta__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> format_display_name<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>metadata<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">)"</span></span><span class="token punctuation">,</span> metadata<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'The metadata of Liteyuki plugin "</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">}</span></span><span class="token string">" is not specified, use empty.'</span></span><span class="token punctuation">)</span>
|
||||
metadata <span class="token operator">=</span> PluginMetadata<span class="token punctuation">(</span>name<span class="token operator">=</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">)</span>
|
||||
display_name <span class="token operator">=</span> module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
|
||||
_plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span><span class="token punctuation">.</span>metadata <span class="token operator">=</span> metadata
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Succeeded to load liteyuki plugin "</span><span class="token interpolation"><span class="token punctuation">{</span>display_name<span class="token punctuation">}</span></span><span class="token string">"'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> _plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span>
|
||||
<span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Failed to load liteyuki plugin "<r></span><span class="token interpolation"><span class="token punctuation">{</span>module_path<span class="token punctuation">}</span></span><span class="token string"></r>"'</span></span><span class="token punctuation">)</span>
|
||||
traceback<span class="token punctuation">.</span>print_exc<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">None</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin" tabindex="-1"><a class="header-anchor" href="#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin"><span><em><strong>def</strong></em> <code>load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]</code></span></a></h3><p><strong>说明</strong>: 导入文件夹下多个插件</p><p><strong>参数</strong>:</p><blockquote><ul><li>plugin_dir: 文件夹路径</li><li>ignore_warning: 是否忽略警告,通常是目录不存在或目录为空</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L88" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_plugins</span><span class="token punctuation">(</span><span class="token operator">*</span>plugin_dir<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> ignore_warning<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">set</span><span class="token punctuation">[</span>Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""导入文件夹下多个插件
|
||||
|
||||
参数:
|
||||
plugin_dir: 文件夹路径
|
||||
ignore_warning: 是否忽略警告,通常是目录不存在或目录为空
|
||||
"""</span>
|
||||
plugins <span class="token operator">=</span> <span class="token builtin">set</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> dir_path <span class="token keyword">in</span> plugin_dir<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' does not exist."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' is empty."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' is not a directory."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">for</span> f <span class="token keyword">in</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
path <span class="token operator">=</span> Path<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dir_path<span class="token punctuation">,</span> f<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
module_name <span class="token operator">=</span> <span class="token boolean">None</span>
|
||||
<span class="token keyword">if</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isfile<span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token keyword">and</span> f<span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.py'</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span>f <span class="token operator">!=</span> <span class="token string">'__init__.py'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
module_name <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>path_to_module_name<span class="token punctuation">(</span>Path<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">.</span><span class="token interpolation"><span class="token punctuation">{</span>f<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token format-spec">-3]</span><span class="token punctuation">}</span></span><span class="token string">'</span></span>
|
||||
<span class="token keyword">elif</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isdir<span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token keyword">and</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>path<span class="token punctuation">,</span> <span class="token string">'__init__.py'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
module_name <span class="token operator">=</span> path_to_module_name<span class="token punctuation">(</span>path<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> module_name<span class="token punctuation">:</span>
|
||||
load_plugin<span class="token punctuation">(</span>module_name<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> _plugins<span class="token punctuation">.</span>get<span class="token punctuation">(</span>module_name<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
plugins<span class="token punctuation">.</span>add<span class="token punctuation">(</span>_plugins<span class="token punctuation">[</span>module_name<span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> plugins
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-format-display-name-display-name-str-plugin-type-plugintype-str" tabindex="-1"><a class="header-anchor" href="#def-format-display-name-display-name-str-plugin-type-plugintype-str"><span><em><strong>def</strong></em> <code>format_display_name(display_name: str, plugin_type: PluginType) -> str</code></span></a></h3><p><strong>说明</strong>: 设置插件名称颜色,根据不同类型插件设置颜色</p><p><strong>参数</strong>:</p><blockquote><ul><li>display_name: 插件名称</li><li>plugin_type: 插件类型</li></ul></blockquote>`,17),k=s("strong",null,"返回",-1),d=a(`<details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L132" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">format_display_name</span><span class="token punctuation">(</span>display_name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> plugin_type<span class="token punctuation">:</span> PluginType<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置插件名称颜色,根据不同类型插件设置颜色
|
||||
Args:
|
||||
display_name: 插件名称
|
||||
plugin_type: 插件类型
|
||||
|
||||
Returns:
|
||||
str: 设置后的插件名称 <y>name</y>
|
||||
"""</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'y'</span>
|
||||
<span class="token keyword">match</span> plugin_type<span class="token punctuation">:</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>APPLICATION<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'m'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>TEST<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'g'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>MODULE<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'e'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>SERVICE<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'c'</span>
|
||||
<span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f'<</span><span class="token interpolation"><span class="token punctuation">{</span>color<span class="token punctuation">}</span></span><span class="token string">></span><span class="token interpolation"><span class="token punctuation">{</span>display_name<span class="token punctuation">}</span></span><span class="token string"> [</span><span class="token interpolation"><span class="token punctuation">{</span>plugin_type<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">]</</span><span class="token interpolation"><span class="token punctuation">{</span>color<span class="token punctuation">}</span></span><span class="token string">>'</span></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,1);function m(g,_){const t=o("y");return e(),i("div",null,[r,s("p",null,[k,n(": str: 设置后的插件名称 "),l(t,null,{default:c(()=>[n("name")]),_:1})]),d])}const y=p(u,[["render",m],["__file","load.html.vue"]]),b=JSON.parse('{"path":"/dev/api/plugin/load.html","title":"liteyuki.plugin.load","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugin.load","lastUpdated":false,"description":"liteyuki.plugin.load 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/load.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/load.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugin.load"}],["meta",{"property":"og:description","content":"liteyuki.plugin.load 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.load\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","slug":"def-load-plugin-module-path-str-path-optional-plugin","link":"#def-load-plugin-module-path-str-path-optional-plugin","children":[]},{"level":3,"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","slug":"def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","link":"#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","children":[]},{"level":3,"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","slug":"def-format-display-name-display-name-str-plugin-type-plugintype-str","link":"#def-format-display-name-display-name-str-plugin-type-plugintype-str","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":5}]},"readingTime":{"minutes":2.19,"words":658},"filePathRelative":"dev/api/plugin/load.md","localizedDate":"2024年8月19日","autoDesc":true}');export{y as comp,b as data};
|
||||
@@ -0,0 +1,86 @@
|
||||
import{_ as p,r as o,o as e,c as i,b as s,d as n,a as l,w as c,e as a}from"./app-BvUYPzLF.js";const u={},r=a(`<h1 id="liteyuki-plugin-load" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin-load"><span>liteyuki.plugin.load</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm</p><h3 id="def-load-plugin-module-path-str-path-optional-plugin" tabindex="-1"><a class="header-anchor" href="#def-load-plugin-module-path-str-path-optional-plugin"><span><em><strong>def</strong></em> <code>load_plugin(module_path: str | Path) -> Optional[Plugin]</code></span></a></h3><p><strong>Description</strong>: 加载单个插件,可以是本地插件或是通过 <code>pip</code> 安装的插件。</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>module_path: 插件名称 <code>path.to.your.plugin</code></li><li>或插件路径 <code>pathlib.Path(path/to/your/plugin)</code>:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L30" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_plugin</span><span class="token punctuation">(</span>module_path<span class="token punctuation">:</span> <span class="token builtin">str</span> <span class="token operator">|</span> Path<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Optional<span class="token punctuation">[</span>Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""加载单个插件,可以是本地插件或是通过 \`pip\` 安装的插件。
|
||||
|
||||
参数:
|
||||
module_path: 插件名称 \`path.to.your.plugin\`
|
||||
或插件路径 \`pathlib.Path(path/to/your/plugin)\`
|
||||
"""</span>
|
||||
module_path <span class="token operator">=</span> path_to_module_name<span class="token punctuation">(</span>Path<span class="token punctuation">(</span>module_path<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token builtin">isinstance</span><span class="token punctuation">(</span>module_path<span class="token punctuation">,</span> Path<span class="token punctuation">)</span> <span class="token keyword">else</span> module_path
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
module <span class="token operator">=</span> import_module<span class="token punctuation">(</span>module_path<span class="token punctuation">)</span>
|
||||
_plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span> <span class="token operator">=</span> Plugin<span class="token punctuation">(</span>name<span class="token operator">=</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">,</span> module<span class="token operator">=</span>module<span class="token punctuation">,</span> module_name<span class="token operator">=</span>module_path<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__plugin_metadata__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__plugin_metadata__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
|
||||
<span class="token keyword">elif</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__liteyuki_plugin_meta__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__liteyuki_plugin_meta__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> format_display_name<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>metadata<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">)"</span></span><span class="token punctuation">,</span> metadata<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">elif</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'__plugin_meta__'</span><span class="token punctuation">,</span> <span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
metadata<span class="token punctuation">:</span> <span class="token string">'PluginMetadata'</span> <span class="token operator">=</span> module<span class="token punctuation">.</span>__dict__<span class="token punctuation">[</span><span class="token string">'__plugin_meta__'</span><span class="token punctuation">]</span>
|
||||
display_name <span class="token operator">=</span> format_display_name<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>metadata<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">(</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span><span class="token string">)"</span></span><span class="token punctuation">,</span> metadata<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'The metadata of Liteyuki plugin "</span><span class="token interpolation"><span class="token punctuation">{</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">}</span></span><span class="token string">" is not specified, use empty.'</span></span><span class="token punctuation">)</span>
|
||||
metadata <span class="token operator">=</span> PluginMetadata<span class="token punctuation">(</span>name<span class="token operator">=</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">)</span>
|
||||
display_name <span class="token operator">=</span> module<span class="token punctuation">.</span>__name__<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
|
||||
_plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span><span class="token punctuation">.</span>metadata <span class="token operator">=</span> metadata
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Succeeded to load liteyuki plugin "</span><span class="token interpolation"><span class="token punctuation">{</span>display_name<span class="token punctuation">}</span></span><span class="token string">"'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> _plugins<span class="token punctuation">[</span>module<span class="token punctuation">.</span>__name__<span class="token punctuation">]</span>
|
||||
<span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>opt<span class="token punctuation">(</span>colors<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Failed to load liteyuki plugin "<r></span><span class="token interpolation"><span class="token punctuation">{</span>module_path<span class="token punctuation">}</span></span><span class="token string"></r>"'</span></span><span class="token punctuation">)</span>
|
||||
traceback<span class="token punctuation">.</span>print_exc<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> <span class="token boolean">None</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin" tabindex="-1"><a class="header-anchor" href="#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin"><span><em><strong>def</strong></em> <code>load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]</code></span></a></h3><p><strong>Description</strong>: 导入文件夹下多个插件</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>plugin_dir: 文件夹路径</li><li>ignore_warning: 是否忽略警告,通常是目录不存在或目录为空</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L88" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">load_plugins</span><span class="token punctuation">(</span><span class="token operator">*</span>plugin_dir<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> ignore_warning<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">set</span><span class="token punctuation">[</span>Plugin<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""导入文件夹下多个插件
|
||||
|
||||
参数:
|
||||
plugin_dir: 文件夹路径
|
||||
ignore_warning: 是否忽略警告,通常是目录不存在或目录为空
|
||||
"""</span>
|
||||
plugins <span class="token operator">=</span> <span class="token builtin">set</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">for</span> dir_path <span class="token keyword">in</span> plugin_dir<span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' does not exist."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' is empty."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> ignore_warning<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Plugins dir '</span><span class="token interpolation"><span class="token punctuation">{</span>dir_path<span class="token punctuation">}</span></span><span class="token string">' is not a directory."</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">for</span> f <span class="token keyword">in</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
path <span class="token operator">=</span> Path<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dir_path<span class="token punctuation">,</span> f<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
module_name <span class="token operator">=</span> <span class="token boolean">None</span>
|
||||
<span class="token keyword">if</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isfile<span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token keyword">and</span> f<span class="token punctuation">.</span>endswith<span class="token punctuation">(</span><span class="token string">'.py'</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span>f <span class="token operator">!=</span> <span class="token string">'__init__.py'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
module_name <span class="token operator">=</span> <span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>path_to_module_name<span class="token punctuation">(</span>Path<span class="token punctuation">(</span>dir_path<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">.</span><span class="token interpolation"><span class="token punctuation">{</span>f<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token format-spec">-3]</span><span class="token punctuation">}</span></span><span class="token string">'</span></span>
|
||||
<span class="token keyword">elif</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>isdir<span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token keyword">and</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>path<span class="token punctuation">,</span> <span class="token string">'__init__.py'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
module_name <span class="token operator">=</span> path_to_module_name<span class="token punctuation">(</span>path<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> module_name<span class="token punctuation">:</span>
|
||||
load_plugin<span class="token punctuation">(</span>module_name<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> _plugins<span class="token punctuation">.</span>get<span class="token punctuation">(</span>module_name<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
plugins<span class="token punctuation">.</span>add<span class="token punctuation">(</span>_plugins<span class="token punctuation">[</span>module_name<span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> plugins
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-format-display-name-display-name-str-plugin-type-plugintype-str" tabindex="-1"><a class="header-anchor" href="#def-format-display-name-display-name-str-plugin-type-plugintype-str"><span><em><strong>def</strong></em> <code>format_display_name(display_name: str, plugin_type: PluginType) -> str</code></span></a></h3><p><strong>Description</strong>: 设置插件名称颜色,根据不同类型插件设置颜色</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>display_name: 插件名称</li><li>plugin_type: 插件类型</li></ul></blockquote>`,17),k=s("strong",null,"Return",-1),d=a(`<details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/load.py#L132" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">format_display_name</span><span class="token punctuation">(</span>display_name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> plugin_type<span class="token punctuation">:</span> PluginType<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
设置插件名称颜色,根据不同类型插件设置颜色
|
||||
Args:
|
||||
display_name: 插件名称
|
||||
plugin_type: 插件类型
|
||||
|
||||
Returns:
|
||||
str: 设置后的插件名称 <y>name</y>
|
||||
"""</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'y'</span>
|
||||
<span class="token keyword">match</span> plugin_type<span class="token punctuation">:</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>APPLICATION<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'m'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>TEST<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'g'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>MODULE<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'e'</span>
|
||||
<span class="token keyword">case</span> PluginType<span class="token punctuation">.</span>SERVICE<span class="token punctuation">:</span>
|
||||
color <span class="token operator">=</span> <span class="token string">'c'</span>
|
||||
<span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f'<</span><span class="token interpolation"><span class="token punctuation">{</span>color<span class="token punctuation">}</span></span><span class="token string">></span><span class="token interpolation"><span class="token punctuation">{</span>display_name<span class="token punctuation">}</span></span><span class="token string"> [</span><span class="token interpolation"><span class="token punctuation">{</span>plugin_type<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span><span class="token string">]</</span><span class="token interpolation"><span class="token punctuation">{</span>color<span class="token punctuation">}</span></span><span class="token string">>'</span></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,1);function m(g,_){const t=o("y");return e(),i("div",null,[r,s("p",null,[k,n(": str: 设置后的插件名称 "),l(t,null,{default:c(()=>[n("name")]),_:1})]),d])}const y=p(u,[["render",m],["__file","load.html.vue"]]),b=JSON.parse('{"path":"/en/dev/api/plugin/load.html","title":"liteyuki.plugin.load","lang":"en-US","frontmatter":{"title":"liteyuki.plugin.load","lastUpdated":false,"description":"liteyuki.plugin.load Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File ...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/load.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/load.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugin.load"}],["meta",{"property":"og:description","content":"liteyuki.plugin.load Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.load\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","slug":"def-load-plugin-module-path-str-path-optional-plugin","link":"#def-load-plugin-module-path-str-path-optional-plugin","children":[]},{"level":3,"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","slug":"def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","link":"#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","children":[]},{"level":3,"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","slug":"def-format-display-name-display-name-str-plugin-type-plugintype-str","link":"#def-format-display-name-display-name-str-plugin-type-plugintype-str","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":2.14,"words":641},"filePathRelative":"en/dev/api/plugin/load.md","localizedDate":"August 21, 2024","autoDesc":true}');export{y as comp,b as data};
|
||||
@@ -0,0 +1,20 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},o=t(`<h1 id="liteyuki-log" tabindex="-1"><a class="header-anchor" href="#liteyuki-log"><span>liteyuki.log</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py @Software: PyCharm</p><h3 id="def-get-format-level-str-str" tabindex="-1"><a class="header-anchor" href="#def-get-format-level-str-str"><span><em><strong>def</strong></em> <code>get_format(level: str) -> str</code></span></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/log.py#L34" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_format</span><span class="token punctuation">(</span>level<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> level <span class="token operator">==</span> <span class="token string">'DEBUG'</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> debug_format
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> default_format
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-init-log-config-dict" tabindex="-1"><a class="header-anchor" href="#def-init-log-config-dict"><span><em><strong>def</strong></em> <code>init_log(config: dict)</code></span></a></h3><p><strong>Description</strong>: 在语言加载完成后执行</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/log.py#L41" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init_log</span><span class="token punctuation">(</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
在语言加载完成后执行
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>remove<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>add<span class="token punctuation">(</span>sys<span class="token punctuation">.</span>stdout<span class="token punctuation">,</span> level<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> diagnose<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> <span class="token builtin">format</span><span class="token operator">=</span>get_format<span class="token punctuation">(</span>config<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'log_level'</span><span class="token punctuation">,</span> <span class="token string">'INFO'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
show_icon <span class="token operator">=</span> config<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'log_icon'</span><span class="token punctuation">,</span> <span class="token boolean">True</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'DEBUG'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<blue>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'🐛'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">DEBUG"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'INFO'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<normal>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'ℹ️'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">INFO"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'SUCCESS'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<green>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'✅'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">SUCCESS"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'WARNING'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<yellow>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'⚠️'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">WARNING"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'ERROR'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<red>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'⭕'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">ERROR"</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,8),p=[o];function i(l,c){return s(),a("div",null,p)}const u=n(e,[["render",i],["__file","log.html.vue"]]),k=JSON.parse('{"path":"/en/dev/api/log.html","title":"liteyuki.log","lang":"en-US","frontmatter":{"title":"liteyuki.log","lastUpdated":false,"description":"liteyuki.log Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py ...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/log.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/log.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.log"}],["meta",{"property":"og:description","content":"liteyuki.log Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.log\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def get_format(level: str) -> str","slug":"def-get-format-level-str-str","link":"#def-get-format-level-str-str","children":[]},{"level":3,"title":"def init_log(config: dict)","slug":"def-init-log-config-dict","link":"#def-init-log-config-dict","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.61,"words":184},"filePathRelative":"en/dev/api/log.md","localizedDate":"August 21, 2024","autoDesc":true}');export{u as comp,k as data};
|
||||
@@ -0,0 +1,20 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},o=t(`<h1 id="liteyuki-log" tabindex="-1"><a class="header-anchor" href="#liteyuki-log"><span>liteyuki.log</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py @Software: PyCharm</p><h3 id="def-get-format-level-str-str" tabindex="-1"><a class="header-anchor" href="#def-get-format-level-str-str"><span><em><strong>def</strong></em> <code>get_format(level: str) -> str</code></span></a></h3><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/log.py#L34" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">get_format</span><span class="token punctuation">(</span>level<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">if</span> level <span class="token operator">==</span> <span class="token string">'DEBUG'</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> debug_format
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> default_format
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-init-log-config-dict" tabindex="-1"><a class="header-anchor" href="#def-init-log-config-dict"><span><em><strong>def</strong></em> <code>init_log(config: dict)</code></span></a></h3><p><strong>说明</strong>: 在语言加载完成后执行</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/log.py#L41" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">init_log</span><span class="token punctuation">(</span>config<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
在语言加载完成后执行
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
logger<span class="token punctuation">.</span>remove<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>add<span class="token punctuation">(</span>sys<span class="token punctuation">.</span>stdout<span class="token punctuation">,</span> level<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> diagnose<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> <span class="token builtin">format</span><span class="token operator">=</span>get_format<span class="token punctuation">(</span>config<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'log_level'</span><span class="token punctuation">,</span> <span class="token string">'INFO'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
show_icon <span class="token operator">=</span> config<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'log_icon'</span><span class="token punctuation">,</span> <span class="token boolean">True</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'DEBUG'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<blue>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'🐛'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">DEBUG"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'INFO'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<normal>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'ℹ️'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">INFO"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'SUCCESS'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<green>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'✅'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">SUCCESS"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'WARNING'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<yellow>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'⚠️'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">WARNING"</span></span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>level<span class="token punctuation">(</span><span class="token string">'ERROR'</span><span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'<red>'</span><span class="token punctuation">,</span> icon<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token string">'⭕'</span> <span class="token keyword">if</span> show_icon <span class="token keyword">else</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">ERROR"</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,8),p=[o];function l(i,c){return s(),a("div",null,p)}const u=n(e,[["render",l],["__file","log.html.vue"]]),k=JSON.parse('{"path":"/dev/api/log.html","title":"liteyuki.log","lang":"zh-CN","frontmatter":{"title":"liteyuki.log","lastUpdated":false,"description":"liteyuki.log 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py @Software...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/log.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/log.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.log"}],["meta",{"property":"og:description","content":"liteyuki.log 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午9:12 @Author : snowykami @Email : snowykami@outlook.com @File : log.py @Software..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.log\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"def get_format(level: str) -> str","slug":"def-get-format-level-str-str","link":"#def-get-format-level-str-str","children":[]},{"level":3,"title":"def init_log(config: dict)","slug":"def-init-log-config-dict","link":"#def-init-log-config-dict","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":5}]},"readingTime":{"minutes":0.64,"words":192},"filePathRelative":"dev/api/log.md","localizedDate":"2024年8月19日","autoDesc":true}');export{u as comp,k as data};
|
||||
@@ -0,0 +1,101 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},p=t(`<h1 id="liteyuki-core-manager" tabindex="-1"><a class="header-anchor" href="#liteyuki-core-manager"><span>liteyuki.core.manager</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm</p><h3 id="class-channeldeliver" tabindex="-1"><a class="header-anchor" href="#class-channeldeliver"><span><em><strong>class</strong></em> <code>ChannelDeliver</code></span></a></h3><h4 id="def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any" tabindex="-1"><a class="header-anchor" href="#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any"><span><em><strong>def</strong></em> <code>__init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L43" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> active<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">,</span> passive<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">,</span> channel_deliver_active<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> channel_deliver_passive<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span><span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> publish<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span><span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>active <span class="token operator">=</span> active
|
||||
self<span class="token punctuation">.</span>passive <span class="token operator">=</span> passive
|
||||
self<span class="token punctuation">.</span>channel_deliver_active <span class="token operator">=</span> channel_deliver_active
|
||||
self<span class="token punctuation">.</span>channel_deliver_passive <span class="token operator">=</span> channel_deliver_passive
|
||||
self<span class="token punctuation">.</span>publish <span class="token operator">=</span> publish
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="class-processmanager" tabindex="-1"><a class="header-anchor" href="#class-processmanager"><span><em><strong>class</strong></em> <code>ProcessManager</code></span></a></h3><h4 id="def-init-self-lifespan-lifespan" tabindex="-1"><a class="header-anchor" href="#def-init-self-lifespan-lifespan"><span><em><strong>def</strong></em> <code>__init__(self, lifespan: Lifespan)</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L86" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> lifespan<span class="token punctuation">:</span> <span class="token string">'Lifespan'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>lifespan <span class="token operator">=</span> lifespan
|
||||
self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span>Callable<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
self<span class="token punctuation">.</span>processes<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Process<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-process-self-name-str" tabindex="-1"><a class="header-anchor" href="#async-def-run-process-self-name-str"><span><em><strong>async def</strong></em> <code>_run_process(self, name: str)</code></span></a></h4><p><strong>Description</strong>: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L91" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run_process</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
|
||||
Args:
|
||||
name:
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> KeyError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">_start_process</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
process <span class="token operator">=</span> Process<span class="token punctuation">(</span>target<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span> args<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> kwargs<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> daemon<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> process
|
||||
process<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
_start_process<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> chan_active<span class="token punctuation">.</span>async_receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> data <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Stopping process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_shutdown<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
<span class="token keyword">break</span>
|
||||
<span class="token keyword">elif</span> data <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Restarting process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_shutdown<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_restart<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
_start_process<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string">'Unknown data received, ignored.'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-start-all-self" tabindex="-1"><a class="header-anchor" href="#async-def-start-all-self"><span><em><strong>async def</strong></em> <code>start_all(self)</code></span></a></h4><p><strong>Description</strong>: 对外启动方法,启动所有进程,创建asyncio task</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L131" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">start_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
对外启动方法,启动所有进程,创建asyncio task
|
||||
"""</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>chan<span class="token punctuation">.</span>start_receive_loop<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> chan <span class="token keyword">in</span> get_channels<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>values<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>sm<span class="token punctuation">.</span>start_receive_loop<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> sm <span class="token keyword">in</span> <span class="token punctuation">[</span>shared_memory<span class="token punctuation">]</span><span class="token punctuation">]</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_run_process<span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> name <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none" tabindex="-1"><a class="header-anchor" href="#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none"><span><em><strong>def</strong></em> <code>add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)</code></span></a></h4><p><strong>Description</strong>: 添加进程</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 进程名,用于获取和唯一标识</li><li>target: 进程函数</li><li>args: 进程函数参数</li><li>kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L139" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">add_target</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> target<span class="token punctuation">:</span> TARGET_FUNC<span class="token punctuation">,</span> args<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token operator">=</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> kwargs<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
添加进程
|
||||
Args:
|
||||
name: 进程名,用于获取和唯一标识
|
||||
target: 进程函数
|
||||
args: 进程函数参数
|
||||
kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> kwargs <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
kwargs <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
chan_active<span class="token punctuation">:</span> Channel <span class="token operator">=</span> Channel<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_passive<span class="token punctuation">:</span> Channel <span class="token operator">=</span> Channel<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-passive'</span></span><span class="token punctuation">)</span>
|
||||
channel_deliver <span class="token operator">=</span> ChannelDeliver<span class="token punctuation">(</span>active<span class="token operator">=</span>chan_active<span class="token punctuation">,</span> passive<span class="token operator">=</span>chan_passive<span class="token punctuation">,</span> channel_deliver_active<span class="token operator">=</span>channel_deliver_active_channel<span class="token punctuation">,</span> channel_deliver_passive<span class="token operator">=</span>channel_deliver_passive_channel<span class="token punctuation">,</span> publish<span class="token operator">=</span>publish_channel<span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span>_delivery_channel_wrapper<span class="token punctuation">,</span> <span class="token punctuation">(</span>target<span class="token punctuation">,</span> channel_deliver<span class="token punctuation">,</span> shared_memory<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">)</span><span class="token punctuation">,</span> kwargs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-join-all-self" tabindex="-1"><a class="header-anchor" href="#def-join-all-self"><span><em><strong>def</strong></em> <code>join_all(self)</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L164" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">join_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>name<span class="token punctuation">,</span> process<span class="token punctuation">)</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
process<span class="token punctuation">.</span>join<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-terminate-self-name-str" tabindex="-1"><a class="header-anchor" href="#def-terminate-self-name-str"><span><em><strong>def</strong></em> <code>terminate(self, name: str)</code></span></a></h4><p><strong>Description</strong>: 终止进程并从进程字典中删除</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L168" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">terminate</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
终止进程并从进程字典中删除
|
||||
Args:
|
||||
name:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span>
|
||||
process <span class="token operator">=</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span>
|
||||
process<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
process<span class="token punctuation">.</span>join<span class="token punctuation">(</span>TIMEOUT<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> process<span class="token punctuation">.</span>is_alive<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
process<span class="token punctuation">.</span>kill<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> terminated.'</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-terminate-all-self" tabindex="-1"><a class="header-anchor" href="#def-terminate-all-self"><span><em><strong>def</strong></em> <code>terminate_all(self)</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L187" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">terminate_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> name <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-is-process-alive-self-name-str-bool" tabindex="-1"><a class="header-anchor" href="#def-is-process-alive-self-name-str-bool"><span><em><strong>def</strong></em> <code>is_process_alive(self, name: str) -> bool</code></span></a></h4><p><strong>Description</strong>: 检查进程是否存活</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L191" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">is_process_alive</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
检查进程是否存活
|
||||
Args:
|
||||
name:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">.</span>is_alive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,36),o=[p];function i(c,l){return s(),a("div",null,o)}const r=n(e,[["render",i],["__file","manager.html.vue"]]),k=JSON.parse('{"path":"/en/dev/api/core/manager.html","title":"liteyuki.core.manager","lang":"en-US","frontmatter":{"title":"liteyuki.core.manager","lastUpdated":false,"description":"liteyuki.core.manager Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/core/manager.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/core/manager.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.core.manager"}],["meta",{"property":"og:description","content":"liteyuki.core.manager Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.core.manager\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class ChannelDeliver","slug":"class-channeldeliver","link":"#class-channeldeliver","children":[]},{"level":3,"title":"class ProcessManager","slug":"class-processmanager","link":"#class-processmanager","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":2.71,"words":812},"filePathRelative":"en/dev/api/core/manager.md","localizedDate":"August 21, 2024","autoDesc":true}');export{r as comp,k as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as a,c as i,b as e,d as o}from"./app-BvUYPzLF.js";const n={},r=e("h1",{id:"liteyuki-plugin-manager",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-plugin-manager"},[e("span",null,"liteyuki.plugin.manager")])],-1),l=e("p",null,[e("strong",null,"说明"),o(": Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved")],-1),m=e("p",null,"@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm",-1),p=[r,l,m];function s(u,c){return a(),i("div",null,p)}const g=t(n,[["render",s],["__file","manager.html.vue"]]),h=JSON.parse('{"path":"/dev/api/plugin/manager.html","title":"liteyuki.plugin.manager","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugin.manager","lastUpdated":false,"description":"liteyuki.plugin.manager 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : mana...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/manager.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/manager.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugin.manager"}],["meta",{"property":"og:description","content":"liteyuki.plugin.manager 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : mana..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.manager\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.1,"words":29},"filePathRelative":"dev/api/plugin/manager.md","localizedDate":"2024年8月19日","autoDesc":true}');export{g as comp,h as data};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as i,c as a,b as e,d as o}from"./app-BvUYPzLF.js";const n={},r=e("h1",{id:"liteyuki-plugin-manager",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#liteyuki-plugin-manager"},[e("span",null,"liteyuki.plugin.manager")])],-1),l=e("p",null,[e("strong",null,"Description"),o(": Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved")],-1),p=e("p",null,"@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm",-1),m=[r,l,p];function s(c,u){return i(),a("div",null,m)}const d=t(n,[["render",s],["__file","manager.html.vue"]]),h=JSON.parse('{"path":"/en/dev/api/plugin/manager.html","title":"liteyuki.plugin.manager","lang":"en-US","frontmatter":{"title":"liteyuki.plugin.manager","lastUpdated":false,"description":"liteyuki.plugin.manager Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @Fi...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/manager.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/manager.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugin.manager"}],["meta",{"property":"og:description","content":"liteyuki.plugin.manager Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @Fi..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.manager\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/dev/api/plugin/manager.md","localizedDate":"August 21, 2024","autoDesc":true}');export{d as comp,h as data};
|
||||
@@ -0,0 +1,101 @@
|
||||
import{_ as n,o as s,c as a,e as t}from"./app-BvUYPzLF.js";const e={},p=t(`<h1 id="liteyuki-core-manager" tabindex="-1"><a class="header-anchor" href="#liteyuki-core-manager"><span>liteyuki.core.manager</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm</p><h3 id="class-channeldeliver" tabindex="-1"><a class="header-anchor" href="#class-channeldeliver"><span><em><strong>class</strong></em> <code>ChannelDeliver</code></span></a></h3><h4 id="def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any" tabindex="-1"><a class="header-anchor" href="#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any"><span><em><strong>def</strong></em> <code>__init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L43" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> active<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">,</span> passive<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">,</span> channel_deliver_active<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span>Channel<span class="token punctuation">[</span>Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> channel_deliver_passive<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span><span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> publish<span class="token punctuation">:</span> Channel<span class="token punctuation">[</span><span class="token builtin">tuple</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Any<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>active <span class="token operator">=</span> active
|
||||
self<span class="token punctuation">.</span>passive <span class="token operator">=</span> passive
|
||||
self<span class="token punctuation">.</span>channel_deliver_active <span class="token operator">=</span> channel_deliver_active
|
||||
self<span class="token punctuation">.</span>channel_deliver_passive <span class="token operator">=</span> channel_deliver_passive
|
||||
self<span class="token punctuation">.</span>publish <span class="token operator">=</span> publish
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="class-processmanager" tabindex="-1"><a class="header-anchor" href="#class-processmanager"><span><em><strong>class</strong></em> <code>ProcessManager</code></span></a></h3><h4 id="def-init-self-lifespan-lifespan" tabindex="-1"><a class="header-anchor" href="#def-init-self-lifespan-lifespan"><span><em><strong>def</strong></em> <code>__init__(self, lifespan: Lifespan)</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L86" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> lifespan<span class="token punctuation">:</span> <span class="token string">'Lifespan'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>lifespan <span class="token operator">=</span> lifespan
|
||||
self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">[</span>Callable<span class="token punctuation">,</span> <span class="token builtin">tuple</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
self<span class="token punctuation">.</span>processes<span class="token punctuation">:</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token builtin">str</span><span class="token punctuation">,</span> Process<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-process-self-name-str" tabindex="-1"><a class="header-anchor" href="#async-def-run-process-self-name-str"><span><em><strong>async def</strong></em> <code>_run_process(self, name: str)</code></span></a></h4><p><strong>说明</strong>: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task</p><p><strong>参数</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L91" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">_run_process</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
|
||||
Args:
|
||||
name:
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
<span class="token keyword">raise</span> KeyError<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
chan_active <span class="token operator">=</span> get_channel<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">_start_process</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
process <span class="token operator">=</span> Process<span class="token punctuation">(</span>target<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span> args<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> kwargs<span class="token operator">=</span>self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> daemon<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> process
|
||||
process<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
_start_process<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
|
||||
data <span class="token operator">=</span> <span class="token keyword">await</span> chan_active<span class="token punctuation">.</span>async_receive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> data <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Stopping process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_shutdown<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
<span class="token keyword">break</span>
|
||||
<span class="token keyword">elif</span> data <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Restarting process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_shutdown<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">await</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_process_restart<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
_start_process<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">continue</span>
|
||||
<span class="token keyword">else</span><span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string">'Unknown data received, ignored.'</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-start-all-self" tabindex="-1"><a class="header-anchor" href="#async-def-start-all-self"><span><em><strong>async def</strong></em> <code>start_all(self)</code></span></a></h4><p><strong>说明</strong>: 对外启动方法,启动所有进程,创建asyncio task</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L131" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">start_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
对外启动方法,启动所有进程,创建asyncio task
|
||||
"""</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>chan<span class="token punctuation">.</span>start_receive_loop<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> chan <span class="token keyword">in</span> get_channels<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>values<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>sm<span class="token punctuation">.</span>start_receive_loop<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> sm <span class="token keyword">in</span> <span class="token punctuation">[</span>shared_memory<span class="token punctuation">]</span><span class="token punctuation">]</span>
|
||||
<span class="token punctuation">[</span>asyncio<span class="token punctuation">.</span>create_task<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_run_process<span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> name <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none" tabindex="-1"><a class="header-anchor" href="#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none"><span><em><strong>def</strong></em> <code>add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)</code></span></a></h4><p><strong>说明</strong>: 添加进程</p><p><strong>参数</strong>:</p><blockquote><ul><li>name: 进程名,用于获取和唯一标识</li><li>target: 进程函数</li><li>args: 进程函数参数</li><li>kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L139" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">add_target</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">,</span> target<span class="token punctuation">:</span> TARGET_FUNC<span class="token punctuation">,</span> args<span class="token punctuation">:</span> <span class="token builtin">tuple</span><span class="token operator">=</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> kwargs<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
添加进程
|
||||
Args:
|
||||
name: 进程名,用于获取和唯一标识
|
||||
target: 进程函数
|
||||
args: 进程函数参数
|
||||
kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> kwargs <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
kwargs <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
chan_active<span class="token punctuation">:</span> Channel <span class="token operator">=</span> Channel<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-active'</span></span><span class="token punctuation">)</span>
|
||||
chan_passive<span class="token punctuation">:</span> Channel <span class="token operator">=</span> Channel<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string-interpolation"><span class="token string">f'</span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">-passive'</span></span><span class="token punctuation">)</span>
|
||||
channel_deliver <span class="token operator">=</span> ChannelDeliver<span class="token punctuation">(</span>active<span class="token operator">=</span>chan_active<span class="token punctuation">,</span> passive<span class="token operator">=</span>chan_passive<span class="token punctuation">,</span> channel_deliver_active<span class="token operator">=</span>channel_deliver_active_channel<span class="token punctuation">,</span> channel_deliver_passive<span class="token operator">=</span>channel_deliver_passive_channel<span class="token punctuation">,</span> publish<span class="token operator">=</span>publish_channel<span class="token punctuation">)</span>
|
||||
self<span class="token punctuation">.</span>targets<span class="token punctuation">[</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span>_delivery_channel_wrapper<span class="token punctuation">,</span> <span class="token punctuation">(</span>target<span class="token punctuation">,</span> channel_deliver<span class="token punctuation">,</span> shared_memory<span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">)</span><span class="token punctuation">,</span> kwargs<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-join-all-self" tabindex="-1"><a class="header-anchor" href="#def-join-all-self"><span><em><strong>def</strong></em> <code>join_all(self)</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L164" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">join_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> <span class="token punctuation">(</span>name<span class="token punctuation">,</span> process<span class="token punctuation">)</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
process<span class="token punctuation">.</span>join<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-terminate-self-name-str" tabindex="-1"><a class="header-anchor" href="#def-terminate-self-name-str"><span><em><strong>def</strong></em> <code>terminate(self, name: str)</code></span></a></h4><p><strong>说明</strong>: 终止进程并从进程字典中删除</p><p><strong>参数</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L168" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">terminate</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
终止进程并从进程字典中删除
|
||||
Args:
|
||||
name:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span>
|
||||
process <span class="token operator">=</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span>
|
||||
process<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
process<span class="token punctuation">.</span>join<span class="token punctuation">(</span>TIMEOUT<span class="token punctuation">)</span>
|
||||
<span class="token keyword">if</span> process<span class="token punctuation">.</span>is_alive<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
process<span class="token punctuation">.</span>kill<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
logger<span class="token punctuation">.</span>success<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> terminated.'</span></span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-terminate-all-self" tabindex="-1"><a class="header-anchor" href="#def-terminate-all-self"><span><em><strong>def</strong></em> <code>terminate_all(self)</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L187" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">terminate_all</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">for</span> name <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>terminate<span class="token punctuation">(</span>name<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-is-process-alive-self-name-str-bool" tabindex="-1"><a class="header-anchor" href="#def-is-process-alive-self-name-str-bool"><span><em><strong>def</strong></em> <code>is_process_alive(self, name: str) -> bool</code></span></a></h4><p><strong>说明</strong>: 检查进程是否存活</p><p><strong>参数</strong>:</p><blockquote><ul><li>name:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/core/manager.py#L191" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">is_process_alive</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
检查进程是否存活
|
||||
Args:
|
||||
name:
|
||||
|
||||
Returns:
|
||||
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> name <span class="token keyword">not</span> <span class="token keyword">in</span> self<span class="token punctuation">.</span>targets<span class="token punctuation">:</span>
|
||||
logger<span class="token punctuation">.</span>warning<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Process </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string"> not found.'</span></span><span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> self<span class="token punctuation">.</span>processes<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">.</span>is_alive<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,36),o=[p];function i(c,l){return s(),a("div",null,o)}const r=n(e,[["render",i],["__file","manager.html.vue"]]),k=JSON.parse('{"path":"/dev/api/core/manager.html","title":"liteyuki.core.manager","lang":"zh-CN","frontmatter":{"title":"liteyuki.core.manager","lastUpdated":false,"description":"liteyuki.core.manager 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manage...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/core/manager.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/core/manager.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.core.manager"}],["meta",{"property":"og:description","content":"liteyuki.core.manager 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manage..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.core.manager\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class ChannelDeliver","slug":"class-channeldeliver","link":"#class-channeldeliver","children":[]},{"level":3,"title":"class ProcessManager","slug":"class-processmanager","link":"#class-processmanager","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":6}]},"readingTime":{"minutes":2.83,"words":849},"filePathRelative":"dev/api/core/manager.md","localizedDate":"2024年8月19日","autoDesc":true}');export{r as comp,k as data};
|
||||
@@ -0,0 +1,38 @@
|
||||
import{_ as n,o as e,c as s,e as a}from"./app-BvUYPzLF.js";const t={},o=a(`<h1 id="liteyuki-message-matcher" tabindex="-1"><a class="header-anchor" href="#liteyuki-message-matcher"><span>liteyuki.message.matcher</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm</p><h3 id="class-matcher" tabindex="-1"><a class="header-anchor" href="#class-matcher"><span><em><strong>class</strong></em> <code>Matcher</code></span></a></h3><h4 id="def-init-self-rule-rule-priority-int-block-bool" tabindex="-1"><a class="header-anchor" href="#def-init-self-rule-rule-priority-int-block-bool"><span><em><strong>def</strong></em> <code>__init__(self, rule: Rule, priority: int, block: bool)</code></span></a></h4><p><strong>说明</strong>: 匹配器</p><p><strong>参数</strong>:</p><blockquote><ul><li>rule: 规则</li><li>priority: 优先级 >= 0</li><li>block: 是否阻断后续优先级更低的匹配器</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L21" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> rule<span class="token punctuation">:</span> Rule<span class="token punctuation">,</span> priority<span class="token punctuation">:</span> <span class="token builtin">int</span><span class="token punctuation">,</span> block<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
匹配器
|
||||
Args:
|
||||
rule: 规则
|
||||
priority: 优先级 >= 0
|
||||
block: 是否阻断后续优先级更低的匹配器
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>rule <span class="token operator">=</span> rule
|
||||
self<span class="token punctuation">.</span>priority <span class="token operator">=</span> priority
|
||||
self<span class="token punctuation">.</span>block <span class="token operator">=</span> block
|
||||
self<span class="token punctuation">.</span>handlers<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>EventHandler<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-handle-self-callable-eventhandler-eventhandler" tabindex="-1"><a class="header-anchor" href="#def-handle-self-callable-eventhandler-eventhandler"><span><em><strong>def</strong></em> <code>handle(self) -> Callable[[EventHandler], EventHandler]</code></span></a></h4><p><strong>说明</strong>: 添加处理函数,装饰器</p><p><strong>返回</strong>: 装饰器 handler</p><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L37" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">handle</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>EventHandler<span class="token punctuation">]</span><span class="token punctuation">,</span> EventHandler<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
添加处理函数,装饰器
|
||||
Returns:
|
||||
装饰器 handler
|
||||
"""</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">decorator</span><span class="token punctuation">(</span>handler<span class="token punctuation">:</span> EventHandler<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> EventHandler<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>handlers<span class="token punctuation">.</span>append<span class="token punctuation">(</span>handler<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> handler
|
||||
<span class="token keyword">return</span> decorator
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-self-event-messageevent-none" tabindex="-1"><a class="header-anchor" href="#async-def-run-self-event-messageevent-none"><span><em><strong>async def</strong></em> <code>run(self, event: MessageEvent) -> None</code></span></a></h4><p><strong>说明</strong>: 运行处理函数</p><p><strong>参数</strong>:</p><blockquote><ul><li>event:</li></ul></blockquote><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L49" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">run</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> event<span class="token punctuation">:</span> MessageEvent<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
运行处理函数
|
||||
Args:
|
||||
event:
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token keyword">await</span> self<span class="token punctuation">.</span>rule<span class="token punctuation">(</span>event<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">for</span> handler <span class="token keyword">in</span> self<span class="token punctuation">.</span>handlers<span class="token punctuation">:</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">await</span> handler<span class="token punctuation">(</span>event<span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> Exception<span class="token punctuation">:</span>
|
||||
traceback<span class="token punctuation">.</span>print_exc<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,18),i=[o];function l(p,c){return e(),s("div",null,i)}const u=n(t,[["render",l],["__file","matcher.html.vue"]]),d=JSON.parse('{"path":"/dev/api/message/matcher.html","title":"liteyuki.message.matcher","lang":"zh-CN","frontmatter":{"title":"liteyuki.message.matcher","lastUpdated":false,"description":"liteyuki.message.matcher 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : mat...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/matcher.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/matcher.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.message.matcher"}],["meta",{"property":"og:description","content":"liteyuki.message.matcher 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : mat..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message.matcher\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Matcher","slug":"class-matcher","link":"#class-matcher","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.98,"words":294},"filePathRelative":"dev/api/message/matcher.md","localizedDate":"2024年8月21日","autoDesc":true}');export{u as comp,d as data};
|
||||
@@ -0,0 +1,38 @@
|
||||
import{_ as n,o as e,c as s,e as a}from"./app-BvUYPzLF.js";const t={},o=a(`<h1 id="liteyuki-message-matcher" tabindex="-1"><a class="header-anchor" href="#liteyuki-message-matcher"><span>liteyuki.message.matcher</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm</p><h3 id="class-matcher" tabindex="-1"><a class="header-anchor" href="#class-matcher"><span><em><strong>class</strong></em> <code>Matcher</code></span></a></h3><h4 id="def-init-self-rule-rule-priority-int-block-bool" tabindex="-1"><a class="header-anchor" href="#def-init-self-rule-rule-priority-int-block-bool"><span><em><strong>def</strong></em> <code>__init__(self, rule: Rule, priority: int, block: bool)</code></span></a></h4><p><strong>Description</strong>: 匹配器</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>rule: 规则</li><li>priority: 优先级 >= 0</li><li>block: 是否阻断后续优先级更低的匹配器</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L21" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> rule<span class="token punctuation">:</span> Rule<span class="token punctuation">,</span> priority<span class="token punctuation">:</span> <span class="token builtin">int</span><span class="token punctuation">,</span> block<span class="token punctuation">:</span> <span class="token builtin">bool</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
匹配器
|
||||
Args:
|
||||
rule: 规则
|
||||
priority: 优先级 >= 0
|
||||
block: 是否阻断后续优先级更低的匹配器
|
||||
"""</span>
|
||||
self<span class="token punctuation">.</span>rule <span class="token operator">=</span> rule
|
||||
self<span class="token punctuation">.</span>priority <span class="token operator">=</span> priority
|
||||
self<span class="token punctuation">.</span>block <span class="token operator">=</span> block
|
||||
self<span class="token punctuation">.</span>handlers<span class="token punctuation">:</span> <span class="token builtin">list</span><span class="token punctuation">[</span>EventHandler<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="def-handle-self-callable-eventhandler-eventhandler" tabindex="-1"><a class="header-anchor" href="#def-handle-self-callable-eventhandler-eventhandler"><span><em><strong>def</strong></em> <code>handle(self) -> Callable[[EventHandler], EventHandler]</code></span></a></h4><p><strong>Description</strong>: 添加处理函数,装饰器</p><p><strong>Return</strong>: 装饰器 handler</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L37" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">handle</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> Callable<span class="token punctuation">[</span><span class="token punctuation">[</span>EventHandler<span class="token punctuation">]</span><span class="token punctuation">,</span> EventHandler<span class="token punctuation">]</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
添加处理函数,装饰器
|
||||
Returns:
|
||||
装饰器 handler
|
||||
"""</span>
|
||||
|
||||
<span class="token keyword">def</span> <span class="token function">decorator</span><span class="token punctuation">(</span>handler<span class="token punctuation">:</span> EventHandler<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> EventHandler<span class="token punctuation">:</span>
|
||||
self<span class="token punctuation">.</span>handlers<span class="token punctuation">.</span>append<span class="token punctuation">(</span>handler<span class="token punctuation">)</span>
|
||||
<span class="token keyword">return</span> handler
|
||||
<span class="token keyword">return</span> decorator
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="async-def-run-self-event-messageevent-none" tabindex="-1"><a class="header-anchor" href="#async-def-run-self-event-messageevent-none"><span><em><strong>async def</strong></em> <code>run(self, event: MessageEvent) -> None</code></span></a></h4><p><strong>Description</strong>: 运行处理函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>event:</li></ul></blockquote><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/message/matcher.py#L49" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">run</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> event<span class="token punctuation">:</span> MessageEvent<span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token boolean">None</span><span class="token punctuation">:</span>
|
||||
<span class="token triple-quoted-string string">"""
|
||||
运行处理函数
|
||||
Args:
|
||||
event:
|
||||
Returns:
|
||||
"""</span>
|
||||
<span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token keyword">await</span> self<span class="token punctuation">.</span>rule<span class="token punctuation">(</span>event<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span>
|
||||
<span class="token keyword">for</span> handler <span class="token keyword">in</span> self<span class="token punctuation">.</span>handlers<span class="token punctuation">:</span>
|
||||
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">await</span> handler<span class="token punctuation">(</span>event<span class="token punctuation">)</span>
|
||||
<span class="token keyword">except</span> Exception<span class="token punctuation">:</span>
|
||||
traceback<span class="token punctuation">.</span>print_exc<span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,18),i=[o];function l(p,c){return e(),s("div",null,i)}const u=n(t,[["render",l],["__file","matcher.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/message/matcher.html","title":"liteyuki.message.matcher","lang":"en-US","frontmatter":{"title":"liteyuki.message.matcher","lastUpdated":false,"description":"liteyuki.message.matcher Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @F...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/message/matcher.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/message/matcher.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.message.matcher"}],["meta",{"property":"og:description","content":"liteyuki.message.matcher Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @F..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.message.matcher\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class Matcher","slug":"class-matcher","link":"#class-matcher","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.93,"words":278},"filePathRelative":"en/dev/api/message/matcher.md","localizedDate":"August 21, 2024","autoDesc":true}');export{u as comp,d as data};
|
||||
@@ -0,0 +1,3 @@
|
||||
import{_ as e,o as a,c as t,e as n}from"./app-BvUYPzLF.js";const s={},o=n(`<h1 id="liteyuki-plugin-model" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin-model"><span>liteyuki.plugin.model</span></a></h1><p><strong>Description</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model.py @Software: PyCharm</p><h3 id="class-plugintype-enum" tabindex="-1"><a class="header-anchor" href="#class-plugintype-enum"><span><em><strong>class</strong></em> <code>PluginType(Enum)</code></span></a></h3><h4 id="attr-application-application" tabindex="-1"><a class="header-anchor" href="#attr-application-application"><span><em><strong>attr</strong></em> <code>APPLICATION = 'application'</code></span></a></h4><h4 id="attr-service-service" tabindex="-1"><a class="header-anchor" href="#attr-service-service"><span><em><strong>attr</strong></em> <code>SERVICE = 'service'</code></span></a></h4><h4 id="attr-module-module" tabindex="-1"><a class="header-anchor" href="#attr-module-module"><span><em><strong>attr</strong></em> <code>MODULE = 'module'</code></span></a></h4><h4 id="attr-unclassified-unclassified" tabindex="-1"><a class="header-anchor" href="#attr-unclassified-unclassified"><span><em><strong>attr</strong></em> <code>UNCLASSIFIED = 'unclassified'</code></span></a></h4><h4 id="attr-test-test" tabindex="-1"><a class="header-anchor" href="#attr-test-test"><span><em><strong>attr</strong></em> <code>TEST = 'test'</code></span></a></h4><h3 id="class-pluginmetadata-basemodel" tabindex="-1"><a class="header-anchor" href="#class-pluginmetadata-basemodel"><span><em><strong>class</strong></em> <code>PluginMetadata(BaseModel)</code></span></a></h3><h4 id="attr-name-str-no-default" tabindex="-1"><a class="header-anchor" href="#attr-name-str-no-default"><span><em><strong>attr</strong></em> <code>name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-description-str" tabindex="-1"><a class="header-anchor" href="#attr-description-str"><span><em><strong>attr</strong></em> <code>description: str = ''</code></span></a></h4><h4 id="attr-usage-str" tabindex="-1"><a class="header-anchor" href="#attr-usage-str"><span><em><strong>attr</strong></em> <code>usage: str = ''</code></span></a></h4><h4 id="attr-type-plugintype-plugintype-unclassified" tabindex="-1"><a class="header-anchor" href="#attr-type-plugintype-plugintype-unclassified"><span><em><strong>attr</strong></em> <code>type: PluginType = PluginType.UNCLASSIFIED</code></span></a></h4><h4 id="attr-author-str" tabindex="-1"><a class="header-anchor" href="#attr-author-str"><span><em><strong>attr</strong></em> <code>author: str = ''</code></span></a></h4><h4 id="attr-homepage-str" tabindex="-1"><a class="header-anchor" href="#attr-homepage-str"><span><em><strong>attr</strong></em> <code>homepage: str = ''</code></span></a></h4><h4 id="attr-extra-dict-str-any" tabindex="-1"><a class="header-anchor" href="#attr-extra-dict-str-any"><span><em><strong>attr</strong></em> <code>extra: dict[str, Any] = {}</code></span></a></h4><h3 id="class-plugin-basemodel" tabindex="-1"><a class="header-anchor" href="#class-plugin-basemodel"><span><em><strong>class</strong></em> <code>Plugin(BaseModel)</code></span></a></h3><h4 id="def-hash-self" tabindex="-1"><a class="header-anchor" href="#def-hash-self"><span><em><strong>def</strong></em> <code>__hash__(self)</code></span></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/model.py#L83" target="_blank">View on GitHub</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__hash__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">hash</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>module_name<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="attr-model-config-arbitrary-types-allowed-true" tabindex="-1"><a class="header-anchor" href="#attr-model-config-arbitrary-types-allowed-true"><span><em><strong>attr</strong></em> <code>model_config = {'arbitrary_types_allowed': True}</code></span></a></h4><h4 id="attr-name-str-no-default-1" tabindex="-1"><a class="header-anchor" href="#attr-name-str-no-default-1"><span><em><strong>attr</strong></em> <code>name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-module-moduletype-no-default" tabindex="-1"><a class="header-anchor" href="#attr-module-moduletype-no-default"><span><em><strong>attr</strong></em> <code>module: ModuleType = NO_DEFAULT</code></span></a></h4><h4 id="attr-module-name-str-no-default" tabindex="-1"><a class="header-anchor" href="#attr-module-name-str-no-default"><span><em><strong>attr</strong></em> <code>module_name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-metadata-optional-pluginmetadata-none" tabindex="-1"><a class="header-anchor" href="#attr-metadata-optional-pluginmetadata-none"><span><em><strong>attr</strong></em> <code>metadata: Optional[PluginMetadata] = None</code></span></a></h4>`,25),r=[o];function i(l,d){return a(),t("div",null,r)}const p=e(s,[["render",i],["__file","model.html.vue"]]),m=JSON.parse('{"path":"/en/dev/api/plugin/model.html","title":"liteyuki.plugin.model","lang":"en-US","frontmatter":{"title":"liteyuki.plugin.model","lastUpdated":false,"description":"liteyuki.plugin.model Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/model.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/model.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.plugin.model"}],["meta",{"property":"og:description","content":"liteyuki.plugin.model Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.model\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class PluginType(Enum)","slug":"class-plugintype-enum","link":"#class-plugintype-enum","children":[]},{"level":3,"title":"class PluginMetadata(BaseModel)","slug":"class-pluginmetadata-basemodel","link":"#class-pluginmetadata-basemodel","children":[]},{"level":3,"title":"class Plugin(BaseModel)","slug":"class-plugin-basemodel","link":"#class-plugin-basemodel","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":0.43,"words":128},"filePathRelative":"en/dev/api/plugin/model.md","localizedDate":"August 21, 2024","autoDesc":true}');export{p as comp,m as data};
|
||||
@@ -0,0 +1,3 @@
|
||||
import{_ as e,o as a,c as t,e as s}from"./app-BvUYPzLF.js";const n={},o=s(`<h1 id="liteyuki-plugin-model" tabindex="-1"><a class="header-anchor" href="#liteyuki-plugin-model"><span>liteyuki.plugin.model</span></a></h1><p><strong>说明</strong>: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p><p>@Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model.py @Software: PyCharm</p><h3 id="class-plugintype-enum" tabindex="-1"><a class="header-anchor" href="#class-plugintype-enum"><span><em><strong>class</strong></em> <code>PluginType(Enum)</code></span></a></h3><h4 id="attr-application-application" tabindex="-1"><a class="header-anchor" href="#attr-application-application"><span><em><strong>attr</strong></em> <code>APPLICATION = 'application'</code></span></a></h4><h4 id="attr-service-service" tabindex="-1"><a class="header-anchor" href="#attr-service-service"><span><em><strong>attr</strong></em> <code>SERVICE = 'service'</code></span></a></h4><h4 id="attr-module-module" tabindex="-1"><a class="header-anchor" href="#attr-module-module"><span><em><strong>attr</strong></em> <code>MODULE = 'module'</code></span></a></h4><h4 id="attr-unclassified-unclassified" tabindex="-1"><a class="header-anchor" href="#attr-unclassified-unclassified"><span><em><strong>attr</strong></em> <code>UNCLASSIFIED = 'unclassified'</code></span></a></h4><h4 id="attr-test-test" tabindex="-1"><a class="header-anchor" href="#attr-test-test"><span><em><strong>attr</strong></em> <code>TEST = 'test'</code></span></a></h4><h3 id="class-pluginmetadata-basemodel" tabindex="-1"><a class="header-anchor" href="#class-pluginmetadata-basemodel"><span><em><strong>class</strong></em> <code>PluginMetadata(BaseModel)</code></span></a></h3><h4 id="attr-name-str-no-default" tabindex="-1"><a class="header-anchor" href="#attr-name-str-no-default"><span><em><strong>attr</strong></em> <code>name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-description-str" tabindex="-1"><a class="header-anchor" href="#attr-description-str"><span><em><strong>attr</strong></em> <code>description: str = ''</code></span></a></h4><h4 id="attr-usage-str" tabindex="-1"><a class="header-anchor" href="#attr-usage-str"><span><em><strong>attr</strong></em> <code>usage: str = ''</code></span></a></h4><h4 id="attr-type-plugintype-plugintype-unclassified" tabindex="-1"><a class="header-anchor" href="#attr-type-plugintype-plugintype-unclassified"><span><em><strong>attr</strong></em> <code>type: PluginType = PluginType.UNCLASSIFIED</code></span></a></h4><h4 id="attr-author-str" tabindex="-1"><a class="header-anchor" href="#attr-author-str"><span><em><strong>attr</strong></em> <code>author: str = ''</code></span></a></h4><h4 id="attr-homepage-str" tabindex="-1"><a class="header-anchor" href="#attr-homepage-str"><span><em><strong>attr</strong></em> <code>homepage: str = ''</code></span></a></h4><h4 id="attr-extra-dict-str-any" tabindex="-1"><a class="header-anchor" href="#attr-extra-dict-str-any"><span><em><strong>attr</strong></em> <code>extra: dict[str, Any] = {}</code></span></a></h4><h3 id="class-plugin-basemodel" tabindex="-1"><a class="header-anchor" href="#class-plugin-basemodel"><span><em><strong>class</strong></em> <code>Plugin(BaseModel)</code></span></a></h3><h4 id="def-hash-self" tabindex="-1"><a class="header-anchor" href="#def-hash-self"><span><em><strong>def</strong></em> <code>__hash__(self)</code></span></a></h4><details><summary><b>源代码</b> 或 <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/plugin/model.py#L83" target="_blank">在GitHub上查看</a></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">def</span> <span class="token function">__hash__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
||||
<span class="token keyword">return</span> <span class="token builtin">hash</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>module_name<span class="token punctuation">)</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="attr-model-config-arbitrary-types-allowed-true" tabindex="-1"><a class="header-anchor" href="#attr-model-config-arbitrary-types-allowed-true"><span><em><strong>attr</strong></em> <code>model_config = {'arbitrary_types_allowed': True}</code></span></a></h4><h4 id="attr-name-str-no-default-1" tabindex="-1"><a class="header-anchor" href="#attr-name-str-no-default-1"><span><em><strong>attr</strong></em> <code>name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-module-moduletype-no-default" tabindex="-1"><a class="header-anchor" href="#attr-module-moduletype-no-default"><span><em><strong>attr</strong></em> <code>module: ModuleType = NO_DEFAULT</code></span></a></h4><h4 id="attr-module-name-str-no-default" tabindex="-1"><a class="header-anchor" href="#attr-module-name-str-no-default"><span><em><strong>attr</strong></em> <code>module_name: str = NO_DEFAULT</code></span></a></h4><h4 id="attr-metadata-optional-pluginmetadata-none" tabindex="-1"><a class="header-anchor" href="#attr-metadata-optional-pluginmetadata-none"><span><em><strong>attr</strong></em> <code>metadata: Optional[PluginMetadata] = None</code></span></a></h4>`,25),r=[o];function i(l,d){return a(),t("div",null,r)}const c=e(n,[["render",i],["__file","model.html.vue"]]),m=JSON.parse('{"path":"/dev/api/plugin/model.html","title":"liteyuki.plugin.model","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugin.model","lastUpdated":false,"description":"liteyuki.plugin.model 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model....","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/plugin/model.html"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/plugin/model.html"}],["meta",{"property":"og:site_name","content":"LiteyukiBot 轻雪机器人"}],["meta",{"property":"og:title","content":"liteyuki.plugin.model"}],["meta",{"property":"og:description","content":"liteyuki.plugin.model 说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved @Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model...."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.model\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"class PluginType(Enum)","slug":"class-plugintype-enum","link":"#class-plugintype-enum","children":[]},{"level":3,"title":"class PluginMetadata(BaseModel)","slug":"class-pluginmetadata-basemodel","link":"#class-pluginmetadata-basemodel","children":[]},{"level":3,"title":"class Plugin(BaseModel)","slug":"class-plugin-basemodel","link":"#class-plugin-basemodel","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":5}]},"readingTime":{"minutes":0.44,"words":132},"filePathRelative":"dev/api/plugin/model.md","localizedDate":"2024年8月19日","autoDesc":true}');export{c as comp,m as data};
|
||||