mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-23 03:17:37 +08:00
97 lines
36 KiB
JavaScript
97 lines
36 KiB
JavaScript
import{_ as n,o as a,c as s,e as t}from"./app-Du8R6vOa.js";const e={},p=t(`<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>加载单个插件,可以是本地插件或是通过 <code>pip</code> 安装的插件。</p><p>参数:</p><pre><code>module_path: 插件名称 \`path.to.your.plugin\`
|
|
|
|
或插件路径 \`pathlib.Path(path/to/your/plugin)\`
|
|
</code></pre><details><summary>源代码</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-set-plugin" tabindex="-1"><a class="header-anchor" href="#def-load-plugins-set-plugin"><span><em><strong>def</strong></em> <code>load_plugins() -> set[Plugin]</code></span></a></h3><p>导入文件夹下多个插件</p><p>参数:</p><pre><code>plugin_dir: 文件夹路径
|
|
|
|
ignore_warning: 是否忽略警告,通常是目录不存在或目录为空
|
|
</code></pre><details><summary>源代码</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>设置插件名称颜色,根据不同类型插件设置颜色</p><p>Args:</p><pre><code>display_name: 插件名称
|
|
|
|
plugin_type: 插件类型
|
|
</code></pre><p>Returns:</p><pre><code>str: 设置后的插件名称 <y>name</y>
|
|
</code></pre><details><summary>源代码</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><h3 id="var-module-path-path-to-module-name-path-module-path-if-isinstance-module-path-path-else-module-path" tabindex="-1"><a class="header-anchor" href="#var-module-path-path-to-module-name-path-module-path-if-isinstance-module-path-path-else-module-path"><span><em><strong>var</strong></em> <code>module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path</code></span></a></h3><h3 id="var-plugins-set" tabindex="-1"><a class="header-anchor" href="#var-plugins-set"><span><em><strong>var</strong></em> <code>plugins = set()</code></span></a></h3><h3 id="var-color-y" tabindex="-1"><a class="header-anchor" href="#var-color-y"><span><em><strong>var</strong></em> <code>color = 'y'</code></span></a></h3><h3 id="var-module-import-module-module-path" tabindex="-1"><a class="header-anchor" href="#var-module-import-module-module-path"><span><em><strong>var</strong></em> <code>module = import_module(module_path)</code></span></a></h3><h3 id="var-display-name-module-name-split-1" tabindex="-1"><a class="header-anchor" href="#var-display-name-module-name-split-1"><span><em><strong>var</strong></em> <code>display_name = module.__name__.split('.')[-1]</code></span></a></h3><h3 id="var-path-path-os-path-join-dir-path-f" tabindex="-1"><a class="header-anchor" href="#var-path-path-os-path-join-dir-path-f"><span><em><strong>var</strong></em> <code>path = Path(os.path.join(dir_path, f))</code></span></a></h3><h3 id="var-module-name-none" tabindex="-1"><a class="header-anchor" href="#var-module-name-none"><span><em><strong>var</strong></em> <code>module_name = None</code></span></a></h3><h3 id="var-color-m" tabindex="-1"><a class="header-anchor" href="#var-color-m"><span><em><strong>var</strong></em> <code>color = 'm'</code></span></a></h3><h3 id="var-color-g" tabindex="-1"><a class="header-anchor" href="#var-color-g"><span><em><strong>var</strong></em> <code>color = 'g'</code></span></a></h3><h3 id="var-color-e" tabindex="-1"><a class="header-anchor" href="#var-color-e"><span><em><strong>var</strong></em> <code>color = 'e'</code></span></a></h3><h3 id="var-color-c" tabindex="-1"><a class="header-anchor" href="#var-color-c"><span><em><strong>var</strong></em> <code>color = 'c'</code></span></a></h3><h3 id="var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type" tabindex="-1"><a class="header-anchor" href="#var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type"><span><em><strong>var</strong></em> <code>display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)</code></span></a></h3><h3 id="var-module-name-f-path-to-module-name-path-dir-path-f-3" tabindex="-1"><a class="header-anchor" href="#var-module-name-f-path-to-module-name-path-dir-path-f-3"><span><em><strong>var</strong></em> <code>module_name = f'{path_to_module_name(Path(dir_path))}.{f[:-3]}'</code></span></a></h3><h3 id="var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type-1" tabindex="-1"><a class="header-anchor" href="#var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type-1"><span><em><strong>var</strong></em> <code>display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)</code></span></a></h3><h3 id="var-metadata-pluginmetadata-name-module-name" tabindex="-1"><a class="header-anchor" href="#var-metadata-pluginmetadata-name-module-name"><span><em><strong>var</strong></em> <code>metadata = PluginMetadata(name=module.__name__)</code></span></a></h3><h3 id="var-display-name-module-name-split-1-1" tabindex="-1"><a class="header-anchor" href="#var-display-name-module-name-split-1-1"><span><em><strong>var</strong></em> <code>display_name = module.__name__.split('.')[-1]</code></span></a></h3><h3 id="var-module-name-path-to-module-name-path" tabindex="-1"><a class="header-anchor" href="#var-module-name-path-to-module-name-path"><span><em><strong>var</strong></em> <code>module_name = path_to_module_name(path)</code></span></a></h3>`,34),o=[p];function l(i,c){return a(),s("div",null,o)}const d=n(e,[["render",l],["__file","load.html.vue"]]),r=JSON.parse(`{"path":"/dev/api/plugin/load.html","title":"liteyuki.plugin.load","lang":"zh-CN","frontmatter":{"title":"liteyuki.plugin.load","order":1,"icon":"laptop-code","category":"API","description":"def load_plugin(module_path: str | Path) -> Optional[Plugin] 加载单个插件,可以是本地插件或是通过 pip 安装的插件。 参数: 源代码 def load_plugins() -> set[Plugin] 导入文件夹下多个插件 参数: 源代码 def format_display_name(d...","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":"def load_plugin(module_path: str | Path) -> Optional[Plugin] 加载单个插件,可以是本地插件或是通过 pip 安装的插件。 参数: 源代码 def load_plugins() -> set[Plugin] 导入文件夹下多个插件 参数: 源代码 def format_display_name(d..."}],["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-21T09:59:21.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-21T09:59:21.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.plugin.load\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-21T09:59:21.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() -> set[Plugin]","slug":"def-load-plugins-set-plugin","link":"#def-load-plugins-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":[]},{"level":3,"title":"var module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path","slug":"var-module-path-path-to-module-name-path-module-path-if-isinstance-module-path-path-else-module-path","link":"#var-module-path-path-to-module-name-path-module-path-if-isinstance-module-path-path-else-module-path","children":[]},{"level":3,"title":"var plugins = set()","slug":"var-plugins-set","link":"#var-plugins-set","children":[]},{"level":3,"title":"var color = 'y'","slug":"var-color-y","link":"#var-color-y","children":[]},{"level":3,"title":"var module = import_module(module_path)","slug":"var-module-import-module-module-path","link":"#var-module-import-module-module-path","children":[]},{"level":3,"title":"var display_name = module.__name__.split('.')[-1]","slug":"var-display-name-module-name-split-1","link":"#var-display-name-module-name-split-1","children":[]},{"level":3,"title":"var path = Path(os.path.join(dir_path, f))","slug":"var-path-path-os-path-join-dir-path-f","link":"#var-path-path-os-path-join-dir-path-f","children":[]},{"level":3,"title":"var module_name = None","slug":"var-module-name-none","link":"#var-module-name-none","children":[]},{"level":3,"title":"var color = 'm'","slug":"var-color-m","link":"#var-color-m","children":[]},{"level":3,"title":"var color = 'g'","slug":"var-color-g","link":"#var-color-g","children":[]},{"level":3,"title":"var color = 'e'","slug":"var-color-e","link":"#var-color-e","children":[]},{"level":3,"title":"var color = 'c'","slug":"var-color-c","link":"#var-color-c","children":[]},{"level":3,"title":"var display_name = format_display_name(f\\"{metadata.name}({module.__name__.split('.')[-1]})\\", metadata.type)","slug":"var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type","link":"#var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type","children":[]},{"level":3,"title":"var module_name = f'{path_to_module_name(Path(dir_path))}.{f[:-3]}'","slug":"var-module-name-f-path-to-module-name-path-dir-path-f-3","link":"#var-module-name-f-path-to-module-name-path-dir-path-f-3","children":[]},{"level":3,"title":"var display_name = format_display_name(f\\"{metadata.name}({module.__name__.split('.')[-1]})\\", metadata.type)","slug":"var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type-1","link":"#var-display-name-format-display-name-f-metadata-name-module-name-split-1-metadata-type-1","children":[]},{"level":3,"title":"var metadata = PluginMetadata(name=module.__name__)","slug":"var-metadata-pluginmetadata-name-module-name","link":"#var-metadata-pluginmetadata-name-module-name","children":[]},{"level":3,"title":"var display_name = module.__name__.split('.')[-1]","slug":"var-display-name-module-name-split-1-1","link":"#var-display-name-module-name-split-1-1","children":[]},{"level":3,"title":"var module_name = path_to_module_name(path)","slug":"var-module-name-path-to-module-name-path","link":"#var-module-name-path-to-module-name-path","children":[]}],"git":{"createdTime":1724031826000,"updatedTime":1724234361000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":4}]},"readingTime":{"minutes":2.22,"words":665},"filePathRelative":"dev/api/plugin/load.md","localizedDate":"2024年8月19日","autoDesc":true}`);export{d as comp,r as data};
|