Skip to content

Releases: ArcletProject/Entari

Entari 0.8.0

28 Oct 07:16
Compare
Choose a tag to compare

新增

  • Entari 增加参数 ignore_self_message,默认为 True

改进

  • ProxyModule 使用 weakref.proxy 替代
  • 升级 satori 至 0.15.0
  • 升级 Alconna 至 1.8.31
  • 当插件为多级(>2)结构时,每一级都是其子级的父模块

Full Changelog: v0.7.0...v0.8.0

Entari 0.7.0

01 Oct 08:06
Compare
Choose a tag to compare

新增

  • 子插件机制:
    • 导入插件时可以通过提前使用 package(xxx) 来声明某个模块为当前插件的子模块。模块的更新、重载会一并作用给子模块。
    • 若插件为目录结构,除 __init__.py 外的其他模块会自动作为子模块
    • 若不想使某个模块作为子模块,可以使用 load_plugin(xxx)
  • 重载机制:
    • 当使用 load_plugin 时,Entari 会修改实际导入的代码,使得一个模块只受插件管理。原模块会使用 ProxyModule 替代
    • 同时,若原模块在其他插件下存在导入并引用时,Entari 会记录这一依赖行为
    • 当对插件进行重载时,原模块即被销毁,创建新模块后,Entari 会依据依赖链将下游所有模块一并重载
  • 插件配置:load_plugin 可以传入 config: dict 参数
  • 插件服务:Plugin 可以通过 .serive 方法挂载一个 Laurart 服务,该服务会在插件被销毁时一并释放
  • 跨重载对象:可以使用 keeping("foo", xxx) 来标记一个对象,使得其在插件重载后对象维持不变。
  • 内置插件:
    • auto_reload : 依赖 watchfiles, 根据配置传入的插件目录位置,检测到更改后自动重载该插件(即热重载)
    • echo: 顾名思义

改进

  • 升级 satori 至 0.15.0rc2
  • 升级 Alconna 至 1.8.30

Full Changelog: v0.6.4...v0.7.0

Entari 0.6.4

27 Jul 15:56
Compare
Choose a tag to compare
  • 修复导入bug

Full Changelog: v0.6.3...v0.6.4

Entari 0.6.3

26 Jul 16:52
Compare
Choose a tag to compare
  • 收到消息事件后现在会有log显示
  • 修复 dispatch 失效的问题

Full Changelog: v0.6.2...v0.6.3

Entari 0.6.2

12 Jul 01:40
Compare
Choose a tag to compare
  • AlconnaDispatcher 增加 .assign方法
  • 常规的 PluginDispatcher 现在可以直接用__call__去声明订阅者:
disp_message = MessageEvent.dispatch()

@disp_message
async def _(): ...

Full Changelog: v0.6.1...v0.6.2

Entari 0.6.1

10 Jul 16:09
Compare
Choose a tag to compare
  • 紧急修复插件导入相关代码以避免干扰正常模块导入

Full Changelog: v0.6.0...v0.6.1

Entari 0.6.0

10 Jul 15:50
Compare
Choose a tag to compare

破坏性改动

  • 修改原有插件写法,具体有:
    • plugin = Plugin() => __plugin_metadata__ = PluginMetadata()
    • plugin.dispatch() => from arclet.entari import plugin; plugin.dispatch()XXXEvent.dispatch()
    • plugin.mount(Alconna(...)) => from arclet.entari import command; command.mount(Alconna(...))
    • from arclet.entari import EntariCommands; command = EntariCommands() => from arclet.entari import command

新增

  • dispose_plugin: 可卸载加载过的插件,并且据此可以在程序运行期间进行动态更新插件本体(无法更新上游依赖)

改进

  • Bump dependabot/fetch-metadata from 2.1.0 to 2.2.0 by @dependabot in #8

Full Changelog: v0.5.1...v0.6.0

Entari 0.5.1

08 Jul 06:47
Compare
Choose a tag to compare
  • 升级 arclet-letoderea 到 0.11.0
  • 加载插件出错时在日志显示错误信息
  • session.prompt 增加参数 keep_sender 来配置是否只允许会话发起者回复

Full Changelog: v0.5.0...v0.5.1

Entari 0.5.0

07 Jun 12:17
Compare
Choose a tag to compare
  • 升级 satori-python 至 0.13.0
  • ContextSession 改名为 Session

Full Changelog: v0.4.1...v0.5.0

Entari 0.4.1

20 May 09:40
Compare
Choose a tag to compare
  • Entari 上增加了 onon_message 方法,以便不经过插件直接挂载处理函数

Full Changelog: v0.4.0...v0.4.1