@@ -20,12 +20,14 @@ type WaitingCaptcha struct {
2020 Prom * promise.Promise
2121}
2222
23+ //go:generate go run github.com/a8m/syncmap -o "gen_captcha_map.go" -pkg bot -name CaptchaMap "map[int64]*WaitingCaptcha"
24+
2325// TODO sync
24- var WaitingCaptchas = map [ int64 ] * WaitingCaptcha {}
26+ var WaitingCaptchas CaptchaMap
2527
2628func ProcessLoginRsp (cli * client.QQClient , rsp * client.LoginResponse ) (bool , error ) {
2729 if rsp .Success {
28- delete ( WaitingCaptchas , cli .Uin )
30+ WaitingCaptchas . Delete ( cli .Uin )
2931 return true , nil
3032 }
3133 if rsp .Error == client .SMSOrVerifyNeededError {
@@ -40,15 +42,15 @@ func ProcessLoginRsp(cli *client.QQClient, rsp *client.LoginResponse) (bool, err
4042 case client .SliderNeededError :
4143 log .Infof ("遇到滑块验证码,根据README提示操作 https://github.com/protobufbot/Go-Mirai-Client (顺便star)" )
4244 prom := promise .NewPromise ()
43- WaitingCaptchas [ cli .Uin ] = & WaitingCaptcha {
45+ WaitingCaptchas . Store ( cli .Uin , & WaitingCaptcha {
4446 Captcha : & dto.Bot_Captcha {
4547 BotId : cli .Uin ,
4648 CaptchaType : dto .Bot_Captcha_SLIDER_CAPTCHA ,
4749 Data : & dto.Bot_Captcha_Url {Url : rsp .VerifyUrl },
4850 },
4951 Prom : prom ,
50- }
51- defer delete ( WaitingCaptchas , cli .Uin )
52+ })
53+ defer WaitingCaptchas . Delete ( cli .Uin )
5254 result , err := prom .Get ()
5355 if err != nil {
5456 return false , fmt .Errorf ("提交ticket错误" )
@@ -63,15 +65,15 @@ func ProcessLoginRsp(cli *client.QQClient, rsp *client.LoginResponse) (bool, err
6365 log .Infof ("遇到图形验证码,根据README提示操作 https://github.com/protobufbot/Go-Mirai-Client (顺便star)" )
6466 _ = ioutil .WriteFile ("captcha.jpg" , rsp .CaptchaImage , 0644 )
6567 prom := promise .NewPromise ()
66- WaitingCaptchas [ cli .Uin ] = & WaitingCaptcha {
68+ WaitingCaptchas . Store ( cli .Uin , & WaitingCaptcha {
6769 Captcha : & dto.Bot_Captcha {
6870 BotId : cli .Uin ,
6971 CaptchaType : dto .Bot_Captcha_PIC_CAPTCHA ,
7072 Data : & dto.Bot_Captcha_Image {Image : rsp .CaptchaImage },
7173 },
7274 Prom : prom ,
73- }
74- defer delete ( WaitingCaptchas , cli .Uin )
75+ })
76+ defer WaitingCaptchas . Delete ( cli .Uin )
7577 result , err := prom .Get ()
7678 text := result .(string )
7779 rsp , err := cli .SubmitCaptcha (strings .ReplaceAll (text , "\n " , "" ), rsp .CaptchaSign )
@@ -86,15 +88,15 @@ func ProcessLoginRsp(cli *client.QQClient, rsp *client.LoginResponse) (bool, err
8688 return false , fmt .Errorf ("请求短信验证码错误,可能是太频繁" )
8789 }
8890 prom := promise .NewPromise ()
89- WaitingCaptchas [ cli .Uin ] = & WaitingCaptcha {
91+ WaitingCaptchas . Store ( cli .Uin , & WaitingCaptcha {
9092 Captcha : & dto.Bot_Captcha {
9193 BotId : cli .Uin ,
9294 CaptchaType : dto .Bot_Captcha_SMS ,
9395 Data : & dto.Bot_Captcha_Url {Url : rsp .SMSPhone },
9496 },
9597 Prom : prom ,
96- }
97- defer delete ( WaitingCaptchas , cli .Uin )
98+ })
99+ WaitingCaptchas . Delete ( cli .Uin )
98100 result , err := prom .Get ()
99101 if err != nil {
100102 return false , fmt .Errorf ("提交短信验证码错误" )
@@ -108,15 +110,15 @@ func ProcessLoginRsp(cli *client.QQClient, rsp *client.LoginResponse) (bool, err
108110 log .Info ("设置环境变量 SMS = 1 可优先使用短信验证码" )
109111
110112 prom := promise .NewPromise ()
111- WaitingCaptchas [ cli .Uin ] = & WaitingCaptcha {
113+ WaitingCaptchas . Store ( cli .Uin , & WaitingCaptcha {
112114 Captcha : & dto.Bot_Captcha {
113115 BotId : cli .Uin ,
114116 CaptchaType : dto .Bot_Captcha_UNSAFE_DEVICE_LOGIN_VERIFY ,
115117 Data : & dto.Bot_Captcha_Url {Url : rsp .VerifyUrl },
116118 },
117119 Prom : prom ,
118- }
119- defer delete ( WaitingCaptchas , cli .Uin )
120+ })
121+ defer WaitingCaptchas . Delete ( cli .Uin )
120122 _ , err := prom .Get ()
121123 cli .Disconnect ()
122124 time .Sleep (3 * time .Second )
0 commit comments