npm i
npm run dev第一次使用 Wrangler 部署 Cloudflare Workers 前,需要先登录 Cloudflare 账号,否则
wrangler deploy会报权限/账号相关错误。
在项目根目录执行:
npx wrangler login登录后会弹出浏览器窗口进行 Cloudflare 授权,成功后回到终端即可。
npx wrangler deploy部署成功后会输出 Worker 访问地址(URL),用浏览器打开即可使用。
- 目前授权wxid白名单在
src/config.js的ALLOWED_USERS(写死在代码里)。 - 你要增删授权用户:需要改代码并重新部署。
说明:前端会缓存微信号到 localStorage(方便下次自动进入),但每次都会请求后端校验:
- 进入门禁:
/api/auth_license- 创建房间:
/api/create(后端二次校验)所以:即使用户本地缓存了微信号,只要你后端把他移出白名单并重新部署,他也无法继续创建/使用。
TG_BOT_TOKEN:Bot Token(建议用 Cloudflare Secret 保存)TG_CHAT_ID:接收消息的 chatId(vars)TG_ENABLED:是否启用 TG 推送(vars,true/false)TG_DEBUG_START:是否推送 start 接口完整返回(vars,调试用,默认 false)
设置 Bot Token(只需一次):
npx wrangler secret put TG_BOT_TOKENname = "forestpilot"
main = "src/index.js"
compatibility_date = "2025-12-12"
[vars]
TG_ENABLED = "true"
TG_CHAT_ID = "5565918727"
TG_DEBUG_START = "false"
[[durable_objects.bindings]]
name = "ROOMS"
class_name = "RoomsDO"
[[migrations]]
tag = "v1"
new_sqlite_classes = ["RoomsDO"]- 打开网页
- 输入授权微信号(通过才进入)
- 选择 Forest 账号并登录
- 选择树种 / 专注时长 / 目标人数
- 点击创建房间后:可以关闭网页,去 App 等待(后台会自动监听并发车)
- DO 每 5 秒获取一次房间详情(检查人数变化)
- 当
participants >= target_count:调用/start(POST,不行则 PUT) - 为避免“HTTP 200 但实际未开始”的误判:会做二次确认(再 GET 检查房间状态)
- 2 分钟内一直 0 人加入:停止监听并清理任务(
storage.delete("task"))
- 发车确认成功:会
delete("task") - 2 分钟无人加入:会
delete("task") - 前端点“停止”:会调用
/api/do_stop,DO 也会delete("task")
默认关闭:
TG_DEBUG_START = "false"
需要排查时开启:
TG_DEBUG_START = "true"
开启后会推送:
- 调用 start 的 method(POST/PUT)
- endpoint
- HTTP status
- response body(自动截断)
- 当时人数/目标人数/重试次数
- 可能是 start 接口“受理成功”但开始状态有延迟。
- ForestPilot 已做“开始状态二次确认”,并支持开启
TG_DEBUG_START查看 start 返回与确认过程。
会。监听运行在 Durable Object 的 alarm 里,不依赖前端页面。
可以使用(但有用量/限制)。超量会受限,建议关注 Cloudflare 控制台用量。