Releases: nonebot/plugin-alconna
Releases · nonebot/plugin-alconna
Release list
Nonebot Plugin Alconna 0.18.0
- 在 discord 适配中增加了一个函数
translate,用于将Alconna对象转为 discord 适配器中on_slash_command的创建结构
若原先的命令结构如下:则使用from nonebot.adapters.discord.api import ( IntegerOption, NumberOption, StringOption, SubCommandOption, UserOption, ) from nonebot.adapters.discord.commands import on_slash_command matcher = on_slash_command( name="permission", description="权限管理", options=[ SubCommandOption( name="add", description="添加", options=[ StringOption( name="plugin", description="插件名", required=True, ), IntegerOption( name="priority", description="优先级", required=False, ), ], ), SubCommandOption( name="remove", description="移除", options=[ StringOption(name="plugin", description="插件名", required=True), NumberOption(name="time", description="时长", required=False), ], ), SubCommandOption( name="ban", description="禁用", options=[ UserOption(name="user", description="用户", required=False), ], ), ], )
translate后可以改为:from arclet.alconna import Args, Option, Alconna, CommandMeta from nonebot_plugin_alconna.adapters.discord import MentionUser, translate matcher = translate( Alconna( "permission", Option("add", Args["plugin#插件名", str]["priority?#优先级", int]), Option("remove", Args["plugin#插件名", str]["time?#时长", float]), Option("ban", Args["user?#用户", MentionUser]), meta=CommandMeta("权限管理"), ) )
Full Changelog: v0.17.0...v0.18.0
Nonebot Plugin Alconna 0.17.0
- 新增配置项
alconna_use_param, 表示是否使用特制的 Param 提供更好的依赖注入,默认为 True - 若开启 use_param, AlconnaMatcher 下的响应器对于如下参数皆不再需要依赖注入:
- CommandResult
- Arparma
- Alconna
- Duplication
- Match
- Query
- AlconnaArg
- arg in args
示例:
而倘若需要在 Match 和 Query 处使用 middleware,你仍可以改回原来的依赖注入写法async def handle( result: CommandResult, arp: Arparma, dup: Duplication, # 此处可以是基类及其任意子类 source: Alconna, abc: str, # 类似 Match, 但是若匹配结果不存在对应字段则跳过该 handler foo: Match[str], bar: Query[int] = Query("ttt.bar", 0) # Query 仍然需要一个默认值来传递 path 参数 ): ...
Full Changelog: v0.16.0...v0.17.0
Nonebot Plugin Alconna 0.16.0
变更
- 增加
Command便捷命令创建器:book = ( Command("book", "测试") .option("writer", "-w <id:int>") .option("writer", "--anonymous", {"id": 0}) .usage("book [-w <id:int> | --anonymous]") .shortcut("测试", {"args": ["--anonymous"]}) .build() ) @book.handle() async def test1_h(arp: Arparma = AlconnaMatches()): await book.send(str(arp.options))
Full Changelog: v0.15.0...v0.16.0
Nonebot Plugin Alconna 0.15.0
What's Changed
- Alconna 依赖升级至 1.7.17
- 新增适配器: Discord (https://github.com/nonebot/plugin-alconna/tree/master/src/nonebot_plugin_alconna/adapters/discord.py)
- 为Reply添加Discord和Kaiheila适配 by @canxin121 in #3
AlconnaMatcher增加方法shortcut()作为Alconna.shortcut的快捷调用
New Contributors
- @canxin121 made their first contribution in #3
Full Changelog: v0.14.2...v0.15.0
Nonebot Plugin Alconna 0.14.2
新增
- 为
AlconnaMatch与AlconnaQuery新增middleware参数,用于对匹配参数进行自定义处理 - 增加内置 middleware
image_fetch,用于拉取图片参数的二进制数据 - 为 Alconna 下常用组件进行了 re-export
Full Changelog: v0.14.1...v0.14.2
Nonebot Plugin Alconna 0.14.1
- segmatch 现在支持 Reply 匹配了
Reply的 origin 现在包括原始 segment,适配器特定的reply: Model或reply: Message
Full Changelog: v0.14.0...v0.14.1
Nonebot Plugin Alconna 0.14.0
- 新增通用标注
Reply:class Reply(Segment): id: str msg: Optional[str]
- 新增规则
seg_match与对应的依赖注入SegMatchMessage和SegMatchResult, 用于配合通用标注:from nonebot_plugin_alconna import Image, seg_match, SegMatchResult xxx = on_message(rule=seg_match(Image)) @xxx.handle() async def _(image: Image = SegMatchResult(Image)): await xxx.send(image.url)
因为nonebot下各适配器对 Reply 元素的处理方式各不相同,同时nonebot既没有约定统一的获取不经过check_tome等的原始消息的接口,也没有统一如MessageEvent.reply的格式,导致此次更新对于获取Reply的内容是毫无帮助的
Full Changelog: v0.13.0...v0.14.0
Nonebot Plugin Alconna 0.13.0
Nonebot Plugin Alconna 0.12.1
Nonebot Plugin Alconna 0.12.0
变更
- AlconnaMatcher 新增方法
got_path, 其作为got方法的拓展,会以 path 上的参数为准,读取传入 message的最后一个消息段并验证转换from nonebot_plugin_alconna import on_alconna, AlconnaMatcher, AlconnaMatch, AlconnaArg test_cmd = on_alconna(Alconna("search", Args["img?", Image])) @test_cmd.handle() async def test_handle(matcher: AlconnaMatcher, img: Match[Image] = AlconnaMatch("img")): if img.available: matcher.set_path_arg("img", img.result) @test_cmd.got_path("img", prompt="请输入图片") async def test_got(img: Image = AlconnaArg("img")): await test_cmd.finish(await search(img.url))
- AlconnaMatcher 增加方法
set_path_arg,get_path_arg, 类似set_arg,get_arg
Full Changelog: v0.11.2...v0.12.0