Skip to content

Releases: nonebot/plugin-alconna

Nonebot Plugin Alconna 0.46.5

11 Jun 15:28
8d7cc83
Compare
Choose a tag to compare

What's Changed

  • ReplyMergeExtension 增加构造参数 sep, 用来指定拼接时的间隔字符
  • 升级依赖,Command 现在可用 .config 方法配置 CommandMeta
  • 更新内置插件 lang
  • ⬆️ auto update by pre-commit hooks by @pre-commit-ci in #51

Full Changelog: v0.46.4...v0.46.5

Nonebot Plugin Alconna 0.46.4

03 Jun 15:39
Compare
Choose a tag to compare
  • MarkdownExtension 增加一个 text_to_image 的参数,用来渲染md为图片
  • help 指令增加 --plugin-info 选项,用来输出指令对应的插件信息:
    image

Full Changelog: v0.46.3...v0.46.4

Nonebot Plugin Alconna 0.46.3

29 May 08:09
Compare
Choose a tag to compare
  • 增加 ReplyMergeExtension, 其可以将回复的原消息合并到当前消息作为一部分参数:
     from nonebot_plugin_alconna.builtins.extensions.reply import ReplyMergeExtension
    
     preview = Command("preview <content:any>", "预览").build(auto_send_output=True, extensions=[ReplyMergeExtension()])
     @preview.handle()
     async def preview_h(content):
         await preview.finish("rendering preview: " + content)
03ecceef1683874e924ef7a9f12762e9

Full Changelog: v0.46.1...v0.46.3

Nonebot Plugin Alconna 0.46.1

21 May 11:35
Compare
Choose a tag to compare

改进

  • Command 构造器可以在初始化时传入 CommandMeta
  • fallback 现在改为 FallbackStrategy, 可以选择ignore, text, rollbackforbid; 之前的 True 表示为 text
  • AlconnaMatcher 里的 fallback 现在默认为 ignore
  • UniMessage 里的 fallback 现在默认为 rollback
  • 在 qq 适配器中 mentionmention_everyone 现在会暂时返回空格

修复

  • 修复 Reference 的构造问题

Full Changelog: v0.46.0...v0.46.1

Nonebot Plugin Alconna 0.46.0

19 May 14:37
Compare
Choose a tag to compare

新增

  • 适配器 Mirai(官方)
  • 适配器 TailChat
  • Text 新增 .bold(), .italic() 等一系列便捷方法
  • 新增 I18n 通用消息段(在发送前会转为 UniMessage)
  • AlconnaMatcher 新增 .i18n() 方法,与 I18n 作用相同
  • 新增内置插件 lang,可以切换或列出可用的语言模式

改进

  • 升级 Tarina 至 0.5.0 以使用 tarina-lang 新特性

i18n 说明

plugin-alconna 的 i18n 支持基于 tarina.lang,其提供了一个 tarina-lang 命令行工具

首先可以通过 tarina-lang new 创建文件夹 i18n

之后使用 cd ./i18ntarina-lang init,会生成如下文件:

📦 awesome-bot
├──📂 i18n
│  ├── __init__.py  🆕
│  ├── .config.json  🆕
│  ├── .template.json  🆕
│  └── .template.schema.json  🆕
├── plugin.py
└── ...

你需要将你语言文件中所有包含的项目声明在 .template.json 中,例如:

{
  "$schema": ".template.schema.json",
  "scopes" : [
    {
      "scope": "example",
      "types": [
        "test"
      ]
    }
  ]
}

然后通过 tarina-lang schematarina-lang create XXX 来创建新的语言文件。以下为使用命令创建 en-USzh-CN 语言文件后的文件结构:

📦 awesome-bot
├──📂 i18n
│  ├── __init__.py
│  ├── .config.json
│  ├── .lang.schema.json  🆕
│  ├── .template.json
│  ├── .template.schema.json
│  ├── en-US.json  🆕
│  └── zh-CN.json  🆕
├── plugin.py
└── ...

之后,在 plugin 里面,你可以用如下方法来使用i18n条目:

from .i18n import lang

...
async def _():
    await matcher.send(lang.require("example", "test"))

高级一点,你可以通过 tarina-lang model 来生成一个模型文件:

