From 847711cd3903cdd97de7b3c2431e3550ce1bc25c Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Sat, 25 Jul 2020 03:23:30 +0800 Subject: [PATCH] reconnect supported. --- global/config.go | 16 ++++++++-------- main.go | 21 ++++++++++++++++++++- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/global/config.go b/global/config.go index 8f8e3b2..16c7922 100644 --- a/global/config.go +++ b/global/config.go @@ -6,14 +6,14 @@ import ( ) type JsonConfig struct { - Uin int64 `json:"uin"` - Password string `json:"password"` - EnableDB bool `json:"enable_db"` - AccessToken string `json:"access_token"` - //Reconnect bool `json:"reconnect"` - //ReconnectDelay int `json:"reconnect_delay"` - HttpConfig *GoCQHttpConfig `json:"http_config"` - WSConfig *GoCQWebsocketConfig `json:"ws_config"` + Uin int64 `json:"uin"` + Password string `json:"password"` + EnableDB bool `json:"enable_db"` + AccessToken string `json:"access_token"` + Reconnect bool `json:"reconnect"` + ReconnectDelay int `json:"reconnect_delay"` + HttpConfig *GoCQHttpConfig `json:"http_config"` + WSConfig *GoCQWebsocketConfig `json:"ws_config"` } type CQHttpApiConfig struct { diff --git a/main.go b/main.go index b347ec1..f225c9e 100644 --- a/main.go +++ b/main.go @@ -140,8 +140,27 @@ func main() { log.Info("资源初始化完成, 开始处理信息.") log.Info("アトリは、高性能ですから!") cli.OnDisconnected(func(bot *client.QQClient, e *client.ClientDisconnectedEvent) { + if conf.Reconnect { + log.Warnf("Bot已离线,将在 %v 秒后尝试重连.", conf.ReconnectDelay) + time.Sleep(time.Second * time.Duration(conf.ReconnectDelay)) + rsp, err := cli.Login() + if err != nil { + log.Fatalf("重连失败: %v", err) + } + if !rsp.Success { + switch rsp.Error { + case client.NeedCaptcha: + log.Fatalf("重连失败: 需要验证码. (验证码处理正在开发中)") + case client.UnsafeDeviceError: + log.Fatalf("重连失败: 设备锁") + default: + log.Fatalf("重连失败: %v", rsp.ErrorMessage) + } + } + return + } b.Release() - log.Fatalf("Bot已断线:", e.Message) + log.Fatalf("Bot已离线:%v", e.Message) }) c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.Kill)