|
@@ -0,0 +1,82 @@
|
|
|
|
|
+# CosMoe Bot
|
|
|
|
|
+
|
|
|
|
|
+甜奈摄影会 Telegram 机器人,基于 [grammy](https://grammy.dev) 框架,部署在 Cloudflare Workers 上。
|
|
|
|
|
+
|
|
|
|
|
+## 功能
|
|
|
|
|
+
|
|
|
|
|
+| 命令 | 说明 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| `/start` | 显示欢迎信息和可用命令 |
|
|
|
|
|
+| `/login` | 交互式登录 CosMoe 账户 |
|
|
|
|
|
+| `/logout` | 登出并清除账户凭证 |
|
|
|
|
|
+| `/events` | 查看最新活动列表 |
|
|
|
|
|
+| `/event_{id}` | 查看活动详情和可预约时段 |
|
|
|
|
|
+| `/book_{eventId}_{slotIndex}` | 预约活动时段 |
|
|
|
|
|
+| `/history` | 查看进行中的预约记录 |
|
|
|
|
|
+| `/history all` | 查看全部预约记录 |
|
|
|
|
|
+| `/cancel_{bookingId}` | 取消预约 |
|
|
|
|
|
+
|
|
|
|
|
+机器人每分钟自动检查新活动,并通过 Telegram 推送通知给已登录用户。
|
|
|
|
|
+
|
|
|
|
|
+## 技术栈
|
|
|
|
|
+
|
|
|
|
|
+- **运行时**: Cloudflare Workers
|
|
|
|
|
+- **框架**: grammy (Telegram Bot)
|
|
|
|
|
+- **存储**: Cloudflare KV(用户凭证、会话状态、调度数据)
|
|
|
|
|
+- **语言**: TypeScript (ES2024)
|
|
|
|
|
+- **测试**: Vitest + @cloudflare/vitest-pool-workers
|
|
|
|
|
+
|
|
|
|
|
+## 开发
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 安装依赖
|
|
|
|
|
+npm install
|
|
|
|
|
+
|
|
|
|
|
+# 本地开发
|
|
|
|
|
+npm run dev
|
|
|
|
|
+
|
|
|
|
|
+# 部署
|
|
|
|
|
+npm run deploy
|
|
|
|
|
+
|
|
|
|
|
+# 运行测试
|
|
|
|
|
+npm test
|
|
|
|
|
+
|
|
|
|
|
+# 重新生成 Worker 类型
|
|
|
|
|
+npm run cf-typegen
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 环境变量
|
|
|
|
|
+
|
|
|
|
|
+在 `.dev.vars` 中配置本地开发所需的密钥:
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+BOT_TOKEN=your_telegram_bot_token
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+生产环境的密钥通过 Cloudflare Dashboard 设置。
|
|
|
|
|
+
|
|
|
|
|
+## 项目结构
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+src/
|
|
|
|
|
+├── index.ts # Worker 入口(fetch + scheduled handler)
|
|
|
|
|
+├── client/
|
|
|
|
|
+│ └── cosmoe.ts # CosMoe API 客户端
|
|
|
|
|
+├── command/
|
|
|
|
|
+│ ├── index.ts # 命令路由和注册
|
|
|
|
|
+│ └── handlers/ # 各命令处理器
|
|
|
|
|
+│ ├── start.ts
|
|
|
|
|
+│ ├── login.ts
|
|
|
|
|
+│ ├── logout.ts
|
|
|
|
|
+│ ├── events.ts
|
|
|
|
|
+│ ├── eventDetails.ts
|
|
|
|
|
+│ ├── bookEvent.ts
|
|
|
|
|
+│ ├── cancel.ts
|
|
|
|
|
+│ └── history.ts
|
|
|
|
|
+└── scheduler/
|
|
|
|
|
+ └── index.ts # 定时任务:新活动通知
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## License
|
|
|
|
|
+
|
|
|
|
|
+Private
|