一个功能丰富的 Koishi 聊天机器人插件,集成了 Mix-Space、Bilibili、GitHub 等多种服务,为你的聊天机器人提供强大的功能扩展。
- Webhook 事件推送: 支持博客文章、说说、评论等事件的实时推送
- 定时问候: 自动早安/晚安问候,支持 cron 表达式自定义时间
- 新成员欢迎: 自动欢迎新加入群组的成员
- 评论回复: 支持博客评论的互动回复功能
- 博客数据查询: 获取博客统计信息和最新动态
- 多房间监控: 支持同时监控多个直播间的开播状态
- 智能推送: 开播时自动推送通知到指定频道
- 状态查询:
bili.status命令查看当前所有监控房间的直播状态 - 广播模式: 支持向所有联系人广播开播通知
- Webhook 支持: 监听 GitHub 仓库的各种事件
- 多事件类型: 支持 Push、Issue、Pull Request、工作流等事件
- 状态查询:
github.status命令查看仓库状态 - 安全验证: 支持 webhook 签名验证
- 哈希计算:
tools.md5、tools.sha256- 计算文本哈希值 - IP 查询:
tools.ip <ip>- 查询 IP 地址的详细信息 - 时间戳转换:
tools.timestamp [timestamp]- 时间戳与可读时间互转 - Base64 编解码:
tools.base64 <encode|decode> <text>- 文本编解码 - 随机生成:
tools.random [min] [max]- 生成指定范围的随机数 - UUID 生成:
tools.uuid- 生成标准 UUID - 颜色生成:
tools.color- 生成随机颜色及其各种格式 - 一言:
tools.hitokoto或一言- 获取随机一言 - 短链接:
tools.shorturl <url>- 生成短链接 - 二维码:
tools.qrcode <text>- 生成二维码图片
- 智能触发: 自动检测连续重复的消息并按概率复读
- 复读打断: 连续复读到一定次数后自动打断
- 可配置参数: 支持自定义触发阈值、复读概率、打断阈值
- 全局广播: 支持向所有联系人发送消息
- 精准控制: 支持排除特定频道的广播功能
- 详细统计: 提供发送统计和详细日志记录
npm install koishi-plugin-imx或者
yarn add koishi-plugin-imx也可以使用 pnpm:
pnpm add koishi-plugin-imx在 Koishi 配置文件中添加插件配置:
plugins:
imx:
# MX Space 配置
mxSpace:
baseUrl: "https://your-mx-space-api.com"
token: "your-mx-space-token"
webhook:
secret: "your-webhook-secret"
path: "/mx-space/webhook"
watchChannels: ["channel-id-1"]
broadcastToAll: false
excludeChannels: []
greeting:
enabled: true
channels: ["channel-id-1", "channel-id-2"]
morningTime: "0 0 6 * * *" # 每天早上6点
eveningTime: "0 0 22 * * *" # 每天晚上10点
broadcastToAll: false
excludeChannels: []
commands:
enabled: true
replyPrefix: "来自 Mix Space 的"
welcomeNewMember:
enabled: true
channels: ["group-channel-id"]
commentReply:
enabled: true
channels: ["channel-id-1"]
# Bilibili 配置
bilibili:
enabled: true
roomIds: [123456, 789012] # 监控的直播间ID列表
watchChannels: ["channel-id"]
checkInterval: 5 # 检查间隔(分钟)
broadcastToAll: false
excludeChannels: []
# GitHub 配置
github:
enabled: true
webhook:
secret: "your-github-webhook-secret"
path: "/github/webhook"
watchChannels: ["channel-id"]
broadcastToAll: false
excludeChannels: []
# 共享功能配置
shared:
errorNotify:
enabled: true
channels: ["admin-channel-id"]
repeater:
enabled: true
threshold: 3 # 触发复读的次数
chance: 0.5 # 复读概率
breakThreshold: 12 # 打断阈值
tools:
enabled: truebaseUrl: MX Space API 地址(必填)token: API 访问令牌- Webhook 配置:
secret: Webhook 验证密钥path: Webhook 接收路径watchChannels: 接收推送的频道ID列表broadcastToAll: 是否广播到所有联系人excludeChannels: 广播时排除的频道列表
- 问候功能:
enabled: 是否启用自动问候channels: 发送问候消息的频道morningTime/eveningTime: 问候时间(cron 格式)
- 其他功能: 新成员欢迎、评论回复等
enabled: 是否启用 Bilibili 监控roomIds: 要监控的直播间ID列表(支持多个)watchChannels: 推送通知的频道ID列表checkInterval: 检查间隔(分钟,1-60)broadcastToAll: 开播时是否广播到所有联系人excludeChannels: 广播时排除的频道列表
enabled: 是否启用 GitHub Webhook- Webhook 配置:
secret: GitHub Webhook 密钥path: Webhook 接收路径watchChannels: 推送通知的频道ID列表broadcastToAll: 是否广播到所有联系人excludeChannels: 广播时排除的频道列表
- 错误通知: 系统错误的通知设置
- 复读机: 智能复读功能的参数调整
- 工具命令: 实用工具命令的开关
# 基础工具
tools.md5 hello world # 计算 MD5 哈希
tools.sha256 hello world # 计算 SHA256 哈希
tools.ip 8.8.8.8 # 查询 IP 信息
tools.timestamp # 获取当前时间戳
tools.timestamp 1640995200 # 转换时间戳
# 编码工具
tools.base64 encode hello # Base64 编码
tools.base64 decode aGVsbG8= # Base64 解码
# 生成工具
tools.random # 生成随机数 (1-100)
tools.random 1 10 # 生成 1-10 的随机数
tools.uuid # 生成 UUID
tools.color # 生成随机颜色
# 网络工具
tools.hitokoto # 获取一言
一言 # 获取一言(别名)
tools.shorturl https://... # 生成短链接
tools.qrcode hello world # 生成二维码bili.status # 查看直播状态
github.status # 查看仓库状态# IP 查询
tools.ip 8.8.8.8
# 编码解码
tools.base64 encode Hello World
tools.base64 decode SGVsbG8gV29ybGQ=
# 哈希计算
tools.md5 Hello World
tools.sha256 Hello World
# 时间工具
tools.timestamp
tools.timestamp 1640995200
# 随机生成
tools.random 1 100
tools.uuid
tools.color当 MX Space 博客有新内容时,插件会自动推送通知:
- 📝 新博客文章发布
- 💭 新说说发布
- 💬 博客评论更新
- 📊 博客数据统计
支持监控多个直播间,当主播开播时自动推送:
🔴 直播开始了!
🎯 房间号:123456
👤 主播:某某主播
🎬 标题:今天直播XXX内容
🔗 链接:https://live.bilibili.com/123456
# 克隆仓库
git clone https://github.com/sysfox/koishi-plugin-imx.git
cd koishi-plugin-imx
# 安装依赖
pnpm install
# 开发模式(自动编译)
pnpm run dev
# 构建
pnpm run buildsrc/
├── index.ts # 主入口文件
├── constants/ # 常量定义
├── modules/ # 功能模块
│ ├── mx-space.ts # MX Space 集成
│ ├── bilibili.ts # Bilibili 监控
│ └── github.ts # GitHub 集成
├── shared/ # 共享功能
│ ├── repeater.ts # 复读机
│ └── commands/ # 命令模块
├── types/ # 类型定义
├── utils/ # 工具函数
└── debug/ # 调试工具
如果你需要使用 MX Space 或 GitHub 的 Webhook 功能,需要:
- 确保你的 Koishi 实例可以从外网访问
- 配置正确的 Webhook 路径和密钥
- 在对应服务中设置 Webhook URL
MX Space Webhook URL: https://your-domain.com/mx-space/webhook
GitHub Webhook URL: https://your-domain.com/github/webhook
- Node.js 16+
- Koishi 4.15.0+
- 稳定的网络连接(用于 API 请求)
A: 请检查:
- 直播间ID是否正确
- 网络连接是否正常
- 检查间隔设置是否合理(建议 1-10 分钟)
A: 请确认:
- MX Space 中的 Webhook URL 配置正确
- Webhook 密钥匹配
- Koishi 服务可以从外网访问
A: 在配置中使用 cron 表达式:
morningTime: "0 0 8 * * *" # 每天早上8点
eveningTime: "0 30 21 * * *" # 每天晚上9点30分查看 CHANGELOG.md 了解详细的版本更新记录。
欢迎提交 Issue 和 Pull Request!
在提交代码前,请确保:
- 代码符合项目的编码规范
- 添加了必要的测试
- 更新了相关文档
- 提交信息清晰明确
感谢所有贡献者的支持!