1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-06 03:53:50 +08:00

fix #issuecomment-817290057.

This commit is contained in:
Mrs4s 2021-04-11 19:57:13 +08:00
parent 382d2ffda8
commit 92b29dee2e
No known key found for this signature in database
GPG Key ID: 3186E98FA19CE3A7
3 changed files with 35 additions and 26 deletions

2
go.mod
View File

@ -4,7 +4,7 @@ go 1.16
require ( require (
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f
github.com/Mrs4s/MiraiGo v0.0.0-20210411090602-132dc119bf4c github.com/Mrs4s/MiraiGo v0.0.0-20210411115056-c751f3a90e7b
github.com/dustin/go-humanize v1.0.0 github.com/dustin/go-humanize v1.0.0
github.com/gin-gonic/gin v1.6.3 github.com/gin-gonic/gin v1.6.3
github.com/gorilla/websocket v1.4.2 github.com/gorilla/websocket v1.4.2

4
go.sum
View File

@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f h1:2dk3eOnYllh+wUOuDhOoC2vUVoJF/5z478ryJ+wzEII= github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f h1:2dk3eOnYllh+wUOuDhOoC2vUVoJF/5z478ryJ+wzEII=
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f/go.mod h1:4a58ifQTEe2uwwsaqbh3i2un5/CBPg+At/qHpt18Tmk= github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f/go.mod h1:4a58ifQTEe2uwwsaqbh3i2un5/CBPg+At/qHpt18Tmk=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Mrs4s/MiraiGo v0.0.0-20210411090602-132dc119bf4c h1:5FjKcZV/LHRJl8N3CEdZv2UOqJEYwdk6WfcUamtctEY= github.com/Mrs4s/MiraiGo v0.0.0-20210411115056-c751f3a90e7b h1:Z3ubJIzMBrKZeD+8k7+pLjXt3qPBXaxAjHo5LZHh83M=
github.com/Mrs4s/MiraiGo v0.0.0-20210411090602-132dc119bf4c/go.mod h1:NjiWhlvGxwv1ftOWIoiFa/OzklnAYI4YqNexFOKSZKw= github.com/Mrs4s/MiraiGo v0.0.0-20210411115056-c751f3a90e7b/go.mod h1:NjiWhlvGxwv1ftOWIoiFa/OzklnAYI4YqNexFOKSZKw=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

55
main.go
View File

@ -324,34 +324,43 @@ func main() {
cli.OnDisconnected(func(q *client.QQClient, e *client.ClientDisconnectedEvent) { cli.OnDisconnected(func(q *client.QQClient, e *client.ClientDisconnectedEvent) {
reLoginLock.Lock() reLoginLock.Lock()
defer reLoginLock.Unlock() defer reLoginLock.Unlock()
times = 1
if cli.Online { if cli.Online {
return return
} }
log.Warnf("Bot已离线: %v", e.Message) log.Warnf("Bot已离线: %v", e.Message)
if conf.Account.ReLogin.Disabled { for {
os.Exit(1) if conf.Account.ReLogin.Disabled {
} os.Exit(1)
if times > conf.Account.ReLogin.MaxTimes && conf.Account.ReLogin.MaxTimes != 0 { }
log.Fatalf("Bot重连次数超过限制, 停止") if times > conf.Account.ReLogin.MaxTimes && conf.Account.ReLogin.MaxTimes != 0 {
} log.Fatalf("Bot重连次数超过限制, 停止")
if conf.Account.ReLogin.Interval > 0 { }
log.Warnf("将在 %v 秒后尝试重连. 重连次数:%v/%v", conf.Account.ReLogin.Interval, times, conf.Account.ReLogin.MaxTimes) times++
time.Sleep(time.Second * time.Duration(conf.Account.ReLogin.Interval)) if conf.Account.ReLogin.Interval > 0 {
} else { log.Warnf("将在 %v 秒后尝试重连. 重连次数:%v/%v", conf.Account.ReLogin.Interval, times, conf.Account.ReLogin.MaxTimes)
time.Sleep(time.Second * time.Duration(conf.Account.ReLogin.Interval))
} else {
time.Sleep(time.Second)
}
log.Warnf("尝试重连...")
if err := cli.TokenLogin(global.AccountToken); err == nil {
saveToken()
return
} else {
log.Warnf("快速重连失败: %v", err)
}
if isQRCodeLogin {
log.Fatalf("快速重连失败")
}
log.Warnf("快速重连失败, 尝试普通登录. 这可能是因为其他端强行T下线导致的.")
time.Sleep(time.Second) time.Sleep(time.Second)
} if err := commonLogin(); err != nil {
log.Warnf("尝试重连...") log.Errorf("登录时发生致命错误: %v", err)
if err := cli.TokenLogin(global.AccountToken); err == nil { } else {
saveToken() saveToken()
return break
} }
if isQRCodeLogin {
log.Fatalf("快速重连失败")
}
log.Warnf("快速重连失败, 尝试普通登录. 这可能是因为其他端强行T下线导致的.")
time.Sleep(time.Second)
if err := commonLogin(); err != nil {
log.Fatalf("登录时发生致命错误: %v", err)
} }
}) })
saveToken() saveToken()