📦 awesome-bot
├──📂 i18n
│  ├── __init__.py
│  ├── .config.json
│  ├── .lang.schema.json
│  ├── .template.json
│  ├── .template.schema.json
│  ├── en-US.json
│  ├── model.py  🆕
│  └── zh-CN.json
├── plugin.py
└── ...

其中 model.py:

from tarina.lang.model import LangItem, LangModel


class Example:
    test: LangItem = LangItem("example", "test")


class Lang(LangModel):
    example = Example

之后便可以这样使用:

from .i18n import Lang

...
async def _():
    await matcher.send(Lang.example.test())
    # 如果你的条目是模板字符串,你可以使用 Lang.example.test(...)

基于此,I18nAlconnaMatcher.i18n 可以如下使用:

await XXX.send(UniMessage.i18n(Lang.example.test, ...))
await XXX.send(UniMessage.i18n("example", "test", ...))
await XXX.send(XXX.i18n(Lang.example.test, ...))
await XXX.send(XXX.i18n("example", "test", ...))

Note

plugin-alconna 中, i18n 条目会先被转换成 UniMessageTemplate
所以 UniMessageTemplate 的所有特性都可用于 i18n 条目
例如:

# example.test: "{:At(user, $event.get_user_id())} Hello!"
await XXX.send(XXX.i18n("example", "test"))

特别的,因为 I18n 是一个通用消息段,所以 i18n 条目可以嵌套:

{
  "example": {
    "test": "XXXX",
    "foo": "{:I18n(example, test)}, XXXX!"
  }
}

Full Changelog: v0.45.4...v0.46.0

Nonebot Plugin Alconna 0.45.4

07 May 08:07
Compare
Choose a tag to compare

What's Changed

  • 修改 exporter 中 各适配器msg 的构造
  • ⬆️ auto update by pre-commit hooks by @pre-commit-ci in #48

Full Changelog: v0.45.3...v0.45.4

Nonebot Plugin Alconna 0.45.3

02 May 06:43
Compare
Choose a tag to compare
  • builtins.extensions.init 移除 DiscordSlashExtension
  • 调整 TelegramSlashExtension 的 docstring
  • UniMessage 增加 finish

Full Changelog: v0.45.2...v0.45.3

Nonebot Plugin Alconna 0.45.2

01 May 14:52
Compare
Choose a tag to compare
  • 修复 satori 适配器下 Target 的构建
  • 增加检查 satori 适配器版本

Full Changelog: v0.45.1...v0.45.2

Nonebot Plugin Alconna 0.45.1

01 May 11:33
Compare
Choose a tag to compare

What's Changed

  • 升级 nonebot2 依赖版本至 2.3.0
  • ⬆️ Bump dependabot/fetch-metadata from 2.0.0 to 2.1.0 by @dependabot in #47

Note

随着 nonebot2 升级至 2.3.0,本插件同样也放弃了对 python 3.8 的支持。

Full Changelog: v0.45.0...v0.45.1

Nonebot Plugin Alconna 0.45.0

29 Apr 11:33
Compare
Choose a tag to compare

破坏性改动

  • 删除 Custom

新增

  • builtins 模块,目前包括 extensionspluginsuniseg
  • extensions 模块目前包含:
    • ReplyRecordExtension: 将消息事件中的回复暂存在 extension 中,使得解析用的消息不带回复信息,同时可以在后续的处理中获取回复信息。
    • DiscordSlashExtension: 将 Alconna 的命令自动转换为 Discord 的 Slash Command,并将 Slash Command 的交互事件转换为消息交给 Alconna 处理。
    • MarkdownOutputExtension: 将 Alconna 的自动输出转换为 Markdown 格式
    • TelegramSlashExtension: 将 Alconna 的命令注册在 Telegram 上以获得提示。
  • plugins 目前有 echohelp 两个插件
  • uniseg 目前有 chronocat 模块,拓展了 chronocat:facechronocat:marketface

改进

  • custom_register 现不再限制为 Custom 子类的构造,任意 Segment 子类都可
  • Custom.export 改为 custom_handler,允许任意 Segment 子类转为适配器对应消息段

Full Changelog: v0.44.0...v0.45.0