本文引用的文件
本文件聚焦于基础命令的实现与使用,包括 /start、/login、/logout 的功能特性、参数处理、响应格式与错误处理机制,并解释命令注册方式与最佳实践。同时提供调用示例、常见使用场景以及扩展与自定义指导建议,帮助开发者快速理解与维护该机器人。
客户端封装
对外服务(Cosmoe)接口通过客户端类统一封装,便于认证与数据交互。
graph TB
A["入口<br/>src/index.ts"] --> B["命令注册<br/>src/command/index.ts"]
B --> C["开始命令处理器<br/>src/command/handlers/start.ts"]
B --> D["登录命令处理器<br/>src/command/handlers/login.ts"]
B --> E["登出命令处理器<br/>src/command/handlers/logout.ts"]
D --> F["Cosmoe 客户端<br/>src/client/cosmoe.ts"]
E --> F
图表来源
章节来源
章节来源
下图展示从请求进入至命令处理与外部服务交互的整体流程。
sequenceDiagram
participant U as "用户"
participant W as "Webhook 入口<br/>src/index.ts"
participant R as "命令注册器<br/>src/command/index.ts"
participant H as "处理器<br/>start/login/logout"
participant C as "Cosmoe 客户端<br/>src/client/cosmoe.ts"
participant K as "KV 存储<br/>COSMOE_CREDENTIALS/COSMOE_STORAGE"
U->>W : 发送命令或消息
W->>R : 初始化并注册命令
R->>R : 安装对话插件/创建对话
U->>R : 触发 /start 或 /login 或 /logout
alt /start
R->>H : 调用 handleStartCommand
H-->>U : 返回欢迎与命令列表
else /login
R->>H : 进入登录对话
H->>C : 调用 getToken 获取令牌
C-->>H : 返回认证结果
H->>K : 写入用户凭证
H-->>U : 返回登录结果
else /logout
R->>H : 调用 handleLogoutCommand
H->>K : 删除用户凭证
H-->>U : 返回登出结果
end
图表来源
使用场景
新用户首次进入、需要查看可用命令时。
flowchart TD
S["收到 /start"] --> P["读取上下文"]
P --> R["构造欢迎与命令列表文本"]
R --> E["发送回复"]
E --> X["结束"]
图表来源
章节来源
使用场景
需要访问受保护资源(如历史记录)前的认证步骤。
sequenceDiagram
participant U as "用户"
participant R as "命令注册器"
participant L as "登录对话处理器"
participant C as "Cosmoe 客户端"
participant K as "KV 存储"
U->>R : 触发 /login
R->>L : 进入对话
L->>U : 提示输入用户名
U-->>L : 回复用户名
L->>U : 提示输入密码
U-->>L : 回复密码
L->>C : 调用 getToken
C-->>L : 返回认证结果
alt 成功
L->>K : 写入凭证
L-->>U : 登录成功
else 失败
L-->>U : 登录失败
end
图表来源
章节来源
使用场景
用户主动登出或切换账号。
flowchart TD
S["收到 /logout"] --> G["获取用户ID"]
G --> V{"存在凭证?"}
V --> |否| N["提示先登录"] --> X["结束"]
V --> |是| D["删除凭证"]
D --> OK["发送登出成功消息"] --> X
图表来源
章节来源
项目内部依赖
命令注册器依赖各处理器;处理器依赖 Cosmoe 客户端;KV 作为凭证存储。
graph LR
P["package.json"] --> G["grammy"]
P --> C["@grammyjs/conversations"]
P --> S["@grammyjs/storage-cloudflare"]
IDX["src/command/index.ts"] --> HSTART["handlers/start.ts"]
IDX --> HLOGIN["handlers/login.ts"]
IDX --> HLOGOUT["handlers/logout.ts"]
HLOGIN --> CC["client/cosmoe.ts"]
HLOGOUT --> CC
图表来源
章节来源
章节来源
章节来源
基础命令围绕“欢迎引导—认证—清理”的核心路径构建,采用清晰的职责分离与健壮的错误处理策略。通过对话与 KV 的结合,实现了良好的用户体验与可维护性。后续扩展可在现有注册器与客户端封装基础上,按需新增命令与对话。
章节来源