WebHooker/docs/zh/guide/introduction.md
wyf9 afe19795b1
docs: sync documentation with current codebase
- Update event formatter count 23 -> 28 (add ping, workflow_job, status, deployment, check_suite)
- Document Telegram support end-to-end (routes, /gh commands, richheader, secrets)
- Fix route schema to use targets array and group fields (owners, emoji)
- Correct KV/D1 storage layout (msg:*, i18n:*, D1 links/send_logs)
- Note GITHUB_APP_ID/GITHUB_PRIVATE_KEY are unused; drop legacy DISCORD_CHANNEL_ID/PORT/CONFIG_PATH
- Remove stale Docker deployment section
- Update color table, branch filter compatibility, admin API endpoints
- AGENTS.md: add Documentation section requiring doc updates after functional changes
2026-08-05 17:22:15 +08:00

3.5 KiB
Raw Blame History

简介

WebHooker 是一个基于 Cloudflare Workers 构建的 GitHub webhook 调度器。它接收 GitHub webhook 事件,应用可配置的过滤器,将事件格式化为富消息,并通过各自 REST API 投递到 Discord 频道/子区embed与 Telegram 群组/话题HTML。Discord 内的 /gh 交互通过 HTTPS Interactions EndpointEd25519 验签送达Telegram 的 /gh 命令通过 Telegram webhook 送达。路由与分组通过内置的 Web UI 管理。

架构

GitHub Webhook → Cloudflare Worker (Hono)
                 ├── POST /webhook → 验证 → 去重 → 过滤 → 格式化 → Discord (REST) / Telegram (Bot API)
                 ├── POST /discord/interactions → 验证 (Ed25519) → 处理 /gh 斜杠与右键命令
                 ├── POST /telegram/webhook → 验证 (secret token) → 处理 /gh 命令
                 ├── GET  /auth/github → OAuth 流程
                 ├── GET  /api/richheader → Telegram 头像链接预览卡片
                 ├── POST /api/* → 用户操作 (Bearer Token 鉴权)
                 ├── /admin → 路由、分组与发送日志 Web UI管理员会话
                 └── GET  /health → 健康检查

组件

组件 职责
Cloudflare Worker HTTP 入口、签名验证、投递去重、事件解析、路由匹配、平台分发
Interactions Endpoint 验证 Ed25519 签名并处理 /gh 交互斜杠命令、右键菜单、按钮、modal
KV Token 存储 (token:{userId})、OAuth 状态 (state:{hex})、路由配置 (config:routes)、分组配置 (config:groups)、管理员会话、投递去重、消息更新追踪 (msg:*)
D1 发送日志 (send_logs)、Discord↔GitHub 绑定 (discord_links)、Telegram↔GitHub 绑定 (telegram_links)

数据流

  1. GitHub 发送 webhook 到 POST /webhook
  2. Worker 验证 HMAC-SHA256 签名
  3. Worker 按 X-GitHub-Delivery 去重KV短 TTL丢弃重复投递
  4. Worker 解析事件类型和载荷
  5. 根据过滤器event、repo、actor、action、branch、keyword与分组所有者限制评估路由
  6. 匹配的路由触发格式化器函数生成平台中立消息
  7. 每条消息通过 Discord 或 Telegram REST API 发送到对应路由的目标,并处理速率限制重试;workflow_run 进度原地更新。每次尝试都记录到 D1 发送日志

技术栈

  • 运行时: Cloudflare Workers
  • HTTP 框架: Hono
  • Discord 投递: Discord REST API交互通过 Ed25519 验签的 HTTPS Interactions Endpoint
  • Telegram 投递: Telegram Bot APIwebhook 带可选 secret-token 校验)
  • Web UI: Nuxt 3 静态 SPA由 Worker 资源托管
  • 存储: Cloudflare KV + D1
  • 鉴权: Web Crypto API (HMAC-SHA256、Ed25519)、octokit (GitHub API)、jose依赖
  • 语言: TypeScript

许可证

MIT