Releases: nonebot/plugin-alconna
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 🆕
├── plugin.py
└── ...
你需要将你语言文件中所有包含的项目声明在 .template.json
中,例如:
{
"$schema": ".template.schema.json",
"scopes" : [
{
"scope": "example",
"types": [
"test"
]
}
]
}
然后通过 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
└── ...
之后,在 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(...)
基于此,I18n
和 AlconnaMatcher.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
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
Nonebot Plugin Alconna 0.45.0
破坏性改动
- 删除
Custom
新增
builtins
模块,目前包括extensions
,plugins
和uniseg
extensions
模块目前包含:ReplyRecordExtension
: 将消息事件中的回复暂存在 extension 中,使得解析用的消息不带回复信息,同时可以在后续的处理中获取回复信息。DiscordSlashExtension
: 将 Alconna 的命令自动转换为 Discord 的 Slash Command,并将 Slash Command 的交互事件转换为消息交给 Alconna 处理。MarkdownOutputExtension
: 将 Alconna 的自动输出转换为 Markdown 格式TelegramSlashExtension
: 将 Alconna 的命令注册在 Telegram 上以获得提示。
plugins
目前有echo
和help
两个插件uniseg
目前有chronocat
模块,拓展了chronocat:face
和chronocat:marketface
改进
- 原
custom_register
现不再限制为Custom
子类的构造,任意 Segment 子类都可 - 原
Custom.export
改为custom_handler
,允许任意 Segment 子类转为适配器对应消息段
Full Changelog: v0.44.0...v0.45.0