forked from bot/app
232 lines
52 KiB
JavaScript
232 lines
52 KiB
JavaScript
import{_ as n,o as s,c as a,e}from"./app-gnbtOU7f.js";const t={},o=e(`<h3 id="func-get-bot-liteyukibot" tabindex="-1"><a class="header-anchor" href="#func-get-bot-liteyukibot"><span><em>func</em> <code>get_bot() -> LiteyukiBot</code></span></a></h3><p><strong>Description</strong>: 获取轻雪实例</p><p><strong>Return</strong>: LiteyukiBot: 当前的轻雪实例</p><details><summary><b>Source code</b></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="func-get-config-key-str-none-any" tabindex="-1"><a class="header-anchor" href="#func-get-config-key-str-none-any"><span><em>func</em> <code>get_config(key: str = None) -> Any</code></span></a></h3><p><strong>Description</strong>: 获取配置</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>key: 配置键</li><li>default: 默认值</li></ul></blockquote><p><strong>Return</strong>: Any: 配置值</p><details><summary><b>Source code</b></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="func-get-config-with-compat-key-str-none-any" tabindex="-1"><a class="header-anchor" href="#func-get-config-with-compat-key-str-none-any"><span><em>func</em> <code>get_config_with_compat(key: str = None) -> Any</code></span></a></h3><p><strong>Description</strong>: 获取配置,兼容旧版本</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>key: 配置键</li><li>compat_keys: 兼容键</li><li>default: 默认值</li></ul></blockquote><p><strong>Return</strong>: Any: 配置值</p><details><summary><b>Source code</b></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="func-print-logo" tabindex="-1"><a class="header-anchor" href="#func-print-logo"><span><em>func</em> <code>print_logo()</code></span></a></h3><details><summary><b>Source code</b></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><strong>class</strong> <code>LiteyukiBot</code></span></a></h3><h3 id="method-init-self-none" tabindex="-1"><a class="header-anchor" href="#method-init-self-none"><span><em>method</em> <code>__init__(self) -> None</code></span></a></h3><p><strong>Description</strong>: 初始化轻雪实例</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>*args:</li><li>**kwargs: 配置</li></ul></blockquote><details><summary><b>Source code</b></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="async-method-run-self" tabindex="-1"><a class="header-anchor" href="#async-method-run-self"><span><em>async method</em> <code>_run(self)</code></span></a></h3><p><strong>Description</strong>: 启动逻辑</p><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <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>
|
|
<span class="token keyword">await</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>
|
|
<span class="token keyword">await</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>
|
|
<span class="token keyword">await</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>
|
|
<span class="token keyword">await</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="method-run-self" tabindex="-1"><a class="header-anchor" href="#method-run-self"><span><em>method</em> <code>run(self)</code></span></a></h3><p><strong>Description</strong>: 外部启动接口</p><details><summary><b>Source code</b></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>
|
|
<span class="token keyword">try</span><span class="token punctuation">:</span>
|
|
asyncio<span class="token punctuation">.</span>run<span class="token punctuation">(</span>self<span class="token punctuation">.</span>_run<span class="token punctuation">(</span><span class="token punctuation">)</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>
|
|
</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="async-method-keep-alive-self" tabindex="-1"><a class="header-anchor" href="#async-method-keep-alive-self"><span><em>async method</em> <code>keep_alive(self)</code></span></a></h3><p><strong>Description</strong>: 保持轻雪运行</p><details><summary><b>Source code</b></summary><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">async</span> <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="method-handle-exit-self-signum-frame" tabindex="-1"><a class="header-anchor" href="#method-handle-exit-self-signum-frame"><span><em>method</em> <code>_handle_exit(self, signum, frame)</code></span></a></h3><p><strong>Description</strong>: 信号处理</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>signum:</li><li>frame:</li></ul></blockquote><details><summary><b>Source code</b></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">_handle_exit</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> signum<span class="token punctuation">,</span> frame<span class="token punctuation">)</span><span class="token punctuation">:</span>
|
|
<span class="token triple-quoted-string string">"""
|
|
信号处理
|
|
Args:
|
|
signum:
|
|
frame:
|
|
|
|
Returns:
|
|
|
|
"""</span>
|
|
logger<span class="token punctuation">.</span>info<span class="token punctuation">(</span><span class="token string">'Received signal, stopping all processes.'</span><span class="token punctuation">)</span>
|
|
self<span class="token punctuation">.</span>stop<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>
|
|
</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="method-restart-self-delay-int-0" tabindex="-1"><a class="header-anchor" href="#method-restart-self-delay-int-0"><span><em>method</em> <code>restart(self, delay: int = 0)</code></span></a></h3><p><strong>Description</strong>: 重启轻雪本体</p><details><summary><b>Source code</b></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="method-restart-process-self-name-optional-str-none" tabindex="-1"><a class="header-anchor" href="#method-restart-process-self-name-optional-str-none"><span><em>method</em> <code>restart_process(self, name: Optional[str] = None)</code></span></a></h3><p><strong>Description</strong>: 停止轻雪</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>name: 进程名称, 默认为None, 所有进程</li></ul></blockquote><details><summary><b>Source code</b></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>
|
|
<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></div></details><h3 id="method-init-self" tabindex="-1"><a class="header-anchor" href="#method-init-self"><span><em>method</em> <code>init(self)</code></span></a></h3><p><strong>Description</strong>: 初始化轻雪, 自动调用</p><details><summary><b>Source code</b></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="method-init-logger-self" tabindex="-1"><a class="header-anchor" href="#method-init-logger-self"><span><em>method</em> <code>init_logger(self)</code></span></a></h3><details><summary><b>Source code</b></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="method-stop-self" tabindex="-1"><a class="header-anchor" href="#method-stop-self"><span><em>method</em> <code>stop(self)</code></span></a></h3><p><strong>Description</strong>: 停止轻雪</p><details><summary><b>Source code</b></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="method-on-before-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-before-start-self-func-lifespan-func"><span><em>method</em> <code>on_before_start(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册启动前的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="method-on-after-start-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-after-start-self-func-lifespan-func"><span><em>method</em> <code>on_after_start(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册启动后的函数</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="method-on-after-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-after-shutdown-self-func-lifespan-func"><span><em>method</em> <code>on_after_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册停止后的函数:未实现</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="method-on-before-process-shutdown-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-before-process-shutdown-self-func-lifespan-func"><span><em>method</em> <code>on_before_process_shutdown(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册进程停止前的函数,为子进程停止时调用</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="method-on-before-process-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-before-process-restart-self-func-lifespan-func"><span><em>method</em> <code>on_before_process_restart(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册进程重启前的函数,为子进程重启时调用</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="method-on-after-restart-self-func-lifespan-func" tabindex="-1"><a class="header-anchor" href="#method-on-after-restart-self-func-lifespan-func"><span><em>method</em> <code>on_after_restart(self, func: LIFESPAN_FUNC)</code></span></a></h3><p><strong>Description</strong>: 注册重启后的函数:未实现</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>func:</li></ul></blockquote><details><summary><b>Source code</b></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="var-bot-instance-no-default" tabindex="-1"><a class="header-anchor" href="#var-bot-instance-no-default"><span><em><strong>var</strong></em> <code>_BOT_INSTANCE = NO_DEFAULT</code></span></a></h3><ul><li><strong>Type</strong>: <code>LiteyukiBot</code></li></ul>`,86),p=[o];function i(l,c){return s(),a("div",null,p)}const r=n(t,[["render",i],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/en/dev/api/bot/","title":"liteyuki.bot","lang":"en-US","frontmatter":{"title":"liteyuki.bot","description":"func get_bot() -> LiteyukiBot Description: 获取轻雪实例 Return: LiteyukiBot: 当前的轻雪实例 Source code func get_config(key: str = None) -> Any Description: 获取配置 Arguments: key: 配置键 default:...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress-theme-hope-docs-demo.netlify.app/dev/api/bot/"}],["meta",{"property":"og:url","content":"https://vuepress-theme-hope-docs-demo.netlify.app/en/dev/api/bot/"}],["meta",{"property":"og:site_name","content":"LiteyukiBot"}],["meta",{"property":"og:title","content":"liteyuki.bot"}],["meta",{"property":"og:description","content":"func get_bot() -> LiteyukiBot Description: 获取轻雪实例 Return: LiteyukiBot: 当前的轻雪实例 Source code func get_config(key: str = None) -> Any Description: 获取配置 Arguments: key: 配置键 default:..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-29T06:19:39.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-29T06:19:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"liteyuki.bot\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-29T06:19:39.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":3,"title":"func get_bot() -> LiteyukiBot","slug":"func-get-bot-liteyukibot","link":"#func-get-bot-liteyukibot","children":[]},{"level":3,"title":"func get_config(key: str = None) -> Any","slug":"func-get-config-key-str-none-any","link":"#func-get-config-key-str-none-any","children":[]},{"level":3,"title":"func get_config_with_compat(key: str = None) -> Any","slug":"func-get-config-with-compat-key-str-none-any","link":"#func-get-config-with-compat-key-str-none-any","children":[]},{"level":3,"title":"func print_logo()","slug":"func-print-logo","link":"#func-print-logo","children":[]},{"level":3,"title":"class LiteyukiBot","slug":"class-liteyukibot","link":"#class-liteyukibot","children":[]},{"level":3,"title":"method __init__(self) -> None","slug":"method-init-self-none","link":"#method-init-self-none","children":[]},{"level":3,"title":"async method _run(self)","slug":"async-method-run-self","link":"#async-method-run-self","children":[]},{"level":3,"title":"method run(self)","slug":"method-run-self","link":"#method-run-self","children":[]},{"level":3,"title":"async method keep_alive(self)","slug":"async-method-keep-alive-self","link":"#async-method-keep-alive-self","children":[]},{"level":3,"title":"method _handle_exit(self, signum, frame)","slug":"method-handle-exit-self-signum-frame","link":"#method-handle-exit-self-signum-frame","children":[]},{"level":3,"title":"method restart(self, delay: int = 0)","slug":"method-restart-self-delay-int-0","link":"#method-restart-self-delay-int-0","children":[]},{"level":3,"title":"method restart_process(self, name: Optional[str] = None)","slug":"method-restart-process-self-name-optional-str-none","link":"#method-restart-process-self-name-optional-str-none","children":[]},{"level":3,"title":"method init(self)","slug":"method-init-self","link":"#method-init-self","children":[]},{"level":3,"title":"method init_logger(self)","slug":"method-init-logger-self","link":"#method-init-logger-self","children":[]},{"level":3,"title":"method stop(self)","slug":"method-stop-self","link":"#method-stop-self","children":[]},{"level":3,"title":"method on_before_start(self, func: LIFESPAN_FUNC)","slug":"method-on-before-start-self-func-lifespan-func","link":"#method-on-before-start-self-func-lifespan-func","children":[]},{"level":3,"title":"method on_after_start(self, func: LIFESPAN_FUNC)","slug":"method-on-after-start-self-func-lifespan-func","link":"#method-on-after-start-self-func-lifespan-func","children":[]},{"level":3,"title":"method on_after_shutdown(self, func: LIFESPAN_FUNC)","slug":"method-on-after-shutdown-self-func-lifespan-func","link":"#method-on-after-shutdown-self-func-lifespan-func","children":[]},{"level":3,"title":"method on_before_process_shutdown(self, func: LIFESPAN_FUNC)","slug":"method-on-before-process-shutdown-self-func-lifespan-func","link":"#method-on-before-process-shutdown-self-func-lifespan-func","children":[]},{"level":3,"title":"method on_before_process_restart(self, func: LIFESPAN_FUNC)","slug":"method-on-before-process-restart-self-func-lifespan-func","link":"#method-on-before-process-restart-self-func-lifespan-func","children":[]},{"level":3,"title":"method on_after_restart(self, func: LIFESPAN_FUNC)","slug":"method-on-after-restart-self-func-lifespan-func","link":"#method-on-after-restart-self-func-lifespan-func","children":[]},{"level":3,"title":"var _BOT_INSTANCE = NO_DEFAULT","slug":"var-bot-instance-no-default","link":"#var-bot-instance-no-default","children":[]}],"git":{"createdTime":1724234361000,"updatedTime":1724912379000,"contributors":[{"name":"snowy","email":"snowykami@outlook.com","commits":2}]},"readingTime":{"minutes":3.96,"words":1188},"filePathRelative":"en/dev/api/bot/README.md","localizedDate":"August 21, 2024","autoDesc":true}');export{r as comp,d as data};
|