# 项目介绍
## 基本信息
| 属性 | 值 |
| --- | --- |
| 产品名称 | UBot |
| 是否开源 | 是 |
| 许可类型 | 以BSD 3-clause为主,不同组件有不同要求 |
| Github仓库 | [https://github.com/UBotPlatform](https://github.com/UBotPlatform) |
| Telegram群组 | [https://t.me/ubotplatform](https://t.me/ubotplatform) |
## 项目架构
### 结构图
![](https://img.kancloud.cn/fa/8f/fa8fdf7c8740f73c88816820f88c8a78.svg)
### 解说
Router工作在Server模式,接受App和Account(统称)的RPC连接
当Account收到事件时,首先发送给Router,Router负责将事件根据需要调度给所有应用或部分应用
当App需要执行操作或获取信息时,首先把请求发送给Router,Router负责将请求发送给对应的Account并转达回复
App和Account不可直连(由Token保证)
Router可以根据App申请的权限拒绝App的某些请求(权限系统未完成)
## 工作模式
### 本地模式(常规模式)
此时Router运行在本机,监听localhost
App和Account连接本机的localhost
所有服务在一台机器上提供
### 远程帐号模式
服务提供商将Router和App架在服务器上
用户在本地运行Account,连接服务提供商的服务器
此时:服务提供商提供完整的机器人后端服务,用户负责构建前端
>[info] 服务商需要自行实现用户鉴权,之后调用Router的RegisterAccount获取Token,将Token转发给用户端
### 远程应用模式
服务提供商将App架在服务器上
用户在本地运行Account和Router,连接服务提供商的服务器
该模式使用反向连接功能,即对于App而言,Router是传输层的客户端,App则是传输层的服务端
>[warning] 反向连接功能暂未开发