Skip to content

Releases: nonebot/plugin-alconna

Nonebot Plugin Alconna 0.51.0

06 Aug 09:07
d09416c
Compare
Choose a tag to compare

新增

  • FallbackStrategy.auto 策略,会根据执行每个元素的情况执行最佳的回退策略
  • UniMessage 的序列化&反序列化方法 .load.dump,用于持久化消息
    • dump 将消息序列化为 JSON 格式;若不指定 media_save_dir,则会尝试导入 nonebot_plugin_localstore 并使用其提供的路径。
      否则,将会尝试使用当前工作目录。
    • load 从 JSON 数据加载消息
  • command_from_json/yamlcommands_from_json/yaml 函数,用于从 JSON/YAML 文件中加载 Command 对象:
    from nonebot_plugin_alconna import command_from_yaml
    
    cmd = command_from_yaml("foo.yml").build(...)
    foo.yml:
    command: foo <bar:str>
    help: 测试
    usage: foo <bar>
    shortcuts:
      - key: 测试
        args: ["123"]
    actions:
      -
        params: ["bar"]
        code: |
          return f"hello, {bar}"
  • 内置插件 with,用于在当前群组场景内设置一个局部命令前缀。对于包含多个子命令的指令,该插件可以使得此指令进行更加便捷的调用:
    image

改进

  • Text.color 支持了更多的颜色
  • on_alconna 中的配置项参数 (例如 use_cmd_start) 现在为 bool | None 类型:
    • 只有在类型为 None/ 不声明参数时,会跟随全局配置

修复

New Contributors

Full Changelog: v0.50.3...v0.51.0

Nonebot Plugin Alconna 0.50.3

04 Aug 14:21
550657c
Compare
Choose a tag to compare
  • 修复 CommandResult.source 获取错误的问题

Full Changelog: v0.50.2...v0.50.3

v0.50.2

22 Jul 14:38
Compare
Choose a tag to compare

What's Changed

  • TextUniMessage 新增 replace 方法
  • 修复 telegram 适配器下按钮无法发送的问题 by @KomoriDev in #60

New Contributors

Full Changelog: v0.50.1...v0.50.2

Nonebot Plugin Alconna 0.50.1

19 Jul 17:47
Compare
Choose a tag to compare
  • 修复 AlconnaMatcher.send 会调用两次 send_wrapper 的问题
  • UniMessage 新增方法 mapselect
  • 移除非必要的 Segment.from_

Full Changelog: v0.50.0...v0.50.1

Nonebot Plugin Alconna 0.50.0

18 Jul 08:16
Compare
Choose a tag to compare

新增

  • 增加 ButtonKeyboard 消息段,表示按钮元素与按钮组/按钮矩阵元素。
    • Button 有四种 flag: action, link, input, enter
    • Keyboard 不传入参数 row 时,根据适配器情况自动选择作为一行发送或者换行成按钮矩阵
    • 只传入 Button 或 只传入 Keyboard 时,根据适配器情况自动选择合并为 Keyboard 或展开为 Button
  • 增加内建消息段 Markdown, 负责专门适配 QQ 适配器下的 md消息模板
    • Markdown 只传入了参数 content , 其行为与构造 Text(...).markdown() 相同
    from nonebot_plugin_alconna import Button
    from nonebot_plugin_alconna.builtins.uniseg.markdown import Markdown
    
    await (
        Markdown(
            template_id="102060544_1720161790",
            params={
                "text": ["a"],
                "image_spec": ["#1024px #648px"],
                "image": ["http://res.dunnoaskrf.top/gacha_sim_910f39dca8bb930cc35175f23289dd65.png"],
            },
        )
        + Button("enter", "再来一发", text="/十连")
    ).send()
  • UniMessage 新增若干方法:
    • transform & tansform_async: 遍历消息并依据传入的规则对消息内容进行替换/验证
    • split: 和 str.split 差不多, 提供一个字符串, 然后返回分割结果.
    • startswith & endswith: 断消息链是否以给出的字符串开头/结尾
    • removeprefix & removesuffix: 移除消息链前缀/后缀
    • strip & lstrip & rstrip: 去除首尾的空白字符

