import{_ as n,o as s,c as a,e}from"./app-Ct8dV_oN.js";const t={},p=e(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

from liteyuki.plugin import PluginMetadata, PluginType
from .watch_dog import *    # 导入逻辑部分

# 定义插件元数据
__plugin_meta__ = PluginMetadata(
    name="NoneDog",  # 插件名称
    version="1.0.0",  # 插件版本
    description="A simple plugin for nonebot developer",  # 插件描述
    type=PluginType.SERVICE  # 插件类型
)

# 你的插件代码
...

编写逻辑部分

轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信 以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载 watch_dog.py

import os
from liteyuki.dev import observer  # 导入文件系统观察器
from liteyuki import get_bot, logger  # 导入轻雪Bot和日志
from watchdog.events import FileSystemEvent  # 导入文件系统事件

liteyuki = get_bot()  # 获取唯一的轻雪Bot实例

exclude_extensions = (".pyc", ".pyo")  # 排除的文件扩展名


# 用observer的on_file_system_event装饰器监听文件系统事件
@observer.on_file_system_event(
    directories=("src/nonebot_plugins",),
    event_filter=lambda event: not event.src_path.endswith(exclude_extensions) and ("__pycache__" not in event.src_path) and os.path.isfile(event.src_path)
)
def restart_nonebot_process(event: FileSystemEvent):
    logger.debug(f"File {event.src_path} changed, reloading nonebot...")
    liteyuki.restart_process("nonebot")  # 调用重启进程方法

加载插件

方法1

方法2

from liteyuki.dev.plugin import run_plugins

run_plugins("watchdog_plugin")

然后运行python main.py即可启动插件

启用插件后,我们在src/nonebot_plugins下创建一个文件,例如test.py,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程

`,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-18T15:52:26.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-18T15:52:26.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"轻雪插件开发\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-18T15:52:26.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":1723996346000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":1.68,"words":504},"filePathRelative":"dev/dev_lyplugin.md","localizedDate":"2024年8月11日","autoDesc":true}');export{d as comp,r as data};