156 lines
6.0 KiB
Go
156 lines
6.0 KiB
Go
package openwechat
|
|
|
|
import (
|
|
"errors"
|
|
"regexp"
|
|
)
|
|
|
|
var (
|
|
uuidRegexp = regexp.MustCompile(`uuid = "(.*?)";`)
|
|
statusCodeRegexp = regexp.MustCompile(`window.code=(\d+);`)
|
|
syncCheckRegexp = regexp.MustCompile(`window.synccheck=\{retcode:"(\d+)",selector:"(\d+)"\}`)
|
|
redirectUriRegexp = regexp.MustCompile(`window.redirect_uri="(.*?)"`)
|
|
)
|
|
|
|
const (
|
|
appId = "wx782c26e4c19acffb"
|
|
appMessageAppId = "wxeb7ec651dd0aefa9"
|
|
|
|
jsonContentType = "application/json; charset=utf-8"
|
|
uosPatchClientVersion = "2.0.0"
|
|
uosPatchExtspam = "Gp8ICJkIEpkICggwMDAwMDAwMRAGGoAI1GiJSIpeO1RZTq9QBKsRbPJdi84ropi16EYI10WB6g74sGmRwSNXjPQnYU" +
|
|
"KYotKkvLGpshucCaeWZMOylnc6o2AgDX9grhQQx7fm2DJRTyuNhUlwmEoWhjoG3F0ySAWUsEbH3bJMsEBwoB//0qmFJob74ffdaslqL+IrSy7L" +
|
|
"J76/G5TkvNC+J0VQkpH1u3iJJs0uUYyLDzdBIQ6Ogd8LDQ3VKnJLm4g/uDLe+G7zzzkOPzCjXL+70naaQ9medzqmh+/SmaQ6uFWLDQLcRln++w" +
|
|
"BwoEibNpG4uOJvqXy+ql50DjlNchSuqLmeadFoo9/mDT0q3G7o/80P15ostktjb7h9bfNc+nZVSnUEJXbCjTeqS5UYuxn+HTS5nZsPVxJA2O5G" +
|
|
"dKCYK4x8lTTKShRstqPfbQpplfllx2fwXcSljuYi3YipPyS3GCAqf5A7aYYwJ7AvGqUiR2SsVQ9Nbp8MGHET1GxhifC692APj6SJxZD3i1drSY" +
|
|
"ZPMMsS9rKAJTGz2FEupohtpf2tgXm6c16nDk/cw+C7K7me5j5PLHv55DFCS84b06AytZPdkFZLj7FHOkcFGJXitHkX5cgww7vuf6F3p0yM/W73" +
|
|
"SoXTx6GX4G6Hg2rYx3O/9VU2Uq8lvURB4qIbD9XQpzmyiFMaytMnqxcZJcoXCtfkTJ6pI7a92JpRUvdSitg967VUDUAQnCXCM/m0snRkR9LtoX" +
|
|
"AO1FUGpwlp1EfIdCZFPKNnXMeqev0j9W9ZrkEs9ZWcUEexSj5z+dKYQBhIICviYUQHVqBTZSNy22PlUIeDeIs11j7q4t8rD8LPvzAKWVqXE+5l" +
|
|
"S1JPZkjg4y5hfX1Dod3t96clFfwsvDP6xBSe1NBcoKbkyGxYK0UvPGtKQEE0Se2zAymYDv41klYE9s+rxp8e94/H8XhrL9oGm8KWb2RmYnAE7r" +
|
|
"y9gd6e8ZuBRIsISlJAE/e8y8xFmP031S6Lnaet6YXPsFpuFsdQs535IjcFd75hh6DNMBYhSfjv456cvhsb99+fRw/KVZLC3yzNSCbLSyo9d9BI" +
|
|
"45Plma6V8akURQA/qsaAzU0VyTIqZJkPDTzhuCl92vD2AD/QOhx6iwRSVPAxcRFZcWjgc2wCKh+uCYkTVbNQpB9B90YlNmI3fWTuUOUjwOzQRx" +
|
|
"JZj11NsimjOJ50qQwTTFj6qQvQ1a/I+MkTx5UO+yNHl718JWcR3AXGmv/aa9rD1eNP8ioTGlOZwPgmr2sor2iBpKTOrB83QgZXP+xRYkb4zVC+" +
|
|
"LoAXEoIa1+zArywlgREer7DLePukkU6wHTkuSaF+ge5Of1bXuU4i938WJHj0t3D8uQxkJvoFi/EYN/7u2P1zGRLV4dHVUsZMGCCtnO6BBigFMAA="
|
|
)
|
|
|
|
// 消息类型
|
|
const (
|
|
AppMessage = 6
|
|
)
|
|
|
|
// MessageType 以Go惯用形式定义了PC微信所有的官方消息类型。
|
|
// 详见 message_test.go
|
|
type MessageType int
|
|
|
|
// AppMessageType 以Go惯用形式定义了PC微信所有的官方App消息类型。
|
|
type AppMessageType int
|
|
|
|
// https://res.wx.qq.com/a/wx_fed/webwx/res/static/js/index_c7d281c.js
|
|
// MSGTYPE_TEXT
|
|
// MSGTYPE_IMAGE
|
|
// MSGTYPE_VOICE
|
|
// MSGTYPE_VERIFYMSG
|
|
// MSGTYPE_POSSIBLEFRIEND_MSG
|
|
// MSGTYPE_SHARECARD
|
|
// MSGTYPE_VIDEO
|
|
// MSGTYPE_EMOTICON
|
|
// MSGTYPE_LOCATION
|
|
// MSGTYPE_APP
|
|
// MSGTYPE_VOIPMSG
|
|
// MSGTYPE_VOIPNOTIFY
|
|
// MSGTYPE_VOIPINVITE
|
|
// MSGTYPE_MICROVIDEO
|
|
// MSGTYPE_SYS
|
|
// MSGTYPE_RECALLED
|
|
|
|
const (
|
|
MsgTypeText MessageType = 1 // 文本消息
|
|
MsgTypeImage MessageType = 3 // 图片消息
|
|
MsgTypeVoice MessageType = 34 // 语音消息
|
|
MsgTypeVerify MessageType = 37 // 认证消息
|
|
MsgTypePossibleFriend MessageType = 40 // 好友推荐消息
|
|
MsgTypeShareCard MessageType = 42 // 名片消息
|
|
MsgTypeVideo MessageType = 43 // 视频消息
|
|
MsgTypeEmoticon MessageType = 47 // 表情消息
|
|
MsgTypeLocation MessageType = 48 // 地理位置消息
|
|
MsgTypeApp MessageType = 49 // APP消息
|
|
MsgTypeVoip MessageType = 50 // VOIP消息
|
|
MsgTypeVoipNotify MessageType = 52 // VOIP结束消息
|
|
MsgTypeVoipInvite MessageType = 53 // VOIP邀请
|
|
MsgTypeMicroVideo MessageType = 62 // 小视频消息
|
|
MsgTypeSys MessageType = 10000 // 系统消息
|
|
MsgTypeRecalled MessageType = 10002 // 消息撤回
|
|
)
|
|
|
|
const (
|
|
AppMsgTypeText AppMessageType = 1 // 文本消息
|
|
AppMsgTypeImg AppMessageType = 2 // 图片消息
|
|
AppMsgTypeAudio AppMessageType = 3 // 语音消息
|
|
AppMsgTypeVideo AppMessageType = 4 // 视频消息
|
|
AppMsgTypeUrl AppMessageType = 5 // 文章消息
|
|
AppMsgTypeAttach AppMessageType = 6 // 附件消息
|
|
AppMsgTypeOpen AppMessageType = 7 // Open
|
|
AppMsgTypeEmoji AppMessageType = 8 // 表情消息
|
|
AppMsgTypeVoiceRemind AppMessageType = 9 // VoiceRemind
|
|
AppMsgTypeScanGood AppMessageType = 10 // ScanGood
|
|
AppMsgTypeGood AppMessageType = 13 // Good
|
|
AppMsgTypeEmotion AppMessageType = 15 // Emotion
|
|
AppMsgTypeCardTicket AppMessageType = 16 // 名片消息
|
|
AppMsgTypeRealtimeShareLocation AppMessageType = 17 // 地理位置消息
|
|
AppMsgTypeTransfers AppMessageType = 2000 // 转账消息
|
|
AppMsgTypeRedEnvelopes AppMessageType = 2001 // 红包消息
|
|
AppMsgTypeReaderType AppMessageType = 100001 //自定义的消息
|
|
)
|
|
|
|
// 登录状态
|
|
const (
|
|
StatusSuccess = "200"
|
|
StatusScanned = "201"
|
|
StatusTimeout = "400"
|
|
StatusWait = "408"
|
|
)
|
|
|
|
// errors
|
|
var (
|
|
ErrNoSuchUserFoundError = errors.New("no such user found")
|
|
ErrMissLocationHeader = errors.New("301 response missing Location header")
|
|
ErrLoginForbiddenError = errors.New("login forbidden")
|
|
ErrLoginTimeout = errors.New("login timeout")
|
|
)
|
|
|
|
// ALL 跟search函数搭配
|
|
// friends.Search(openwechat.ALL, )
|
|
const ALL = 0
|
|
|
|
// 性别
|
|
const (
|
|
MALE = 1
|
|
FEMALE = 2
|
|
)
|
|
|
|
const (
|
|
// 分块上传时每次上传的文件的大小
|
|
chunkSize int64 = (1 << 20) / 2 // 0.5m
|
|
// 需要检测的文件大小
|
|
needCheckSize int64 = 25 << 20 // 20m
|
|
// 最大文件上传大小
|
|
maxFileUploadSize int64 = 50 << 20 // 50m
|
|
// 最大图片上传大小
|
|
maxImageUploadSize int64 = 20 << 20 // 20m
|
|
)
|
|
|
|
const TimeFormat = "Mon Jan 02 2006 15:04:05 GMT+0800 (中国标准时间)"
|
|
|
|
var imageType = map[string]bool{
|
|
"bmp": true,
|
|
"png": true,
|
|
"jpeg": true,
|
|
"jpg": true,
|
|
}
|
|
|
|
var videoType = "mp4"
|
|
|
|
// ZombieText 检测僵尸好友字符串
|
|
// 发送该字符给好友,能正常发送不报错的为正常好友,否则为僵尸好友
|
|
const ZombieText = "وُحfخe ̷̴̐nخg ̷̴̐cخh ̷̴̐aخo امارتيخ ̷̴̐خ\n"
|