Skip to content

OneBot CommanderOneBot12 消息段命令解析器

强大的 TypeScript 消息段匹配库,支持 ESM/CJS 双格式

快速体验

typescript
import { Commander } from 'onebot-commander';

// 创建命令解析器
const commander = new Commander('hello <name:text>');

// 添加处理逻辑
commander
  .action((params) => {
    console.log(`Hello, ${params.name}!`);
    return params.name.toUpperCase();
  })
  .action((upperName) => {
    console.log(`Uppercase: ${upperName}`);
  });

// 匹配消息段
const segments = [
  { type: 'text', data: { text: 'hello Alice' } }
];

const result = commander.match(segments);
// 输出: Hello, Alice!
// 输出: Uppercase: ALICE

核心特性

🎯 强大的模式匹配

支持复杂的消息段模式匹配:

typescript
// 基础文本匹配
"hello <name:text>"

// 可选参数
"ping [message:text]"

// 复杂模式
"test<arg1:text>[arg2:face]"

// 类型化字面量
"{text:test}<arg1:text>[arg2:face]"

// 剩余参数
"test[...rest:face]"

⚡ 异步处理支持

typescript
const asyncCommander = new Commander('echo <message:text>');

asyncCommander
  .action(async (params) => {
    // 模拟异步操作
    await new Promise(resolve => setTimeout(resolve, 100));
    return params.message.toUpperCase();
  })
  .action(async (upperMessage) => {
    // 继续异步处理
    await new Promise(resolve => setTimeout(resolve, 100));
    return upperMessage.length;
  });

const result = await asyncCommander.matchAsync(segments);

🔧 自定义字段映射

typescript
const customCommander = new Commander('{image:avatar.png}<name:text>', {
  image: 'src'  // 匹配 data.src 而不是默认的 data.file/url
});

性能表现

  • 模式解析: 1.4M-2.9M ops/sec
  • 消息匹配: 248K-751K ops/sec
  • 动作链: 237K-508K ops/sec

开始使用

bash
npm install onebot-commander

相关链接


💡 提示

OneBot Commander 专为 OneBot12 消息段设计,提供类型安全、高性能的消息解析能力。

Released under the MIT License.