openwechat icon indicating copy to clipboard operation
openwechat copied to clipboard

你们会每天晚上自动退出嘛 RetCode:1102 Selector:0

Open evan-xie opened this issue 2 years ago • 11 comments

我每天都会晚上自动退出,现在把日志输出下看看代码是多少 提示消息:sync check unknown error RetCode:1102 Selector:0

evan-xie avatar Jan 05 '23 01:01 evan-xie

看了下接口返回 window.synccheck={retcode:"0",selector:"2"} retcode SUCCESS("0", "成功"), TICKET_ERROR("-14", "ticket错误"), PARAM_ERROR("1", "传入参数错误"), NOT_LOGIN_WARN("1100", "未登录提示"), NOT_LOGIN_CHECK("1101", "未检测到登录"), COOKIE_INVALID_ERROR("1102", "cookie值无效"), LOGIN_ENV_ERROR("1203", "当前登录环境异常,为了安全起见请不要在web端进行登录"), TOO_OFEN("1205", "操作频繁"); selector NORMAL("0", "正常"), NEW_MSG("2", "有新消息"), MOD_CONTACT("4", "有人修改了自己的昵称或你修改了别人的备注"), ADD_OR_DEL_CONTACT("6", "存在删除或者新增的好友信息"), ENTER_OR_LEAVE_CHAT("7", "进入或离开聊天界面");

还有说法是如果cookie正确那就是登录的redirect_uri变了,后面我去确认下

evan-xie avatar Jan 06 '23 02:01 evan-xie

会!每晚都会!大神有解决方案吗?

h3clikejava avatar Jan 13 '23 05:01 h3clikejava

先监控下最近的请求和返回看看呗

package main

import (
	"bytes"
	"fmt"
	"net/http"
	"strconv"

	"github.com/eatmoreapple/openwechat"
)

var respLogs []respLog
type respLog struct {
	method  string
	url     string
	headers map[string][]string
	body    string
}
type HK struct{}

func (hk HK) AfterRequest(response *http.Response, err error) {
	body, _ := io.ReadAll(resp.Body)
	respBody := io.NopCloser(bytes.NewBuffer(body))
	resp.Body = respBody
	rs := &respLog{
		method:  resp.Request.Method,
		url:     resp.Request.URL.String(),
		headers: resp.Request.Header,
		body:    string(body),
	}
	if len(respLogs) == 50 {
		respLogs = respLogs[1:]
	}
	respLogs = append(respLogs, *rs)
}
func (hk HK) BeforeRequest(req *http.Request) {
	// fmt.Println("before request")
}
func main() {
	// bot := openwechat.DefaultBot()
	bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式,上面登录不上的可以尝试切换这种模式
	// 设置请求最大重试次数
	bot.Caller.Client.MaxRetryTimes = 10

	// 注册消息处理函数
	bot.MessageHandler = func(msg *openwechat.Message) {
		if msg.IsText() && msg.Content == "ping" {
			msg.ReplyText("pong")
		}
	}
	// 注册登陆二维码回调
	// bot.UUIDCallback = handlers.QrCodeCallBack
	bot.UUIDCallback = openwechat.PrintlnQrcodeUrl

	// 心跳包回调函数
	bot.SyncCheckCallback = func(resp openwechat.SyncCheckResponse) {
		// 当返回的RetCode不为0时打印输出。
		if !resp.Success() {
			println("RetCode:%s  Selector:%s", resp.RetCode, resp.Selector)
			rs := respLogs
			for i, respLog := range rs {
				// fmt.Println(response)
				println(strconv.Itoa(i) + ":----------------")
				println(respLog.method, respLog.url)
				fmt.Println(respLog.headers)
				println(fmt.Sprintf("Response Body: %v", respLog.body))
			}
		}
	}

	// 获取消息发生错误的handle, 返回true则尝试继续监听
	bot.MessageErrorHandler = func(err error) bool {
		println(fmt.Sprintf("Message error: %v ", err))
		return false
	}

	// 监控请求信息
	var hk openwechat.HttpHook
	hk = HK{}
	bot.Caller.Client.AddHttpHook(hk)

	// 执行登录
		// 登陆
	if err := bot.Login(); err != nil {
		fmt.Println(err)
		return
	}

	// 获取登陆的用户
	self, err := bot.GetCurrentUser()
	if err != nil {
		fmt.Println(err)
		return
	}

	// 获取所有的好友
	friends, err := self.Friends()
	fmt.Println(friends, err)

	// 获取所有的群组
	groups, err := self.Groups()
	fmt.Println(groups, err)

	// 阻塞主goroutine, 直到发生异常或者用户主动退出
	bot.Block()
}

evan-xie avatar Jan 19 '23 06:01 evan-xie

长时间收不到消息之后就会掉线

eatmoreapple avatar Jan 31 '23 15:01 eatmoreapple

退出了

2023/02/26 01:20:12 cookie invalid

whatwewant avatar Feb 28 '23 05:02 whatwewant

长时间收不到消息 就会掉线,这种怎么处理呢 @eatmoreapple

bravelionet avatar May 31 '23 15:05 bravelionet

长时间收不到消息 就会掉线,这种怎么处理呢 @eatmoreapple

搞个小号,定时互相发消息试试

eatmoreapple avatar Jun 05 '23 01:06 eatmoreapple

会不会是这个原因,手机上的微信不能掉线 https://github.com/littlecodersh/ItChat/issues/70

xiak avatar Nov 07 '23 08:11 xiak

请问大神们解决这个问题了么

XiaoChouYou avatar Mar 10 '24 00:03 XiaoChouYou

请问大神们解决这个问题了么

XiaoChouYou avatar Mar 10 '24 00:03 XiaoChouYou

有大神解决这个问题了吗?

IsStatic avatar Mar 25 '24 06:03 IsStatic