diff --git a/bot.go b/bot.go index f829f6f..b4ff2e4 100644 --- a/bot.go +++ b/bot.go @@ -268,7 +268,7 @@ func (b *Bot) syncCheck() error { } // 如果不是正常的状态码返回,发生了错误,直接退出 if !resp.Success() { - return resp + return resp.Err() } // 如果Selector不为0,则获取消息 if !resp.NorMal() { diff --git a/caller.go b/caller.go index e660af3..25fd59a 100644 --- a/caller.go +++ b/caller.go @@ -94,7 +94,7 @@ func (c *Caller) GetLoginInfo(body []byte) (*LoginInfo, error) { return nil, err } if !loginInfo.Ok() { - return nil, loginInfo + return nil, loginInfo.Err() } return &loginInfo, nil } diff --git a/items.go b/items.go index a5c8ce8..67a91c6 100644 --- a/items.go +++ b/items.go @@ -1,6 +1,7 @@ package openwechat import ( + "errors" "strconv" ) @@ -23,8 +24,11 @@ func (l LoginInfo) Ok() bool { return l.Ret == 0 } -func (l LoginInfo) Error() string { - return l.Message +func (l LoginInfo) Err() error { + if l.Ok() { + return nil + } + return errors.New(l.Message) } // BaseRequest 初始的请求信息 @@ -100,13 +104,15 @@ func (s SyncCheckResponse) NorMal() bool { return s.Success() && s.Selector == "0" } -// 实现error接口 -func (s SyncCheckResponse) Error() string { +func (s SyncCheckResponse) Err() error { + if s.Success() { + return nil + } i, err := strconv.ParseInt(s.RetCode, 16, 10) if err != nil { - return "" + return errors.New("sync check unknown error") } - return Ret(i).String() + return errors.New(Ret(i).String()) } type WebWxSyncResponse struct {