# 使用
## 本地模式
流程:
1. **启动Router**
Router负责沟通Account和App,进行事件调度等动作
2. **启动Account程序,连接Router**
Account负责和相应的机器人平台(如Telegram Bot API)联络,将平台事件以UBot通用格式传送给Router,并根据Router的要求对机器人平台发出指令
3. **启动App程序,连接Router**
App负责根据Router的调配处理事件,并将结果发送给Router,由Router负责与Account的通讯,向机器人平台发出指令
### 示例
#### Discord机器人 + Echo.Go应用
```bash
./UBot.Router -addr localhost:5000
./UBot.Account.Discord applyto ws://localhost:5000/api/manager {机器人Token}
./Ubot.App.Echo.Go applyto ws://localhost:5000/api/manager
```
#### Mirai框架 + Echo.Go应用
```bash
./UBot.Router -addr localhost:5000
./Ubot.Account.Mirai applyto ws://localhost:5000/api/manager {机器人帐号ID} {机器人帐号密码}
./Ubot.App.Echo.Go applyto ws://localhost:5000/api/manager
```
## 进程管理器
我们推荐使用Supervisor管理UBot的多进程架构
原Python版的Supervisor资源消耗较大,且无法在Windows上运行
我们推荐您使用Golang实现的Supervisor版本:[ochinchina/supervisord](https://github.com/ochinchina/supervisord)
>[info] Supervisor并非由本人维护,若遇到问题请咨询对应作者
## Router启动参数
|参数|说明|
|---|---|
|`-user` {user}|设定管理员用户名(实验性)|
|`-password` {password}|设定管理员密码(实验性)|
|`-addr` {addr}|设定监听地址,格式:`{host}:{port}`,默认为`localhost:5000`|
## Account/App启动参数
通常而言,第一个参数为 操作类型,第二个参数为 操作地址,之后的参数为相应应用的具体参数
|操作类型|说明|
|---|---|
|connect|直接连接到指定的RPC通道(手动操作中不常用)|
|applyto|连接到指定的管理员RPC通道,并进行应用注册,之后断开与管理员RPC通道的连接,根据注册得到的Token拼接出URL,连接到相应的应用RPC通道。该操作中URL可携带帐号密码,系统会自动转换为对Manager/GetToken的POST请求(详见握手流程一节)|