第一个 Moonlark 插件
在此章节中,我们将创建一个获取用户输入使用并使用 SHA1 提取摘要并返回的插件,并结合该插件讲解 Moonlark 插件的编写。
创建插件
bash
poetry run nb plugin create nonebot-plugin-sha1
log
[?] 使用嵌套插件? N
[?] 请输入插件存储位置: src/plugins
编写插件
src/plugins/nonebot_plugin_sha1/__init__.py
插件创建后,这个文件应该是这样的:
python
from nonebot import get_plugin_config
from nonebot.plugin import PluginMetadata
from .config import Config
__plugin_meta__ = PluginMetadata(
name="nonebot-plugin-sha1",
description="",
usage="",
config=Config,
)
config = get_plugin_config(Config)
为了方便,我们进行如下更改:
diff
- from nonebot import get_plugin_config
from nonebot.plugin import PluginMetadata
- from .config import Config
__plugin_meta__ = PluginMetadata(
name="nonebot-plugin-sha1",
- description="",
+ description="SHA1 摘要提取",
usage="",
- config=Config,
+ config=None,
)
- config = get_plugin_config(Config)
同时,删除 config.py
文件。
TIP
这个插件不包含配置项,不应保留空的 config.py
文件
python
from nonebot.plugin import PluginMetadata
from nonebot import require
__plugin_meta__ = PluginMetadata(
name="nonebot-plugin-sha1",
description="SHA1 摘要提取",
usage="",
config=None,
)
require("nonebot_plugin_larklang")
require("nonebot_plugin_larkutils")
from . import __main__
src/plugins/nonebot_plugin_sha1/__main__.py
(新建)
python
import hashlib
from nonebot import on_command
from nonebot.adapters import Message
from nonebot.params import CommandArg
from ..nonebot_plugin_larklang import LangHelper
from ..nonebot_plugin_larkutils import get_user_id
sha1 = on_command("sha1")
lang = LangHelper()
@sha1.handle()
async def _(message: Message = CommandArg(), user_id: str = get_user_id()) -> None:
text = message.extract_plain_text()
sha1sum = hashlib.sha1(text.encode()).hexdigest()
await lang.finish("sha1.sha1", user_id, sha1sum)
src/lang/zh_hans/sha1.yaml
(新建)
yaml
sha1:
sha1: '消息文本的 SHA1 摘要为: {}'
help:
description: SHA1 摘要计算
details: 计算文本的 SHA1 摘要
usage: sha1 <内容>
TIP
Moonlark 使用 LarkLang 实现本地化,也可以在 Moonlark 中添加相同语言的不通风格,任何向用户反馈的文本都要接入本地化。
src/plugins/nonebot_plugin_sha1/help.yaml
(新建)
yaml
plugin: sha1
commands:
sha1:
description: help.description
details: help.details
usages:
- help.usage
测试
bash
poetry run nb run
出现以下输出说明插件加载成功:
log
08-01 13:18:35 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_sha1" from "src.plugins.nonebot_plugin_sha1"
此时,使用 sha1 114514
将会出现以下消息:
消息文本的 SHA1 摘要为: 2c8509df0df65f9826dc872a9acfea532c1f53c7