Nonebot Plugin Alconna 0.26.0
破坏性改动
on_alconna
等删除参数output_converter
,message_provider
,用Extension
替代
新增
- 新增对象
Extension
, 用于自定义 AlconnaMatcher 的部分行为 #7
例如LLMExtension
,可以用于将自然语言通过llm转为指令:目前from nonebot_plugin_alconna import Extension, Alconna class LLMExtension(Extension): @property def priority(self) -> int: return 10 @property def id(self) -> str: return "LLMExt" def __init__(self, llm): self.llm = llm def post_init(self, alc: Alconna) -> None: self.llm.add_context(alc.command, alc.meta.description) async def message_provider( self, event, state, bot, use_origin: bool = False ): if event.get_type() != "message": return resp = await self.llm.input(str(event.get_message())) return event.get_message().__class__(resp.content)
Extension
的功能有:- 对于此时事件的来源适配器或bot选择是否接受响应
- 对输出信息的自定义转换方式
- 对于事件 -> 消息 的自定义处理方式
- 对于传入的alc对象的追加的自定义处理
- 对于
AlconnaMatcher.send
时传入的消息对象的自定义处理方式 - 自定义额外的matcher api
on_alconna
等新增参数extensions
,exclude_ext
extensions
: 需要加载的匹配扩展, 可以是扩展类或扩展实例exclude_ext
: 需要排除的匹配扩展, 可以是扩展类或扩展的id, 可以用来排除预期的全局加载的拓展
- 为
discord
适配器增加DiscordSlashExtension
,其可自动将Alconna
对象翻译成 slash指令并注册,且将收到的指令交互事件转为指令供命令解析 - 新增配置项
ALCONNA_GLOBAL_EXTENSIONS
,用来声明全局加载的扩展,例如其值类似于ALCONNA_GLOBAL_EXTENSIONS=["~adapters.discord:DiscordSlashExtension"]
entry_points
的格式,并且当不指定":"
后的属性时自动补全为":__extension__"
改进
- 添加了部分log
- 为 log与exception 添加了 i18n 支持
修复
- 🐛 Discord 斜杠命令正确转换 by @CMHopeSunshine in #9
杂项
- ⬆️ Bump actions/setup-python from 3 to 4 by @dependabot in #8
- ⬆️ auto update by pre-commit hooks by @pre-commit-ci in #10
New Contributors
- @CMHopeSunshine made their first contribution in #9
- @pre-commit-ci made their first contribution in #10
Full Changelog: v0.25.1...v0.26.0