Releases: nonebot/plugin-alconna
Nonebot Plugin Alconna 0.46.6
Nonebot Plugin Alconna 0.46.5
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
Full Changelog: v0.46.3...v0.46.4
Nonebot Plugin Alconna 0.46.3
- 增加
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)
Full Changelog: v0.46.1...v0.46.3
Nonebot Plugin Alconna 0.46.1
改进
Command
构造器可以在初始化时传入 CommandMetafallback
现在改为FallbackStrategy
, 可以选择ignore
,text
,rollback
和forbid
; 之前的True
表示为text
AlconnaMatcher
里的fallback
现在默认为ignore
UniMessage
里的fallback
现在默认为rollback
- 在 qq 适配器中
mention
和mention_everyone
现在会暂时返回空格
修复
- 修复
Reference
的构造问题
Full Changelog: v0.46.0...v0.46.1
Nonebot Plugin Alconna 0.46.0
新增
- 适配器 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 ./i18n
和 tarina-lang init
,会生成如下文件:
📦 awesome-bot
├──📂 i18n
++ ├── __init__.py
++ ├── .config.json
++ ├── .template.json
++ └── .template.schema.json
├── xxx.py
└── ...
你需要将你语言文件中所有包含的项目声明在 .template.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
语言文件后的文件结构:
📦 awesome-bot
├──📂 i18n
│ ├── __init__.py
│ ├── .config.json
++ ├── .lang.schema.json
│ ├── .template.json
│ ├── .template.schema.json
++ ├── en-US.json
++ └── zh-CN.json
├── plugin.py
└── ...
其中一个语言文件如下所示:
// 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 格式的语言文件如下所示:
# $schema: .lang.schema.json
example:
test: Test
test1:
test2: Test2
之后,在 plugin
里面,你可以用如下方法来使用i18n条目:
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
来生成一个模型文件:
📦 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 ExampleTest1:
test2: LangItem = LangItem("example", "test1.test2")
class Example:
test: LangItem = LangItem("example", "test")
test1: ExampleTest1
class Lang(LangModel):
example = Example
之后便可以这样使用:
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
可以如下使用:
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 条目
例如:
# 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
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
- builtins.extensions.init 移除 DiscordSlashExtension
- 调整 TelegramSlashExtension 的 docstring
- 为
UniMessage
增加finish
Full Changelog: v0.45.2...v0.45.3
Nonebot Plugin Alconna 0.45.2
- 修复 satori 适配器下 Target 的构建
- 增加检查 satori 适配器版本
Full Changelog: v0.45.1...v0.45.2
Nonebot Plugin Alconna 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 #47
Note
随着 nonebot2 升级至 2.3.0,本插件同样也放弃了对 python 3.8 的支持。
Full Changelog: v0.45.0...v0.45.1