Skip to content

Commit 23542b5

Browse files
committed
qrcode relogin
1 parent 6780149 commit 23542b5

File tree

7 files changed

+37
-15
lines changed

7 files changed

+37
-15
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ module github.com/ProtobufBot/Go-Mirai-Client
33
go 1.15
44

55
require (
6-
github.com/Mrs4s/MiraiGo v0.0.0-20210404081916-0346596c7196
6+
github.com/Mrs4s/MiraiGo v0.0.0-20210411120128-5a90a592d071
77
github.com/fanliao/go-promise v0.0.0-20141029170127-1890db352a72
8-
github.com/gin-gonic/gin v1.6.3
9-
github.com/go-playground/validator/v10 v10.4.1 // indirect
8+
github.com/gin-gonic/gin v1.7.1
9+
github.com/go-playground/validator/v10 v10.5.0 // indirect
1010
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
1111
github.com/golang/protobuf v1.5.2
1212
github.com/gorilla/websocket v1.4.2
@@ -18,6 +18,7 @@ require (
1818
github.com/ugorji/go v1.2.5 // indirect
1919
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
2020
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
21+
golang.org/x/text v0.3.6 // indirect
2122
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
2223
gopkg.in/yaml.v2 v2.4.0 // indirect
2324
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ github.com/Mrs4s/MiraiGo v0.0.0-20210328112915-4533d5cece9e h1:8CT2ksp5G4Fabk0uv
66
github.com/Mrs4s/MiraiGo v0.0.0-20210328112915-4533d5cece9e/go.mod h1:NjiWhlvGxwv1ftOWIoiFa/OzklnAYI4YqNexFOKSZKw=
77
github.com/Mrs4s/MiraiGo v0.0.0-20210404081916-0346596c7196 h1:EOVN6zaL3jpN311dCEBcZA7TvpNw0f0Ok9EgstmqkHs=
88
github.com/Mrs4s/MiraiGo v0.0.0-20210404081916-0346596c7196/go.mod h1:NjiWhlvGxwv1ftOWIoiFa/OzklnAYI4YqNexFOKSZKw=
9+
github.com/Mrs4s/MiraiGo v0.0.0-20210411120128-5a90a592d071 h1:+1TizhfM/MkdPjnVS0VKBd2ZMML9UGFgewn3p/xCKxg=
10+
github.com/Mrs4s/MiraiGo v0.0.0-20210411120128-5a90a592d071/go.mod h1:NjiWhlvGxwv1ftOWIoiFa/OzklnAYI4YqNexFOKSZKw=
911
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
1012
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
1113
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -19,6 +21,8 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
1921
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
2022
github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
2123
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
24+
github.com/gin-gonic/gin v1.7.1 h1:qC89GU3p8TvKWMAVhEpmpB2CIb1hnqt2UdKZaP93mS8=
25+
github.com/gin-gonic/gin v1.7.1/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
2226
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
2327
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
2428
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
@@ -28,6 +32,8 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
2832
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
2933
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
3034
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
35+
github.com/go-playground/validator/v10 v10.5.0 h1:X9rflw/KmpACwT8zdrm1upefpvdy6ur8d1kWyq6sg3E=
36+
github.com/go-playground/validator/v10 v10.5.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk=
3137
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
3238
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
3339
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -140,6 +146,8 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn
140146
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
141147
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
142148
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
149+
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
150+
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
143151
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
144152
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
145153
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=

pkg/plugin/plugin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
type (
1010
PrivateMessagePlugin = func(*client.QQClient, *message.PrivateMessage) int32
1111
GroupMessagePlugin = func(*client.QQClient, *message.GroupMessage) int32
12-
TempMessagePlugin = func(*client.QQClient, *message.TempMessage) int32
12+
TempMessagePlugin = func(*client.QQClient, *client.TempMessageEvent) int32
1313
MemberJoinGroupPlugin = func(*client.QQClient, *client.MemberJoinGroupEvent) int32
1414
MemberLeaveGroupPlugin = func(*client.QQClient, *client.MemberLeaveGroupEvent) int32
1515
JoinGroupPlugin = func(*client.QQClient, *client.GroupInfo) int32
@@ -166,7 +166,7 @@ func handleGroupMessage(cli *client.QQClient, event *message.GroupMessage) {
166166
})
167167
}
168168

169-
func handleTempMessage(cli *client.QQClient, event *message.TempMessage) {
169+
func handleTempMessage(cli *client.QQClient, event *client.TempMessageEvent) {
170170
util.SafeGo(func() {
171171
for _, plugin := range TempMessagePluginList {
172172
if result := plugin(cli, event); result == MessageBlock {

service/bot/api_handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func HandleSendMsg(cli *client.QQClient, req *onebot.SendMsgReq) *onebot.SendMsg
181181
}
182182

183183
if req.GroupId != 0 && req.UserId != 0 { // 临时
184-
ret := cli.SendTempMessage(req.GroupId, req.UserId, sendingMessage)
184+
ret := cli.SendGroupTempMessage(req.GroupId, req.UserId, sendingMessage)
185185
cache.PrivateMessageLru.Add(ret.Id, ret)
186186
return &onebot.SendMsgResp{
187187
MessageId: ret.Id,

service/bot/bot.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
)
1818

1919
var Cli *client.QQClient
20+
var LoginToken []byte
2021

2122
func InitDevice(uin int64) {
2223
// 默认 device/device-qq.json
@@ -113,21 +114,32 @@ func SetRelogin(cli *client.QQClient, retryInterval int, retryCount int) {
113114
log.Warn("Bot已登录")
114115
return
115116
}
116-
if retryCount == 0 {
117-
} else if times > retryCount {
117+
if times > retryCount {
118118
break
119119
}
120120
log.Warnf("Bot已离线 (%v),将在 %v 秒后尝试重连. 重连次数:%v",
121121
e.Message, retryInterval, times)
122122
times++
123123
time.Sleep(time.Second * time.Duration(retryInterval))
124+
125+
// 尝试token登录
126+
if err := cli.TokenLogin(LoginToken); err != nil {
127+
log.Errorf("failed to relogin with token, try to login with password, %+v", err)
128+
} else {
129+
LoginToken = cli.GenToken()
130+
log.Info("succeed to relogin with token")
131+
return
132+
}
133+
134+
// 尝试密码登录
124135
ok, err := Login(cli)
125136

126137
if err != nil {
127138
log.Errorf("重连失败: %v", err)
128139
continue
129140
}
130141
if ok {
142+
LoginToken = cli.GenToken()
131143
log.Info("重连成功")
132144
return
133145
}

service/handler/bot.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,5 +274,6 @@ func AfterLogin() {
274274

275275
bot.ConnectUniversal(bot.Cli)
276276

277+
bot.LoginToken=bot.Cli.GenToken()
277278
bot.SetRelogin(bot.Cli, 10, 30)
278279
}

service/plugins/report.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func CheckGroupFile(cli *client.QQClient, event *message.GroupMessage) bool {
135135
return false
136136
}
137137

138-
func ReportTempMessage(cli *client.QQClient, event *message.TempMessage) int32 {
138+
func ReportTempMessage(cli *client.QQClient, event *client.TempMessageEvent) int32 {
139139
// TODO 撤回?
140140
eventProto := &onebot.Frame{
141141
FrameType: onebot.Frame_TPrivateMessageEvent,
@@ -147,13 +147,13 @@ func ReportTempMessage(cli *client.QQClient, event *message.TempMessage) int32 {
147147
PostType: "message",
148148
MessageType: "private",
149149
SubType: "group",
150-
MessageId: event.Id,
151-
UserId: event.Sender.Uin,
152-
Message: bot.MiraiMsgToProtoMsg(event.Elements),
153-
RawMessage: bot.MiraiMsgToRawMsg(event.Elements),
150+
MessageId: event.Message.Id,
151+
UserId: event.Message.Sender.Uin,
152+
Message: bot.MiraiMsgToProtoMsg(event.Message.Elements),
153+
RawMessage: bot.MiraiMsgToRawMsg(event.Message.Elements),
154154
Sender: &onebot.PrivateMessageEvent_Sender{
155-
UserId: event.Sender.Uin,
156-
Nickname: event.Sender.Nickname,
155+
UserId: event.Message.Sender.Uin,
156+
Nickname: event.Message.Sender.Nickname,
157157
},
158158
},
159159
}

0 commit comments

Comments
 (0)