本文档引用的文件
本项目是一个基于 grammY 框架构建的 Telegram 机器人,专门用于摄影活动的预约管理。系统实现了完整的命令路由机制,支持多种路由模式包括标准命令路由、文本匹配路由和回调查询路由。
该机器人提供了完整的摄影活动管理功能,包括活动浏览、预约管理、用户认证、历史记录查看等核心业务功能。通过精心设计的路由机制,系统能够高效地处理各种用户交互场景。
项目采用模块化架构设计,主要分为以下几个核心层次:
graph TB
subgraph "应用入口层"
A[src/index.ts]
end
subgraph "命令路由层"
B[src/command/index.ts]
end
subgraph "处理器层"
C[src/command/handlers/]
C1[start.ts]
C2[login.ts]
C3[events.ts]
C4[eventDetails.ts]
C5[bookEvent.ts]
C6[cancel.ts]
C7[history.ts]
C8[logout.ts]
end
subgraph "客户端层"
D[src/client/cosmoe.ts]
end
subgraph "配置层"
E[package.json]
end
A --> B
B --> C
C --> D
A --> E
图表来源
章节来源
系统基于 grammY 框架构建,集成了以下核心功能:
系统实现了三种主要的路由模式:
/command 格式的命令章节来源
系统采用分层架构设计,各层职责明确,耦合度低:
graph TB
subgraph "Telegram 层"
T1[用户消息]
T2[回调查询]
end
subgraph "路由层"
R1[command() 路由]
R2[hears() 路由]
R3[callbackQuery() 路由]
end
subgraph "处理器层"
H1[事件详情处理器]
H2[预约处理器]
H3[取消处理器]
H4[历史记录处理器]
H5[登录处理器]
end
subgraph "业务逻辑层"
B1[Cosmoe API 客户端]
B2[数据验证]
B3[错误处理]
end
subgraph "存储层"
S1[KV 存储]
S2[会话存储]
end
T1 --> R1
T1 --> R2
T2 --> R3
R1 --> H1
R1 --> H2
R1 --> H3
R1 --> H4
R1 --> H5
R2 --> H1
R2 --> H2
R3 --> H3
R3 --> H2
H1 --> B1
H2 --> B1
H3 --> B1
H4 --> B1
H5 --> B1
B1 --> S1
H1 --> S2
H2 --> S2
H3 --> S2
H4 --> S2
H5 --> S2
图表来源
系统支持多种标准命令,每种命令都有对应的处理器:
sequenceDiagram
participant U as 用户
participant B as Bot
participant H as 处理器
participant C as CosmoeClient
U->>B : /start
B->>H : handleStartCommand
H-->>U : 欢迎消息
U->>B : /login
B->>H : handleInteractiveLogin
H->>C : 获取用户凭据
C-->>H : 返回结果
H-->>U : 登录结果
图表来源
系统使用正则表达式实现智能路由匹配:
flowchart TD
A[/event_123] --> B{正则匹配}
B --> |成功| C[提取活动ID]
B --> |失败| D[忽略消息]
C --> E[调用事件详情处理器]
E --> F[获取活动详情]
F --> G[格式化响应]
G --> H[发送消息]
图表来源
flowchart TD
A[/book_123_456] --> B{正则匹配}
B --> |成功| C[提取活动ID和时段索引]
B --> |失败| D[忽略消息]
C --> E[验证用户登录状态]
E --> F[获取活动详情]
F --> G[检查时段有效性]
G --> H[处理优惠券选择]
H --> I[执行预约操作]
图表来源
flowchart TD
A[/cancel_789] --> B{正则匹配}
B --> |成功| C[提取预约ID]
B --> |失败| D[忽略消息]
C --> E[验证用户登录状态]
E --> F[获取用户预约列表]
F --> G[查找指定预约]
G --> H[生成确认键盘]
H --> I[发送确认消息]
图表来源
系统使用回调查询处理内联键盘交互:
sequenceDiagram
participant U as 用户
participant B as Bot
participant K as 内联键盘
participant H as 回调处理器
participant C as CosmoeClient
U->>B : 点击确认取消按钮
B->>K : 触发回调查询
K->>H : handleCancelConfirmation
H->>C : 执行取消操作
C-->>H : 返回取消结果
H-->>U : 显示操作结果
图表来源
系统采用正则表达式实现精确的参数提取:
/event_123 → 提取 123/book_123_456 → 提取 123 和 456/cancel_789 → 提取 789章节来源
系统实现了多层次的错误处理机制:
章节来源
系统依赖以下关键库:
graph LR
subgraph "核心框架"
A[grammy v1.39.3]
B[@grammyjs/conversations v2.1.1]
C[@grammyjs/storage-cloudflare v2.4.2]
end
subgraph "项目模块"
D[命令路由模块]
E[处理器模块]
F[客户端模块]
G[存储模块]
end
A --> D
B --> D
C --> G
D --> E
E --> F
F --> G
图表来源
graph TB
subgraph "入口模块"
A[src/index.ts]
end
subgraph "命令模块"
B[src/command/index.ts]
end
subgraph "处理器模块"
C[src/command/handlers/]
C1[事件详情]
C2[预约处理]
C3[取消处理]
C4[历史记录]
C5[登录处理]
end
subgraph "客户端模块"
D[src/client/cosmoe.ts]
end
A --> B
B --> C
C --> D
C --> B
图表来源
章节来源
章节来源
本项目展示了如何在 grammY 框架下构建一个功能完整、架构清晰的 Telegram 机器人。通过精心设计的命令路由机制,系统能够高效地处理各种用户交互场景。
该系统为类似的聊天机器人项目提供了良好的参考模板,展示了现代 WebAssembly 技术在聊天机器人开发中的应用潜力。