puniyu_handler 0.4.1

puniyu 的事件处理器模块
Documentation
# puniyu_handler

事件处理器模块

## 概述

`puniyu_handler` 是 puniyu 项目中负责事件处理的核心库。它提供了统一的事件处理器接口、消息事件处理实现以及处理器注册和管理机制。

## 核心组件

### Handler Trait

事件处理器基础 trait,所有事件处理器都需要实现此 trait:

- `handle()`: 异步处理事件的方法
- `name()`: 返回处理器名称
- `rank()`: 返回处理器优先级(默认值为 5,数值越小优先级越高)

### MessageHandler 结构体

消息事件处理器实现:

- 处理好友消息和群组消息事件
- 解析消息中的命令和参数
- 调用相应的命令处理器执行命令

## 命令处理机制

### 命令解析

使用 `parse_command!` 宏解析消息文本:

- 第一个单词作为命令名称
- `--flag value` 格式作为参数
- 支持无值参数

### 命令执行流程

1. 从消息中提取文本内容
2. 解析命令名称和参数
3.`CommandRegistry` 获取命令定义
4. 构建 `Bot``EventContext` 实例
5. 查找注册的命令处理器
6. 按优先级顺序执行命令处理器
7. 根据 `HandlerResult` 决定是否继续执行其他处理器

## 处理器管理

### HandlerRegistry 结构体

处理器注册表,提供处理器的注册和管理功能:

- `register()`: 注册处理器
- `unregister()`: 卸载处理器
- `get_all()`: 获取所有处理器
- `get_with_name()`: 根据名称获取处理器

### HandlerStore 结构体

底层存储实现:

- 使用 `RwLock<Vec<Arc<dyn Handler>>>` 存储处理器
- 插入时自动按优先级排序
- 支持按名称查找和删除处理器

## 特性

- **异步处理**: 所有处理器方法都是异步的
- **优先级排序**: 处理器按优先级自动排序
- **线程安全**: 使用 `Arc``RwLock` 确保线程安全
- **命令集成**: 与 `puniyu_command` 紧密集成
- **参数解析**: 自动解析命令参数并传递给命令处理器

## 许可证

本项目采用 [LGPL](../../LICENSE) 许可证。