fix a problem with Bot.Block
This commit is contained in:
parent
a7a234c950
commit
51d0e18c8a
10
bot.go
10
bot.go
@ -143,10 +143,8 @@ func (b *Bot) asyncCall() error {
|
||||
}
|
||||
|
||||
func (b *Bot) stopAsyncCALL(err error) {
|
||||
if err != nil {
|
||||
b.exit <- true
|
||||
b.err = err
|
||||
}
|
||||
b.exit <- true
|
||||
b.err = err
|
||||
}
|
||||
|
||||
// 获取新的消息
|
||||
@ -180,6 +178,7 @@ func (b *Bot) prepare() {
|
||||
}
|
||||
}
|
||||
|
||||
// 注册消息处理的函数
|
||||
func (b *Bot) RegisterMessageHandler(handler MessageHandler) {
|
||||
if b.messageHandlerGroups == nil {
|
||||
b.messageHandlerGroups = &MessageHandlerGroup{}
|
||||
@ -187,12 +186,13 @@ func (b *Bot) RegisterMessageHandler(handler MessageHandler) {
|
||||
b.messageHandlerGroups.RegisterHandler(handler)
|
||||
}
|
||||
|
||||
// 当消息同步发生了错误或者用户主动在手机上退出,该方法会立即返回,否则会一直阻塞
|
||||
func (b *Bot) Block() {
|
||||
<-b.exit
|
||||
}
|
||||
|
||||
func NewBot(caller *Caller, storage WechatStorage) *Bot {
|
||||
return &Bot{Caller: caller, storage: storage}
|
||||
return &Bot{Caller: caller, storage: storage, exit: make(chan bool)}
|
||||
}
|
||||
|
||||
func DefaultBot() *Bot {
|
||||
|
32
bot_test.go
32
bot_test.go
@ -18,3 +18,35 @@ func TestDefaultBot(t *testing.T) {
|
||||
}
|
||||
bot.Block()
|
||||
}
|
||||
|
||||
func TestBotMessageHandler(t *testing.T) {
|
||||
messageHandler := func(message *Message) {
|
||||
if message.IsSendByGroup() {
|
||||
sender, err := message.Sender()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
group := Group{sender}
|
||||
members, err := group.Members()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
for _, member := range members {
|
||||
fmt.Println(member)
|
||||
}
|
||||
if message.IsText() {
|
||||
message.ReplyText(message.Content)
|
||||
}
|
||||
}
|
||||
}
|
||||
bot := DefaultBot()
|
||||
bot.RegisterMessageHandler(messageHandler)
|
||||
bot.UUIDCallback = PrintlnQrcodeUrl
|
||||
if err := bot.Login(); err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
bot.Block()
|
||||
}
|
||||
|
34
items.go
34
items.go
@ -34,7 +34,6 @@ func (b BaseResponse) Ok() bool {
|
||||
return b.Ret == 0
|
||||
}
|
||||
|
||||
// 实现error接口
|
||||
func (b BaseResponse) Error() string {
|
||||
switch b.Ret {
|
||||
case 0:
|
||||
@ -42,7 +41,7 @@ func (b BaseResponse) Error() string {
|
||||
case 1:
|
||||
return "param error"
|
||||
case -14:
|
||||
return "ticker error"
|
||||
return "ticket error"
|
||||
case 1100:
|
||||
return "not login warn"
|
||||
case 1101:
|
||||
@ -52,12 +51,9 @@ func (b BaseResponse) Error() string {
|
||||
case 1203:
|
||||
return "login env error"
|
||||
case 1205:
|
||||
return "op too often"
|
||||
return "opt too often"
|
||||
default:
|
||||
if b.ErrMsg != "" {
|
||||
return b.ErrMsg
|
||||
}
|
||||
return fmt.Sprintf("base response error code %d", b.Ret)
|
||||
return fmt.Sprintf("base response ret code %d", b.Ret)
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,6 +123,30 @@ func (s *SyncCheckResponse) NorMal() bool {
|
||||
return s.Success() && s.Selector == "0"
|
||||
}
|
||||
|
||||
// 实现error接口
|
||||
func (s *SyncCheckResponse) Error() string {
|
||||
switch s.RetCode {
|
||||
case "0":
|
||||
return ""
|
||||
case "1":
|
||||
return "param error"
|
||||
case "-14":
|
||||
return "ticker error"
|
||||
case "1100":
|
||||
return "not login warn"
|
||||
case "1101":
|
||||
return "not login check"
|
||||
case "1102":
|
||||
return "cookie invalid error"
|
||||
case "1203":
|
||||
return "login env error"
|
||||
case "1205":
|
||||
return "op too often"
|
||||
default:
|
||||
return fmt.Sprintf("sync check response error code %s", s.RetCode)
|
||||
}
|
||||
}
|
||||
|
||||
type WebWxSyncResponse struct {
|
||||
AddMsgCount int
|
||||
AddMsgList []*Message
|
||||
|
Loading…
x
Reference in New Issue
Block a user