1.0.7 • Published 5 months ago

koishi-plugin-message-gateway v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

🚀 koishi-plugin-message-gateway

一个功能强大的消息网关插件,用于转发和处理 Koishi 机器人的消息。

📝 功能介绍

  • 🔄 支持多种消息匹配规则(前缀匹配和正则匹配)
  • 🛡️ 内置限流和黑白名单机制
  • 🔧 高度可配置的数据字段选项
  • 🔁 支持请求重试和错误处理
  • 💬 支持自定义响应模板
  • 🔍 调试模式支持

🎯 使用方法

  1. 配置 API 地址与 token
  2. 设置消息前缀和正则匹配规则
  3. 自定义需要发送到 API 的数据字段
  4. 根据需要配置限流、黑白名单等高级功能

注意: 在群聊中需要 @机器人 才会处理消息。

⚙️ 配置说明

基础配置

{
  "apis": {
    "apiName": {
      "url": "http://your-api-endpoint", // API 地址(必填)
      "token": "your-token",            // API 认证 token
      "customHeaders": {},              // 自定义请求头
      "timeout": 5000,                  // 请求超时时间(毫秒)
      "triggers": [                     // 触发规则
        {
          "prefix": "指令前缀1",         // 消息前缀匹配
          "regex": "正则表达式1"         // 正则匹配模式
        }
      ]
    }
  },
  "defaultApiKey": "apiName"           // 默认API键
}

🔧 数据字段配置

可以自定义发送到 API 的数据字段:

{
  "sendFields": {
    "userId": true,        // 用户 ID
    "username": true,      // 用户名
    "nickname": true,      // 用户昵称
    "messageId": true,     // 消息 ID
    "timestamp": true,     // 时间戳
    "platform": true,      // 平台信息
    "channelId": true,     // 频道 ID
    "channelName": false,  // 频道名称
    "guildId": false,      // 服务器 ID
    "guildName": false     // 服务器名称
  }
}

⚡ 性能配置

{
  "timeout": 5000,         // API 请求超时时间(毫秒)
  "regexTimeout": 1000,    // 正则匹配超时时间(毫秒)
  "rateLimit": {
    "interval": 60000,     // 限流时间窗口(毫秒)
    "maxRequests": 30      // 时间窗口内最大请求数
  }
}

🔄 重试配置

{
  "retry": {
    "maxAttempts": 3,      // 最大重试次数
    "initialDelay": 1000,  // 初始延迟(毫秒)
    "maxDelay": 5000,      // 最大延迟(毫秒)
    "factor": 2            // 退避因子
  }
}

📝 响应模板配置

支持自定义各种场景的响应消息:

{
  "templates": {
    "rateLimit": {
      "globalLimit": "系统繁忙,请{time}秒后重试",
      "userLimit": "您的操作太快啦,请{time}秒后重试",
      "channelLimit": "当前频道消息太多,请{time}秒后重试"
    },
    "error": {
      "network": "网络连接失败,请检查网络设置",
      "timeout": "响应超时,请稍后重试",
      "service": "服务暂时不可用,请稍后重试",
      "unknown": "处理失败,请稍后重试"
    }
  }
}

🛡️ 黑名单配置

{
  "blacklist": {
    "users": ["user1", "user2"],        // 用户黑名单
    "channels": ["channel1", "channel2"] // 频道黑名单
  }
}

🛡️ 安全特性

  • ✅ 内置限流机制防止滥用
  • ✅ 黑白名单支持
  • ✅ 超时保护
  • ✅ 错误重试机制

🔍 调试功能

启用调试模式可以查看详细的处理日志:

{
  "debug": true
}

📈 性能优化

  • ⚡ 正则匹配超时保护
  • 🔄 消息队列处理机制
  • ⏱️ 可配置的超时和重试策略

🔄 工作流程

  1. 🔍 接收到消息后,进行以下检查:

    • 检查用户是否在黑名单中
    • 检查频道是否在黑名单中
    • 检查是否超过限流阈值
    • 检查是否为私聊或被@
  2. 🧐 消息匹配:

    • 根据前缀规则匹配
    • 根据正则规则匹配
    • 如果没有匹配,使用默认API
  3. 📤 消息发送:

    • 构建请求数据(根据字段配置)
    • 发送到目标API
    • 处理重试逻辑
    • 返回API响应

🚀 使用示例

配置多个API,根据不同前缀路由到不同服务:

{
  "apis": {
    "chatGPT": {
      "url": "https://api.chatgpt.com",
      "triggers": [{ "prefix": "ai", "regex": "^gpt.*" }]
    },
    "weatherAPI": {
      "url": "https://api.weather.com",
      "triggers": [{ "prefix": "天气", "regex": "^查询.*天气" }]
    },
    "translationAPI": {
      "url": "https://api.translation.com",
      "triggers": [{ "prefix": "翻译", "regex": "^translate.*" }]
    }
  },
  "defaultApiKey": "chatGPT"
}

🤝 贡献指南

欢迎提交 Issue 和 Pull Request 来完善此插件!

📄 许可证

MIT License

1.0.7

5 months ago

1.0.6

5 months ago

1.0.5

5 months ago

1.0.4

5 months ago

1.0.3

5 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago