puniyu_command
puniyu_command 是 Puniyu 机器人框架的命令处理核心模块,负责解析、匹配和执行用户命令。
功能特性
🎯 命令处理
- 智能命令匹配: 支持命令名称和别名匹配
- 参数解析: 基于 clap 的强大参数解析系统
- 权限控制: 支持主人权限验证
- 多种参数类型: 字符串、整数、浮点数、布尔值
🛡️ 安全与控制
- 冷却系统: 防止命令滥用的多级冷却机制
- 全局冷却
- 机器人级冷却
- 好友/群组/群成员级冷却
- 权限验证: 黑白名单系统控制访问权限
- 响应模式: 多种机器人响应模式
- 全部消息响应
- 仅@机器人时响应
- 仅使用别名时响应
- @机器人或别名时响应
- 仅主人可用
📝 消息处理
- 消息日志: 详细的消息接收和处理日志
- 别名处理: 智能识别和处理机器人别名
- @检测: 检测消息中是否@了机器人
核心组件
CommandHandler
主要的命令处理器,实现了 Handler trait:
use CommandHandler;
let handler = default;
参数解析
基于 clap 的参数解析系统,支持:
- 位置参数和命名参数
- 类型验证和转换
- 默认值设置
- 中文错误提示
命令匹配
智能命令匹配系统:
- 前缀识别
- 别名处理
- 参数提取
冷却系统
多层级冷却控制:
// 检查是否在冷却期
if is_cooling_down
// 设置冷却
set_cooldown;
目录结构
src/
├── lib.rs # 模块导出
├── handler.rs # 主命令处理器
├── handler/
│ ├── arg.rs # 参数解析
│ └── matcher.rs # 命令匹配
├── config.rs # 配置管理
├── cooldown.rs # 冷却系统
├── cooldown/
│ ├── bot.rs # 机器人级冷却
│ ├── friend.rs # 好友级冷却
│ └── group.rs # 群组级冷却
├── message.rs # 消息处理
├── tools.rs # 工具函数
└── error.rs # 错误定义
使用示例
基本使用
use CommandHandler;
use Handler;
async
命令执行流程
- 消息接收: 接收到消息事件
- 权限检查: 验证发送者权限(黑白名单)
- 冷却检查: 检查是否在冷却期内
- 模式验证: 根据配置的响应模式验证
- 命令匹配: 匹配命令名称或别名
- 参数解析: 解析命令参数
- 权限验证: 验证命令执行权限
- 命令执行: 执行注册的命令处理函数
配置支持
支持通过配置文件自定义:
- 机器人别名
- 响应模式
- 命令前缀
- 黑白名单
- 冷却时间
许可证
本项目采用 LGPL 许可证。