# 配置文件

设置

本项目兼容使用Nonebot2的配置.env文件,使用key = value配置,你可以自由添加

如果你想在代码中获取你的配置:

from nonebot import get_driver

config = get_driver().config
value = config['你的配置key']
1
2
3
4

pydantic

如果想获得配置提示,请使用pydantic模型:文档 (opens new window)

你可以参考src/config.py

from pydantic import BaseModel, Extra, Field

class NlpConfig(BaseModel, extra=Extra.ignore):
    """
    nlp配置
    """

    secretId: str = Field("", alias="nlp_secretId")
    secretKey: str = Field("", alias="nlp_secretKey")

# 创建配置实例
config = get_driver().config
nlp_config = NlpConfig.parse_obj(config)
1
2
3
4
5
6
7
8
9
10
11
12
13

你可以将上述class改成你需要的配置,记得在.env文件下加入你的key。

# 日志工具

loguru

本项目日志使用loguru:文档 (opens new window)

同时本项目自己新建了记录器,默认支持颜色标签,如果你想让你的日志保存在logs文件夹下,可以导入使用:

from src.utils.log import logger

logger.info("你的日志信息")
1
2
3

# 定时器工具

Apscheduler

本项目定时器使用Apscheduler:文档 (opens new window)

本项目自定义了一个管理器,如果需要使用,请参考以下办法:

from src.utils.scheduler import scheduler

@scheduler.scheduled_job("cron", hour=0, minute=0)
async def _():
    # 每天0点运行此函数
1
2
3
4
5

# 浏览器工具

playwright

本项目浏览器使用playwright:文档 (opens new window)

使用浏览器可以通过模板语法生成html页面,然后截图发送给用户,项目封装了browser工具用于截图,你可以这样使用:

from src.utils.browser import browser

async def fun():
    img_bytes=await browser.template_to_image(
        pagename=pagename,
        **kwargs
    )
1
2
3
4
5
6
7

其中pagename是你的模板文件名,它应该是位于template文件夹下的模板文件,kwargs是你要注入到模板内的数据,使用关键字参数传递。

jinja2

本项目使用jinja2模板:文档 (opens new window)

模板标签

为了更好的获取图片,browser.template_to_image接口会选择#main标签:

# 选择标签main,这里是为了获得更好的图片,所以每个页面都需要有一个main标签
element_handle = await page.query_selector("#main")
1
2

所以如果使用此接口,需要保证你的模板文件有此标签:

<!-- 这里id="main"将会作为最外层进行截取 -->
<div class="..." id="main">
    ...
</div>
1
2
3
4

相对引用

特别地,本项目将模板的根目录定位在了template下,如果你想在模板文件下使用外部文件,可以相对此目录引用:

<link rel="stylesheet" href="./css/bootstrap.min.css">
1

# 使用数据库

Tortoise-orm

本项目使用sqlite作为数据库,同时orm选用Tortoise-orm:文档 (opens new window)

表模型存放在src/modules下:

📂modules
 ┣ 📜group_info.py      # 群信息
 ┣ 📜plugin_info.py     # 插件开关信息
 ┣ 📜search_record.py   # 查询记录信息
 ┣ 📜ticket_info.py     # 推栏ticket信息
 ┗ 📜user_info.py       # 用户信息
1
2
3
4
5
6

在需要的时候import下来即可使用:

from src.modules.group_info import GroupInfo
from src.modules.plugin_info import PluginInfo
from src.modules.search_record import SearchRecord
from src.modules.ticket_info import TicketInfo
from src.modules.user_info import UserInfo
1
2
3
4
5

表接口

每个表都内置实现了部分接口,都是@classmethod,不需要创建实例直接调用即可,你可以在对应的module下自定义新的接口,建议同样使用@classmethod

定义新表

如果你想定义新的表,除了在src/modules下创建新的模型外,还需要在src/internal/database.py引入你的module:

# 这里填要加载的表
    models = [
        "src.modules.group_info",
        "src.modules.plugin_info",
        "src.modules.user_info",
        "src.modules.ticket_info",
        "src.modules.search_record",
    ]
1
2
3
4
5
6
7
8
Last Updated: 11/9/2022, 3:08:34 AM