# 使用
## 本地模式
流程:
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請求(詳見握手流程一節)|