2024-08-24 11:40:02 +08:00
|
|
|
|
import{_ as n,o as s,c as a,e}from"./app-D7T8XZRy.js";const t={},p=e(`<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>获取轻雪实例</p><p>Returns:</p><pre><code>LiteyukiBot: 当前的轻雪实例
|
2024-08-21 18:00:26 +08:00
|
|
|
|
</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">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-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-key-str-default-any-any"><span><em><strong>def</strong></em> <code>get_config(key: str, default: Any) -> Any</code></span></a></h3><p>获取配置</p><p>Args:</p><pre><code>key: 配置键
|
|
|
|
|
|
|
|
|
|
default: 默认值
|
|
|
|
|
</code></pre><p>Returns:</p><pre><code>Any: 配置值
|
|
|
|
|
</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">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-any" tabindex="-1"><a class="header-anchor" href="#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-any"><span><em><strong>def</strong></em> <code>get_config_with_compat(key: str, compat_keys: tuple[str], default: Any) -> Any</code></span></a></h3><p>获取配置,兼容旧版本</p><p>Args:</p><pre><code>key: 配置键
|
|
|
|
|
|
|
|
|
|
compat_keys: 兼容键
|
|
|
|
|
|
|
|
|
|
default: 默认值
|
|
|
|
|
</code></pre><p>Returns:</p><pre><code>Any: 配置值
|
|
|
|
|
</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">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-none" tabindex="-1"><a class="header-anchor" href="#def-print-logo-none"><span><em><strong>def</strong></em> <code>print_logo() -> None</code></span></a></h3><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">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><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><h3 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></h3><p> 初始化轻雪实例</p><p>Args:</p><pre><code>*args:
|
|
|
|
|
|
|
|
|
|
**kwargs: 配置
|
|
|
|
|
</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">__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><h3 id="def-run-self-none" tabindex="-1"><a class="header-anchor" href="#def-run-self-none"><span> <em><strong>def</strong></em> <code>run(self) -> None</code></span></a></h3><p> 启动逻辑</p><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">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>
|
|
|
|
|
self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>before_start<span class="token punctuation">(</span><span class="token punctuation">)</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>
|
|
|
|
|
self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>after_start<span class="token punctuation">(</span><span class="token punctuation">)</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><h3 id="def-keep-alive-self-none" tabindex="-1"><a class="header-anchor" href="#def-keep-alive-self-none"><span> <em><strong>def</strong></em> <code>keep_alive(self) -> None</code></span></a></h3><p> 保持轻雪运行</p><p>Returns:</p><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">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><h3 id="def-restart-self-delay-int-none" tabindex="-1"><a class="header-anchor" href="#def-restart-self-delay-int-none"><span> <em><strong>def</strong></em> <code>restart(self, delay: int) -> None</code></span></a></h3><p> 重启轻雪本体</p><p>Returns:</p><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">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><h3 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></h3><p> 停止轻雪</p><p>Args:</p><pre><code>name: 进程名称, 默认为None, 所有进程
|
|
|
|
|
</code></pre><p>Returns:</p><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">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>
|
|
|
|
|
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>lifespan<span class="token punctuation">.</span>before_process_shutdown<span class="token punctuation">(</span><span class="token punctuation">)</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 class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="def-init-self-none-1" tabindex="-1"><a class="header-anchor" href="#def-init-self-none-1"><span> <em><strong>def</strong></em> <code>init(self) -> None</code></span></a></h3><p> 初始化轻雪, 自动调用</p><p>Returns:</p><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">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><h3 id="def-init-logger-self-none" tabindex="-1"><a class="header-anchor" href="#def-init-logger-self-none"><span> <em><strong>def</strong></em> <code>init_logger(self) -> None</code></span></a></h3><p> </p><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">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><h3 id="def-stop-self-none" tabindex="-1"><a class="header-anchor" href="#def-stop-self-none"><span> <em><strong>def</strong></em> <code>stop(self) -> None</code></span></a></h3><p> 停止轻雪</p><p>Returns:</p><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">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><h3 id="def-on-before-start-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-before-start-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_before_start(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册启动前的函数</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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><h3 id="def-on-after-start-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-after-start-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_after_start(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册启动后的函数</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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><h3 id="def-on-after-shutdown-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-after-shutdown-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册停止后的函数:未实现</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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><h3 id="def-on-before-process-shutdown-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-shutdown-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册进程停止前的函数,为子进程停止时调用</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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><h3 id="def-on-before-process-restart-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-before-process-restart-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册进程重启前的函数,为子进程重启时调用</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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><h3 id="def-on-after-restart-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-after-restart-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_after_restart(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册重启后的函数:未实现</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">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-on-after-nonebot-init-self-func-lifespan-func-none" tabindex="-1"><a class="header-anchor" href="#def-on-after-nonebot-init-self-func-lifespan-func-none"><span> <em><strong>def</strong></em> <code>on_after_nonebot_init(self, func: LIFESPAN_FUNC) -> None</code></span></a></h3><p> 注册nonebot初始化后的函数</p><p>Args:</p><pre><code>func:
|
|
|
|
|
</code></pre><p>Returns:</p><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">on_after_nonebot_init</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">"""
|
|
|
|
|
注册nonebot初始化后的函数
|
|
|
|
|
Args:
|
|
|
|
|
func:
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
"""</span>
|
|
|
|
|
<span class="token keyword">return</span> self<span class="token punctuation">.</span>lifespan<span class="token punctuation">.</span>on_after_nonebot_init<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="var-executable-sys-executable" tabindex="-1"><a class="header-anchor" href="#var-executable-sys-executable"><span><em><strong>var</strong></em> <code>executable = sys.executable</code></span></a></h3><h3 id="var-args-sys-argv" tabindex="-1"><a class="header-anchor" href="#var-args-sys-argv"><span><em><strong>var</strong></em> <code>args = sys.argv</code></span></a></h3><h3 id="var-chan-active-get-channel-f-name-active" tabindex="-1"><a class="header-anchor" href="#var-chan-active-get-channel-f-name-active"><span><em><strong>var</strong></em> <code>chan_active = get_channel(f'{name}-active')</code></span></a></h3><h3 id="var-cmd-start" tabindex="-1"><a class="header-anchor" href="#var-cmd-start"><span><em><strong>var</strong></em> <code>cmd = 'start'</code></span></a></h3><h3 id="var-chan-active-get-channel-f-process-name-active" tabindex="-1"><a class="header-anchor" href="#var-chan-active-get-channel-f-process-name-active"><span><em><strong>var</strong></em> <code>chan_active = get_channel(f'{process_name}-active')</code></span></a></h3><h3 id="var-cmd-nohup" tabindex="-1"><a class="header-anchor" href="#var-cmd-nohup"><span><em><strong>var</strong></em> <code>cmd = 'nohup'</code></span></a></h3><h3 id="var-cmd-open" tabindex="-1"><a class="header-anchor" href="#var-cmd-open"><span><em><strong>var</strong></em> <code>cmd = 'open'</code></span></a></h3><h3 id="var-cmd-nohup-1" tabindex="-1"><a class="header-anchor" href="#var-cmd-nohup-1"><span><em><strong>var</strong></em> <code>cmd = 'nohup'</code></span></a></h3>`,105),o=[p];function i(l,c){return s(),a("div",null,o)}const r=n(t,[["render",i],["__file","index.html.vue"]]),d=JSON.parse(`{"path":"/dev/api/bot/","title":"liteyuki.bot","lang":"zh-CN","frontmatter":{"title":"liteyuki.bot","index":true,"icon":"laptop-code","category":"API","description":"def get_bot() -> LiteyukiBot 获取轻雪实例 Returns: 源代码 def get_config(key: str, default: Any) -> Any 获取配置 Args: Returns: 源代码 def get_config_with_compat(key: str, compat_keys: tuple[st...","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":"def get_bot() -> LiteyukiBot 获取轻雪实例 Returns: 源代码 def get_config(key: str, default: Any) -> Any 获取配置 Args: Returns: 源代码 def get_config_with_compat(key: str, compat_keys: tuple[st..."}],["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.bot\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-21T09:59:21.000Z\\",\\"author\\":[]}"]]},"headers":[{"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) -> Any","slug":"def-get-config-key-str-default-any-any","link":"#def-get-config-key-str-default-any-any","children":[]},{"level":3,"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], d
|