Nonebot-plugin-alconna

Latest version: v0.54.0

Safety actively analyzes 682244 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 22

0.46.1

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

修复
- 修复 `Reference` 的构造问题

**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.46.0...v0.46.1

0.46.0

新增
- 适配器 [Mirai(官方)](https://github.com/nonebot/adapter-mirai)
- 适配器 [TailChat](https://github.com/eya46/nonebot-adapter-tailchat)
- `Text` 新增 `.bold()`, `.italic()` 等一系列便捷方法
- 新增 `I18n` 通用消息段(在发送前会转为 UniMessage)
- `AlconnaMatcher` 新增 `.i18n()` 方法,与 `I18n` 作用相同
- 新增内置插件 `lang`,可以切换或列出可用的语言模式

改进
- 升级 `Tarina` 至 0.5.0 以使用 tarina-lang 新特性

i18n 说明

plugin-alconna 的 i18n 支持基于 [`tarina.lang`](https://github.com/ArcletProject/Tarina/tree/main/src/tarina/lang),其提供了一个 tarina-lang 命令行工具

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

之后使用 `cd ./i18n` 和 `tarina-lang init`,会生成如下文件:
diff
📦 awesome-bot
├──📂 i18n
++ ├── __init__.py
++ ├── .config.json
++ ├── .template.json
++ └── .template.schema.json
├── xxx.py
└── ...


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

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


然后通过 `tarina-lang schema` 和 `tarina-lang create XXX` 来创建新的语言文件。以下为使用命令创建 `en-US` 和 `zh-CN` 语言文件后的文件结构:
diff
📦 awesome-bot
├──📂 i18n
│ ├── __init__.py
│ ├── .config.json
++ ├── .lang.schema.json
│ ├── .template.json
│ ├── .template.schema.json
++ ├── en-US.json
++ └── zh-CN.json
├── plugin.py
└── ...


其中一个语言文件如下所示:

json5
// en-US.json
{
"$schema": "./.lang.schema.json",
"example": {
"test": "Test",
"test1": {
"test2": "Test2"
}
}
}


> [!NOTE]
> `tarina-lang` 支持创建和读取 YAML 格式的语言文件。当然首先你需要额外安装 `tarina[yaml]`
>
> 然后通过 `tarina-lang create XXX --yaml` 创建 `.yml` 文件
>
> 一个 yaml 格式的语言文件如下所示:
yaml
$schema: .lang.schema.json
example:
test: Test
test1:
test2: Test2


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

python
from .i18n import lang

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


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

diff
📦 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`:

python
from tarina.lang.model import LangItem, LangModel


class ExampleTest1:
test2: LangItem = LangItem("example", "test1.test2")


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


class Lang(LangModel):
example = Example



之后便可以这样使用:

python
from .i18n import Lang

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


基于此,`I18n` 和 `AlconnaMatcher.i18n` 可以如下使用:

python
await AlconnaMatcher.send(UniMessage.i18n(Lang.example.test, ...))
await AlconnaMatcher.send(UniMessage.i18n("example", "test", ...))
await AlconnaMatcher.send(AlconnaMatcher.i18n(Lang.example.test1.test2, ...))
await AlconnaMatcher.send(AlconnaMatcher.i18n("example", "test1.test2", ...))


> [!NOTE]
> 在 `plugin-alconna` 中, i18n 条目会先被转换成 UniMessageTemplate
> 所以 UniMessageTemplate 的所有特性都可用于 i18n 条目
> 例如:
python
example.test: "{:At(user, $event.get_user_id())} Hello!"
await XXX.send(XXX.i18n("example", "test"))

> 特别的,因为 `I18n` 是一个通用消息段,所以 i18n 条目可以嵌套:
json
{
"example": {
"test": "XXXX",
"foo": "{:I18n(example, test)}, XXXX!"
}
}


**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.45.4...v0.46.0

0.45.4

What's Changed
* 修改 exporter 中 各适配器msg 的构造
* :arrow_up: auto update by pre-commit hooks by pre-commit-ci in https://github.com/nonebot/plugin-alconna/pull/48


**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.45.3...v0.45.4

0.45.3

- builtins.extensions.__init__ 移除 DiscordSlashExtension
- 调整 TelegramSlashExtension 的 docstring
- 为 `UniMessage` 增加 `finish`

**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.45.2...v0.45.3

0.45.2

- 修复 satori 适配器下 Target 的构建
- 增加检查 satori 适配器版本

**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.45.1...v0.45.2

0.45.1

What's Changed
* 升级 nonebot2 依赖版本至 2.3.0
* ⬆️ Bump dependabot/fetch-metadata from 2.0.0 to 2.1.0 by dependabot in https://github.com/nonebot/plugin-alconna/pull/47

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

**Full Changelog**: https://github.com/nonebot/plugin-alconna/compare/v0.45.0...v0.45.1

Page 5 of 22

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.