1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

feat: SetOnlineStatus.

This commit is contained in:
Mrs4s 2021-04-06 09:52:22 +08:00
parent 5d971cfb11
commit dd7898c204
4 changed files with 78 additions and 3 deletions

View File

@ -111,6 +111,8 @@ type (
IsSetStatus byte `jceId:"34"` IsSetStatus byte `jceId:"34"`
ServerBuf []byte `jceId:"35"` ServerBuf []byte `jceId:"35"`
SetMute byte `jceId:"36"` SetMute byte `jceId:"36"`
ExtOnlineStatus int64 `jceId:"38"`
BatteryStatus int32 `jceId:"39"`
} }
SvcRespRegister struct { SvcRespRegister struct {

View File

@ -448,6 +448,44 @@ func (c *QQClient) buildClientRegisterPacket() (uint16, []byte) {
return seq, packet return seq, packet
} }
func (c *QQClient) buildStatusSetPacket(status, extStatus int32) (uint16, []byte) {
seq := c.nextSeq()
svc := &jce.SvcReqRegister{
ConnType: 0,
Uin: c.Uin,
Bid: 7,
Status: status,
KickPC: 0,
KickWeak: 0,
Timestamp: time.Now().Unix(),
IOSVersion: int64(SystemDeviceInfo.Version.Sdk),
NetType: 1,
RegType: 0,
Guid: SystemDeviceInfo.Guid,
IsSetStatus: 1,
LocaleId: 2052,
DevName: string(SystemDeviceInfo.Model),
DevType: string(SystemDeviceInfo.Model),
OSVer: string(SystemDeviceInfo.Version.Release),
OpenPush: 1,
LargeSeq: 1551,
ExtOnlineStatus: int64(extStatus),
}
buf := &jce.RequestDataVersion3{
Map: map[string][]byte{"SvcReqRegister": packUniRequestData(svc.ToBytes())},
}
pkt := &jce.RequestPacket{
IVersion: 3,
SServantName: "PushService",
SFuncName: "SvcReqRegister",
SBuffer: buf.ToBytes(),
Context: make(map[string]string),
Status: make(map[string]string),
}
packet := packets.BuildUniPacket(c.Uin, seq, "StatSvc.SetStatusFromClient", 1, c.OutGoingPacketSessionId, []byte{}, c.sigInfo.d2Key, pkt.ToBytes())
return seq, packet
}
// ConfigPushSvc.PushResp // ConfigPushSvc.PushResp
func (c *QQClient) buildConfPushRespPacket(t int32, pktSeq int64, jceBuf []byte) (uint16, []byte) { func (c *QQClient) buildConfPushRespPacket(t int32, pktSeq int64, jceBuf []byte) (uint16, []byte) {
seq := c.nextSeq() seq := c.nextSeq()

View File

@ -432,6 +432,14 @@ func (c *QQClient) GenToken() []byte {
}) })
} }
func (c *QQClient) SetOnlineStatus(s UserOnlineStatus) {
if s < 1000 {
_, _ = c.sendAndWait(c.buildStatusSetPacket(int32(s), 0))
return
}
_, _ = c.sendAndWait(c.buildStatusSetPacket(11, int32(s)))
}
func (c *QQClient) GetVipInfo(target int64) (*VipInfo, error) { func (c *QQClient) GetVipInfo(target int64) (*VipInfo, error) {
b, err := utils.HttpGetBytes(fmt.Sprintf("https://h5.vip.qq.com/p/mc/cardv2/other?platform=1&qq=%d&adtag=geren&aid=mvip.pingtai.mobileqq.androidziliaoka.fromqita", target), c.getCookiesWithDomain("h5.vip.qq.com")) b, err := utils.HttpGetBytes(fmt.Sprintf("https://h5.vip.qq.com/p/mc/cardv2/other?platform=1&qq=%d&adtag=geren&aid=mvip.pingtai.mobileqq.androidziliaoka.fromqita", target), c.getCookiesWithDomain("h5.vip.qq.com"))
if err != nil { if err != nil {

View File

@ -19,6 +19,8 @@ type (
MemberPermission int MemberPermission int
UserOnlineStatus int
ClientProtocol int ClientProtocol int
LoginResponse struct { LoginResponse struct {
@ -295,9 +297,34 @@ const (
QRCodeConfirmed QRCodeLoginState = 5 QRCodeConfirmed QRCodeLoginState = 5
QRCodeCanceled QRCodeLoginState = 6 QRCodeCanceled QRCodeLoginState = 6
Owner MemberPermission = iota StatusOnline UserOnlineStatus = 11 // 在线
Administrator StatusOffline UserOnlineStatus = 21 // 离线
Member StatusAway UserOnlineStatus = 31 // 离开
StatusInvisible UserOnlineStatus = 41 // 隐身
StatusBusy UserOnlineStatus = 50 // 忙
StatusBattery UserOnlineStatus = 1000 // 当前电量
StatusListening UserOnlineStatus = 1028 // 听歌中
StatusConstellation UserOnlineStatus = 1040 // 星座运势
StatusWeather UserOnlineStatus = 1030 // 今日天气
StatusMeetSpring UserOnlineStatus = 1069 // 遇见春天
StatusTimi UserOnlineStatus = 1027 // Timi中
StatusEatChicken UserOnlineStatus = 1064 // 吃鸡中
StatusLoving UserOnlineStatus = 1051 // 恋爱中
StatusWangWang UserOnlineStatus = 1053 // 汪汪汪
StatusCookedRice UserOnlineStatus = 1019 // 干饭中
StatusStudy UserOnlineStatus = 1018 // 学习中
StatusStayUp UserOnlineStatus = 1032 // 熬夜中
StatusPlayBall UserOnlineStatus = 1050 // 打球中
StatusSignal UserOnlineStatus = 1011 // 信号弱
StatusStudyOnline UserOnlineStatus = 1024 // 在线学习
StatusGaming UserOnlineStatus = 1017 // 游戏中
StatusVacationing UserOnlineStatus = 1022 // 度假中
StatusWatchingTV UserOnlineStatus = 1021 // 追剧中
StatusFitness UserOnlineStatus = 1020 // 健身中
Owner MemberPermission = 1
Administrator MemberPermission = 2
Member MemberPermission = 3
AndroidPhone ClientProtocol = 1 AndroidPhone ClientProtocol = 1
IPad ClientProtocol = 2 IPad ClientProtocol = 2