📝 测试mermaid画图

This commit is contained in:
suyiiyii 2024-10-14 12:32:59 +08:00
parent b2b20ab7c5
commit 7aac134d5d
Signed by: suyiiyii
GPG Key ID: 044704CB29B8AD85
4 changed files with 77 additions and 4 deletions

View File

@ -1,3 +1,8 @@
---
prev: /usage/install
next: /dev/cookie
---
# 基本开发须知
## 语言以及工具

68
docs/dev/cookie.md Normal file
View File

@ -0,0 +1,68 @@
# Cookie 开发须知
本项目将大部分 Cookie 相关逻辑提出到了 Site 及 Client Manger 模块中,你只需要继承相关类即可获得使用 Cookie 的能力。
:::tip
在开发Cookie功能之前你应该对[基本开发](/dev/#基本开发)有一定的了解。
:::
## Cookie相关的基本概念
- `nonebot_bison.config.db_model.Cookie`: 用于存储Cookie的实体类包含了Cookie的名称、内容、状态等信息
- `nonebot_bison.config.db_model.CookieTarget`: 用于存储Cookie与订阅的关联关系
- `nonebot_bison.utils.site.CookieClientManager`: 添加了Cookie功能的ClientManager是Cookie管理功能的核心调度Cookie的功能就在这里实现
- `nonebot_bison.utils.site.CookieSite`: 添加了Cookie功能的Site类根据需求添加了和Site强相关的Cookie功能实现方法
## 快速上手
例如,你现在有一个这样子的 Site 类:
```python
class WeiboSite(Site):
name = "weibo.com"
schedule_type = "interval"
schedule_setting = {"seconds": 3}
```
简而言之,要让你的站点获得 Cookie 能力,只需要:
1. 将父类从`Site`改为`CookieSite`
```python {1}
class WeiboSite(CookieSite):
name = "weibo.com"
schedule_type = "interval"
schedule_setting = {"seconds": 3}
```
2. 为你的 Site 类添加一个`client_mgr`属性
```python {5}
class WeiboSite(CookieSite):
name = "weibo.com"
schedule_type = "interval"
schedule_setting = {"seconds": 3}
client_mgr = create_cookie_client_manager(name)
```
至此,你的站点就可以使用 Cookie 了!
## 更好的体验
为了给用户提供更好的体验你还可以为你的Site重写`validate_cookie``get_target_name`方法。
- `async def validate_cookie(cls, content: str) -> bool`该方法将会在Cookie添加时被调用你可以在这里验证Cookie的有效性
- `async def get_cookie_name(cls, content: str) -> str`该方法将会在验证Cookie成功后被调用你可以在这里设置Cookie的名字并展示给用户
## 我要自己调度Cookie
当默认的Cookie调度逻辑无法满足你的需求时你可以重写`CookieClientManager``get_cookie`方法。
目前整体的调度逻辑是:
```mermaid
graph TD
A[获取订阅] --> B[获取订阅的Cookie]
B --> C[验证Cookie]
C --> D[返回Cookie]
```

View File

@ -46,7 +46,7 @@ Cookie 全局生效,这意味着,通过你的 Cookie 获取到的内容,
![add cookie](/images/add-cookie.png)
然后,依次输入平台名称和 Cookie 内容。
![add cookie 2](/images/add-cookie.png)
![add cookie 2](/images/add-cookie-2.png)
看到 Bison 的回复之后Cookie 就添加成功啦!
@ -86,11 +86,11 @@ Cookie 全局生效,这意味着,通过你的 Cookie 获取到的内容,
这是 `添加cookie` 的逆向操作。
## globe_with_meridians: 使用 WebUI 管理 Cookie
## :globe_with_meridians: 使用 WebUI 管理 Cookie
同样的Bison 提供了一个网页管理 Cookie 的功能,即 WebUI你可以在网页上查看、添加、删除 Cookie。
使用方法参见 [使用网页管理订阅](/usage/easy-usage#:globe_with_meridians: \u4f7f\u7528\u7f51\u9875\u7ba1\u7406\u8ba2\u9605)。
使用方法参见 [使用网页管理订阅](/usage/easy-use#使用网页管理订阅)。
## :tada: 完成!

View File

@ -43,7 +43,7 @@ class DefaultClientManager(ClientManager):
class CookieClientManager(ClientManager):
_site_name: str
_site_name: str # 绑定的 site_name需要使用 create_cookie_client_manager 创建 Client_mgr 时绑定
_default_cd: int = timedelta(seconds=10)
@classmethod