Skip to content

Releases: nonebot/plugin-alconna

Nonebot Plugin Alconna 0.18.0

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 25 Aug 07:59
  • 在 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

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 23 Aug 02:50
  • 新增配置项 alconna_use_param, 表示是否使用特制的 Param 提供更好的依赖注入,默认为 True
  • 若开启 use_param, AlconnaMatcher 下的响应器对于如下参数皆不再需要依赖注入:
    • CommandResult
    • Arparma
    • Alconna
    • Duplication
    • Match
    • Query
    • AlconnaArg
    • arg in args
      示例:
     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 参数
     ):
     ...
    而倘若需要在 Match 和 Query 处使用 middleware,你仍可以改回原来的依赖注入写法

Full Changelog: v0.16.0...v0.17.0

Nonebot Plugin Alconna 0.16.0

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 15 Aug 08:56

变更

  • 增加 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

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 15 Aug 03:41

What's Changed

New Contributors

Full Changelog: v0.14.2...v0.15.0

Nonebot Plugin Alconna 0.14.2

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 14 Aug 09:37

新增

  • AlconnaMatchAlconnaQuery 新增 middleware 参数,用于对匹配参数进行自定义处理
  • 增加内置 middleware image_fetch ,用于拉取图片参数的二进制数据
  • 为 Alconna 下常用组件进行了 re-export

Full Changelog: v0.14.1...v0.14.2

Nonebot Plugin Alconna 0.14.1

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 14 Aug 04:02
  • segmatch 现在支持 Reply 匹配了
  • Reply 的 origin 现在包括原始 segment,适配器特定的reply: Modelreply: Message

Full Changelog: v0.14.0...v0.14.1

Nonebot Plugin Alconna 0.14.0

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 13 Aug 14:59
  • 新增通用标注 Reply:
     class Reply(Segment):
         id: str
         msg: Optional[str]
  • 新增规则 seg_match 与对应的依赖注入 SegMatchMessageSegMatchResult, 用于配合通用标注:
     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

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 31 Jul 12:41

变更

Full Changelog: v0.12.1...v0.13.0

Nonebot Plugin Alconna 0.12.1

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 30 Jul 03:26

变更

  • 修复通用标注无法匹配 telegram 适配器下的图片的问题
  • got_path 先执行 paramless depend

Full Changelog: v0.12.0...v0.12.1

Nonebot Plugin Alconna 0.12.0

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 29 Jul 16:09

变更

  • 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