Releases: ArcletProject/Entari
Releases · ArcletProject/Entari
Entari 0.10.0
新增
- 内置插件 help 和 inspect
- MessageChain新方法(select,transform,split等)
- 基础配置:指令前缀
- commands新增选项
use_config_prefix
- 新增 Filter 类,其整合了通用的过滤方法 (选定 guild,channel,user_id,self 等)与消息事件的过滤方法 (public/direct, reply_me, notice_me 等)
- 插件配置
$prelude
,其指定的插件先于其他插件加载,并仅能作为静态插件
plugins:
$prelude: ["::auto_reload"]
::help: {}
::auto_reload: {}
- entari-cli 新增 new 子命令,用来生成配置文件
- 内置调度器/定时任务服务,并可以动态创建任务 (需要插件配置
.scheduler
来启用) - 内置频次控制、并发限制的辅助器
- 内置本地数据存储目录/临时目录的提供
改进
- 使用 satori v1.2
- 直接使用
plugin
的所有键作为要导入的插件列表 - 通过在插件名字前加上
~
来表示禁用插件 auto_reload
插件可监听配置文件的修改并执行重载插件本体或应用插件新配置 (通过watch_config
启用)- commands 将
need_tome
配置分割为need_replyme和need_noticeme - 插件配置支持传入黑名单/白名单过滤器 (
$allow
/$deny
)
plugins:
foo:
$allow:
channel: ["xxxxxx"]
$or:
direct: true
$deny:
user: ["xxxxxx"]
- 插件可声明自己为静态插件,以忽略重载操作(静态插件不能通过插件来监听事件)
entari
指令改为entari run
修复
- 子插件与附属插件的导入
Full Changelog: v0.9.0...v0.10.0
v0.10.0rc2
Full Changelog: v0.10.0rc1...v0.10.0rc2
v0.10.0rc1
Full Changelog: v0.9.0...v0.10.0rc1
Entari 0.9.0
- 增加事件
SendResponse
表示消息发送后 (与SendRequest
对应) - 增加了一个 cli
entari
用来便捷的根据配置文件启动 Entari - 美化 logger
- 升级
Letoderea
到 0.12.1 config:basic.plugins
与config:plugins
合并,现在可以通过plugins: XXX: true
或plugins: XXX: {}
表示启用插件
Full Changelog: v0.8.2...v0.9.0
Entari 0.8.2
- 实现了
before_send
(即发送消息前的钩子函数)
Full Changelog: v0.8.1...v0.8.2
Entari 0.8.1
- 升级 Letoderea 至 0.12.0
command
新增execute
函数,用以向全局广播命令并取得特定处理结果AlconnaPluginDispatcher
增加on_execute
装饰器,用来处理命令对execute
传入的消息的解析结果
Full Changelog: v0.8.0...v0.8.1
Entari 0.8.0
新增
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
新增
- 子插件机制:
- 导入插件时可以通过提前使用
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
- 修复导入bug
Full Changelog: v0.6.3...v0.6.4
Entari 0.6.3
- 收到消息事件后现在会有log显示
- 修复
dispatch
失效的问题
Full Changelog: v0.6.2...v0.6.3