Skip to content

更新日志

0.11.0 (2024-11-03)

Bug Fixes

Features

  • 使用 AnyIO 重构 (#138) (c518c2b)
  • 添加 override 装饰器 (#130) (7b2a9b6)
  • 移除 Python 3.8 支持 (#129) (1813a64)
  • bot: 为 Bot 类的 __init__ 添加用于控制是否处理系统信号的 handle_signals 参数 (#140) (a0e175f)
  • bot: Bot 类新增用于安全退出的 exit() 方法 (#139) (7a58d41)
  • cqhttp: 修改 CQHTTP 适配器事件的 detail_type 判断方式 (#146) (ffa2c40)
  • telegram: 新增 Telegram 协议适配器 (#147) (77ea80b)
  • telegram: 优化 API 和 Event 的代码生成 (#150) (42e3174)

BREAKING CHANGES

  • bot: 移除 Bot 类型的 should_exit 公开属性
  • 移除 Python 3.8 支持

0.10.0 (2024-03-22)

Bug Fixes

  • 修复 OneBot 适配器中的拼写错误 (#112) (f4ce37c)

Features

  • 给 MessageEvent 类添加用于获取唯一表示符的 get_sender_id method() 方法 (#113) (d17b62d)
  • 使用 structlog 作为日志库 (#111) (c5f546e)
  • 添加 Mirai 适配器的同步消息事件 (#108) (36249a9)

BREAKING CHANGES

  • 使用 structlog 作为日志库,弃用 alicebot.log 模块

0.9.0 (2023-11-06)

Bug Fixes

  • 修复一些类型检查错误 (#93) (fc48118)
  • 修复在 Python 3.8 和 3.9 下的错误 (815a7a6)
  • 修复在 Python 3.8 和 3.9 下的错误 (6bdcedd)
  • mirai: 修复拼写错误 (#91) (e653af7)

Features

  • bot: 修改部分日志输出 (#85) (c07b68a)
  • plugin: 支持在运行时读取插件类的泛型参数以获取初始化状态和插件配置类 (#98) (c20e7bb)

0.8.1 (2023-08-27)

Bug Fixes

  • message: 修复 Message 类的 replace() 方法的错误 (#82) (411c187)

0.8.0 (2023-08-27)

Bug Fixes

  • 修复部分类型注解错误 (#71) (e22bea5)
  • bot: 配置加载错误 (#73) (633c072)
  • bot: 热重载错误 (#74) (5ff9db4)
  • bot: 修复加载插件时会自动重新加载插件所在模块的问题 (#65) (a71a42d)
  • mirai: 修复 Mirai 事件模型错误 (#69) (0923159)
  • mirai: 修复拼写错误 (8efae5a)

Features

  • 更新到 Pydantic v2 (#42) (6f7243b)
  • 添加 MessageEvent 的快捷导入 (#75) (b11b6d5)
  • 添加 Pylint 并修复 Pylint 错误 (#61) (bdde3b9)
  • 添加并完善模块的 __all__ 列表 (#36) (babb09a)
  • 修改 MessageEvent 的泛型定义 (#38) (ef23cf0)
  • 移动之前的 tests 目录到 examples 目录 (#39) (2883454)
  • log: 将 error_or_exception() 函数更改为 Bot 类的一个方法 (#72) (c1addba)
  • message: 删除 Message 和 MessageSegment 类的 deepcopy() 方法 (#62) (276215b)
  • message: 修改消息和消息字段类 (#77) (e5247c9)

Reverts

  • Revert "refactor: 使用新的 annotations 特性 (#45)" (#47) (1f2d793), closes #45 #47

BREAKING CHANGES

  • message: 改变 Message 类实例化时可接受的参数
  • log: 删除了 log 模块的 error_or_exception() 函数,请使用 Bot 类的同名函数替代
  • message: 删除 Message 和 MessageSegment 类的 deepcopy() 方法
  • 修改部分 TypeVar 和 TypeAlias 的名称

0.7.1 (2023-05-27)

Bug Fixes

  • dingtalk: 修复 DingTalk 适配器错误 (787a7dd)

0.7.0 (2023-05-27)

Bug Fixes

  • 完善部分类型注解并修改 Config 相关逻辑 (98552ce)
  • mirai: 修复 Mirai 适配器中 Message 事件回复消息时 quote 为 True 时的异常 (#31) (5612209)
  • mirai: 修复 Mirai 适配器中缺少 BotLeaveEventDisband 事件的问题 (#33) (dd02967)
  • mirai: 修复缺少其他客户端上下线通知类的问题 (#34) (2866c8e)

Features

  • 删除 Plugin 类的 get() 方法 (3ad522f)
  • 添加依赖注入功能 (23f3219)
  • 完善类型注解 (162f4f7)
  • Bot 类的 get() 方法添加 event_type 和 adapter_type 参数 (d6ad4a8)
  • dependencies: 修改依赖注入相关逻辑并添加 Bot 类型和上下文管理器的注入支持 (ee819ee)
  • event: 添加通用的 MessageEvent 事件 (38288db)
  • event: MessageEvent 添加 is_same_sender(), get(), ask() 方法 (834d358)
  • mirai: Mirai 适配器 Source 类型的消息段的 __str__() 将返回空字符串 (a7bd151)
  • onebot: 添加 OneBot v12 适配器 (2448d64)
  • onebot: 完善 OneBot 适配器事件操作 (b003965)
  • plugin: 添加用于初始化插件状态的 __init_state__() 方法 (129f7b0)
  • plugin: 为 Plugin 类添加 __init_subclass__() 特殊方法,用以在派生子类时进行一些自定义操作 (920a315)

BREAKING CHANGES

  • 删除 Plugin 类用于初始化后处理的 __post_init__() 方法,现在可以直接重载 __init__() 方法
  • 删除 Plugin 类的 get() 方法,请使用 self.bot.get() 代替

0.6.2 (2023-04-25)

Bug Fixes

  • 修复 Hook 函数类型注解错误 (b39865a)
  • 修复 WebSocketAdapter 在还没有连接直接 shutdown 时的异常 (c1a7599)
  • bot: 修复热更新启动时适配器相关配置被改变不会自动重启 Bot 的错误 (aa0ca73)
  • cqhttp: 修复 CQHTTPAdapter 类 call_api 方法的类型注解错误 (0d87850)
  • mirai: 修复 MiraiAdapter 类 call_api 方法的类型注解错误 (c37a4f3)
  • mirai: 修复 MiraiMessageSegment 类进行相加等操作时的错误 (f5df7ba)
  • mirai: 修改部分群事件的 operator 参数类型为可选类型 (1986b0f)

Features

  • 添加 py.typed 标记 (17f9216)
  • 完善类型注解并修改部分代码 (393a105)
  • 修改 Bot 的 bot_exit_hook 接受的函数为异步函数 (8490a0f)
  • 移动示例适配器到 tests 中 (8789b47)
  • Bot 类的 get_adapter 方法支持传入适配器类 (081f909)
  • bot: 添加从目录中加载插件 import 失败时的日志 (ad91735)
  • cqhttp: CQHTTPAdapter 新增用于添加用户自定义事件模型的 add_event_model() 类方法 (3eb0617)

BREAKING CHANGES

  • bot_exit_hook 钩子函数要求为异步函数

0.6.1 (2022-12-03)

Bug Fixes

  • bot: 修复 Bot 类 get_loaded_adapter_by_name 方法错误 (2b682b8)
  • mirai: 修复 Mirai 适配器初始化错误 (0d875bd)

Features

  • bot: 修改 Bot 类 get_loaded_adapter_by_name 方法的名称为 get_adapter (2257674)
  • bot: Bot 类添加 get_plugin() 方法 (a434bf8)

BREAKING CHANGES

  • bot: 修改 Bot 类 get_loaded_adapter_by_name 方法的名称为 get_adapter

0.6.0 (2022-11-26)

Bug Fixes

  • bot: 修复 docstring 错误 (95521b0)
  • bot: 修复加载 json 配置文件出错时的日志等级错误 (b9bbfff)
  • bot: 修复热更新时不会监控使用 load_plugins_from_dirs() 方法程序式加载的插件目录的错误 (500c2bc)

Features

  • 调整项目结构,增加 alicebot 模块对子模块的快捷导入 (c482e7f)
  • 修改插件和适配器的定义为 Plugin 或 Adapter 的子类,而非一个 Python 模块,修改配置类的定义方式,并修改 Bot 的大量与加载插件和适配器相关的公开方法 (759216a)
  • adapter: 为 Adapter 类添加泛型支持,并添加 config 属性 (cf629da)
  • bot: 添加 toml 格式配置文件支持,并作为默认配置文件格式 (207275d)
  • config: 新增 ConfigModel 类,要求所有配置类必须是 ConfigModel 的子类 (eec7cae)
  • config: 修改配置模型,允许配置发生改变时不一定重新启动 Bot (9c471c3)
  • cqhttp: 完善配置类的类型注解 (bf04235)
  • mirai: 完善配置类的类型注解 (bebf36d)
  • plugin: 修改 Plugin 类的 config 属性的定义为插件配置,并修改 Plugin 类的泛型参数 (35576fa)

BREAKING CHANGES

  • config: 修改配置模型
  • plugin: 修改 Plugin 类的 config 属性的定义为插件配置而非 "self.bot.config" 的别名,并修改 Plugin 类的泛型参数
  • config: 要求所有配置类必须是 ConfigModel 的子类,而非仅仅是 pydantic.BaseModel 的子类
  • bot: Bot 的默认配置配置文件名修改为 config.toml
  • 修改插件和适配器的定义为 Plugin 或 Adapter 的子类,修改插件和适配器配置类的定义方式,删除 Bot 类中程序化加载插件和适配器的所有方法,替换为 load_plugins(), load_plugins_from_dirs(), load_adapters() 方法

0.5.1 (2022-09-11)

Bug Fixes

  • adapter: 修复 test 适配器中的错误 (fabeb24)
  • bot: 修复 Adapter 类的 get 方法的 func 参数为协程时出现的错误 (4e022fb)
  • bot: 修复调用 Bot 类的 reload_plugins() 方法后适配器配置错误 (a01676e)
  • bot: 修复热重载启用时之前因为某些原因未被成功过加载为插件的文件触发修改后无法被重新加载的错误 (4c00b35)
  • plugin: 修复 Plugin 类 block 属性的潜在错误 (3f76fd4)
  • utils: 引入 typing-extensions,修复在 Python 3.10 以下版本中的运行异常 (fcd4d43)

Features

  • bot: 修改热更新文件修改相关日志 (3d587b3)
  • utils: 修改 load_module_from_name() 函数的行为,保证只会引发 ImportError、 LoadModuleError 和 KeyboardInterrupt 异常 (54af514)

0.5.0 (2022-08-21)

Bug Fixes

  • bot: 修复部分情况下热更新时出现的导入错误 (7977dfc)
  • bot: 修复部分情况下热重载时配置加载错误 (24cd51c)
  • bot: 修复删除插件不触发热重载的错误 (e97f244)

Features

  • bot: 添加加载同名插件时的警告 (c008711)
  • utils: 删除 utils.Condition 类,改用标准库中的 asyncio.Condition 类 (3e9db43)

BREAKING CHANGES

  • utils: 删除 utils.Condition 类

0.4.0 (2022-08-19)

Bug Fixes

  • bot: 避免强制退出时 bot_exit_hook 重复触发 (d5134fc)
  • bot: 修复热重载更新插件时插件优先级不会同步更新的错误及其他热重载相关错误 (010ec49)

Features

  • 对 Bot 类添加 reload_plugins 方法用于手动重新加载所有插件,删除 load_plugin_from_class 方法,并在程序式地导入插件或适配器时改变 config (4eb1634)
  • 删除 hot_reload 配置项,热重载启用方式更改为实例化 Bot 时传入参数 (87976de)
  • 添加热重载功能,修改 utils 模块中 load_module 相关函数的行为 (576958f)
  • 修改 load_module 相关函数的签名 (300e09a)
  • 修改 load_module 相关函数的行为 (be20985)
  • 修改部分日志文本,修改 load_modules_from_dir 函数的返回值 (c6eb684)
  • bot: 热重载时会检测配置文件的更新并自动重新运行 (dbb0b50)
  • bot: 热重载时会自动更新配置 (e28c9b3)
  • bot: 删除 config_file 和 config_dict 属性并修改配置加载相关行为,添加 restart 方法用于重新运行 AliceBot (956e2ea)
  • log: 添加 verbose_exception_log 配置项,提供可选的详细异常记录 (1565f42)
  • plugin: 修改 plugin_state 的 key 为 plugin name (f849743)

BREAKING CHANGES

  • Plugin 和 Adapter 等类必须直接定义于导入的模块中

0.3.1 (2022-06-08)

Bug Fixes

  • 修复 load_plugins_from_dir 方法不会导入配置类的问题 (bc6dc1a)

Features

0.3.0 (2022-05-04)

Bug Fixes

  • bot: 修复 Windows 系统下退出时出现异常 (bc86eed)
  • mirai: 修复 GroupMemberInfo 类的类型错误 (c96ca40)
  • utils: 修复 python 3.10 下无法运行的问题 (094ac04)

Features

  • 添加 state 状态存储功能 (d94a3fe)
  • 添加 typing 模块,将所有类型变量定义转移到 alicebot.typing 模块中 (eea30ed)
  • 为大多数模块添加 __all__ 属性 (d58ad7e)
  • 为各个适配器添加泛型 Event 支持 (aeb9ee1)
  • 修改 Bot 的 should_exit 类型为 asyncio.Event (4e9fdf1)
  • 移除 Bot 类的 loop 属性,并且不再使用低层级事件循环 API 启动 Bot 的运行 (be46f5a)
  • adapter.utils: 添加 WebSocketAdapter 适配器 (710ab13)
  • adapter: 添加 test 适配器 (1c5f08b)
  • adapter: 修改开发模式环境变量名称为 ALICEBOT_DEV (ae457d9)
  • alicebot: 重命名 Bot 对象的 __init__() 方法参数为 config_file (e0c2c5e)
  • bot: 修改 Bot 类的部分类型提示 (b87d8e4)
  • bot: Bot 的 handle_exit 方法设为非公开方法,并部分调整代码格式 (6a92fb5)
  • bot: Bot 类 __init__() 方法添加 config_dict 参数 (832f42c)
  • bot: Bot 类添加 load_plugin_from_class() 方法 (f00bbab)
  • config: 不再使用上下文变量隐式传递 config 对象,删除 dev_env 配置项 (53a9191)
  • cqhttp: 更新 cqhttp 适配器 (0703c4b)
  • DataclassEncoder 类移动到 utils 模块中 (293f571)
  • event: 为 Event 类添加泛型支持 (8fb3601)
  • event: 修改 Event 类的部分行为 (0635be7)
  • event: 重命名 Event 类的 handled 属性为 __handled__ (4617bd1)
  • event: event 模块不再是包 (83899ba)
  • exceptions: 删除 AdapterTimeout 异常类,并新增 GetEventTimeout 类,get 方法不再抛出 AdapterTimeout 而是 GetEventTimeout (0d7f6fa)
  • exceptions: 使 EventException 继承自 BaseException 以防止被用户捕获 (9a2f45e)
  • get 方法和相关逻辑从 Adapter 类移动到 Bot 类并删除 BaseAdapter 类 (662a9f6)
  • message: Message 类添加 is_text(), get_plain_text(), replace() 等方法 (92188fc)
  • mirai: 更新 mirai-api-http 适配器 (cfca9e0)
  • plugin: 删除 Plugin 类的 send() 方法和 adapter 属性,更改 get() 方法为 Bot 类的 get() 方法的别名,相应修改测试插件 (0ae3533)
  • plugin: 添加判断防止 Plugin 的 priority 和 block 属性不存在 (cd4c7dd)
  • plugin: 为 Plugin 类添加泛型支持 (0cca087)
  • utils: 删除 load_module 模块,将其代码移动到 utils 模块中 (fcf96ee)
  • utils: 删除无用的 LinkedQueue 类 (f7a0b5b)
  • utils: 为 Condition 类添加泛型支持 (3e2d6ef)

BREAKING CHANGES

  • event: Event 类实例化时必须指定 adapter 参数
  • plugin: 删除 Plugin 类的 send() 方法和 adapter 属性,更改 get() 方法定义
  • 删除 BaseAdapter 类
  • exceptions: 删除 AdapterTimeout 异常类,并新增 GetEventTimeout 类,get 方法不再抛出 AdapterTimeout 而是 GetEventTimeout
  • DataclassEncoder 类移动到 utils 模块中
  • 所有类型变量定义转移到 alicebot.typing 模块中
  • 修改 Bot 的 should_exit 类型为 asyncio.Event
  • 移除 Bot 类的 loop 属性
  • adapter: 开发模式环境变量名称从 dev_env 改为 ALICEBOT_DEV
  • config: 删除 dev_env 配置项

0.2.1 (2021-09-12)

Bug Fixes

  • cqhttp, mirai, dingtalk: 修复 message 类型的 event 的 reply() 方法错误拼写为 replay 的错误 (bf4c6be)
  • load_module: 修复 ModulePathFinder 在部分情况下可能出现的错误 (71a7366)

Features

  • load_module: load_module() 函数添加不导入显式继承自 ABC 的类的功能 (b018aaa)
  • message: 增加 Message 类对 Iterable[Union[T_MessageSegment, str, Mapping]] 类型的处理能力 (1dc35cb)

BREAKING CHANGES

  • cqhttp, mirai, dingtalk: 所有适配器中 message 类型的 event 的 replay() 方法重命名为 reply()

0.2.0 (2021-09-04)

Bug Fixes

  • .: 修复 bot_exit_hook() 方法错误的类型提示 (6add388)
  • .: 修复当插件抛出 StopException 时会不执行其余同优先级的插件的 bug (0d9eadc)
  • .: 修复了当插件进行事件处理过程中出现错误时,插件的 block 属性会被忽略的 bug (df71ffa)
  • adapter.cqhttp, adapter.utils: 解决了 WebSocket 连接时无法关闭 AliceBot 的问题 (aba36fd)
  • cqhttp, adapter.utils: 修复未进行 websocket 连接时直接关闭 alicebot 时报错的 bug (157928d)
  • cqhttp: 为 api_response 设置最大长度,解决潜在的内存泄露问题 (96d0ed0)
  • message: 修复 AbstractAdapter.get() 方法出现 KeyError 的 bug (1f74906)

Code Refactoring

  • message: 修改 Message 和 MessageSegment 的子类继承方式。 (d10a089)

Features

  • .: 添加钩子函数 (fa31d8e)
  • adapter, config: 添加 max_event_queue_len 配置项,修改 adapter 的 max_event_queue_len 从 Config 中获取 (d1e41c0)
  • adapter: 将 Adapter 类抽象出 BaseAdapter 类,BaseAdapter 仅实现最基础的功能,Adapter 类在此基础上实现 handle_event() 和 get() 等方法 (2661929)
  • adapter: 添加从环境变量中获取 dev_env 的值判断是否使用 pkg_resources 风格的命名空间包的功能 (d101fcf)
  • adapter: 重构事件分发的处理逻辑,修改 get() 方法,不再需要事件队列,而是使用 Condition 对象,提高性能,解决 get() 方法相关的潜在问题 (8ed2a0d)
  • apscheduler: 添加 apscheduler 定时任务适配器 (2498bf5)
  • apscheduler: 添加 scheduler_decorator() 装饰器 (09747a2)
  • dingtalk: 添加 send() 方法,修改回复消息的方式,使用 webhook 地址回复;完善注释文档和异常处理 (74030df)
  • dingtalk: 新增钉钉协议适配器 alicebot-adapter-dingtalk (785fac6)
  • message: 添加了 Message 类 startswith()、endswith() 方法对 T_MessageSegment 类型的支持 (6e65316)
  • mirai: 添加 mirai-api-http 的 Websocket Adapter 模式 (94be1b4)
  • mirai: 添加支持 mirai-api-http 的 Reverse Websocket Adapter 的 mirai 适配器 (01231dc)
  • plugin: 添加了 __post_init__() 方法用于初始化后处理 (6ffca3c)

Performance Improvements

  • adapter, event: 使用链队列代替列表作为事件队列,优化 get() 方法的性能 (fecc7b1)

BREAKING CHANGES

  • message: Message 的子类不再需要重写 _construct() 方法,而需要重写 _set_message_segment_class() 和 _str_to_message_segment() 方法。 MessageSegment 则需要重写 _set_message_class() 方法。 refactor(cqhttp.message): 适配上述修改。
  • .: 当超时时不再返回 None,而是抛出 AdapterTimeout 异常

0.1.0 (2021-07-24)

Released under the MIT License.