改进

  • QQ 适配器的群聊场景下 Reply 元素暂时会略过
  • Extension 的 send_wrapper 现在在 UniMessage.send 时会调用
  • ⬆️ Bump dependabot/fetch-metadata from 2.1.0 to 2.2.0 by @dependabot in #58

Full Changelog: v0.49.0...v0.50.0

Nonebot Plugin Alconna 0.49.0

07 Jul 12:37
Compare
Choose a tag to compare

新增

  • UniMessage 新增 export_sync 方法,用来同步形式调用 .export 方法
from nonebot_plugin_alconna import UniMessage

msg = UniMessage.at("123").text("hello").export_sync(adapter="OneBot V11")
  • 新增配置项 ALCONNA_BUILTIN_PLUGINS, 用来在配置项中声明要加载的内置插件
  • echo 插件增加配置项 NBP_ALC_ECHO_TOME
  • help 插件增加配置项 NBP_ALC_HELP_TEXT, NBP_ALC_HELP_ALIAS
  • help 插件新增命名空间的相关功能(列出,筛选)
  • Command 构造器增加 .namespace

改进

  • MusicShare.brief 字段改名为 .summary
  • TelegramSlashExtension 现在会检查 command 参数是否符合 tg 标准
  • context 中增加 bot.self_id, bot.platformadapter.name 三项
  • UniMessage.export 增加 adapter 参数表示指定适配器,并将 bot 参数设为严格可选
  • select 方法现在返回一个自定义的 SelectPattern, 其上有 .nth(), .first, .last, .from_() 四个方法/属性
from nonebot_plugin_alconna import Image, Video, select

img = select(Image).first
img_in_video = select(Image).from_(Video).nth(1)

Full Changelog: v0.48.0...v0.49.0

Nonebot Plugin Alconna 0.48.0

27 Jun 02:27
Compare
Choose a tag to compare

新增

  • AlconnaMatcher.test 方法,其用来在 startup 阶段测试 alc 对象的可用性。
matcher = on_alconna(...)
matcher.test("command bar", {"foo": "bar"})
  • builtins.uniseg.MusicShare, 对应qq下的音乐分享元素

改进

  • feat: support Media.name in telegram adapter by @lgc2333 in #55
  • AlconnaMatcher.shortcut 现在返回值为 matcher 自身

Full Changelog: v0.47.2...v0.48.0

Nonebot Plugin Alconna 0.47.2

24 Jun 07:43
Compare
Choose a tag to compare

新增

  • at_meat_in 两个 Rule,分别表示消息是否at了bot自己,是否at了指定目标(暂时不考虑尾部at)

改进

  • 传入 alc 解析的消息现在不带 reply 了

Full Changelog: v0.47.1...v0.47.2

Nonebot Plugin Alconna 0.47.1

19 Jun 13:27
Compare
Choose a tag to compare
  • 修复导入插件时提示 adapter satori: no module xxxxxxxxx 的问题

Full Changelog: v0.47.0...v0.47.1

Nonebot Plugin Alconna 0.47.0

17 Jun 16:01
Compare
Choose a tag to compare

新增

  • UniMessage.filter 方法,在筛选元素类型的同时可以传入自定义判断条件函数
  • patch_matcher_send 方法,可以将 matcher.send 替换为经过 UniMessage 翻译过一次后再发送的情况(例如 ob11 -> uni -> satori)
  • help 插件会根据 alc 命令对应的插件的元数据中的适配器支持条目来选择是否在 help 内显示该指令

改进

  • echo 插件使用了 ReplyMergeExtension,即可以通过回复消息并只输入 echo 来执行:
    屏幕截图 2024-06-18 000545

  • 升级 Tarina 至 0.5.4

  • builtin.uniseg.chronocat 改为 builtin.uniseg.market_face, 并实现了现有适配器中关于商城表情的相关解析

  • patch_matcher_sendpatch_saa 会返回一个 dispose 函数,用于还原 patch 行为

  • 现在 AlconnaMatcherAlconnaRule 对 Alconna 都是弱引用

Full Changelog: v0.46.6...v0.47.0