mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-06-19 14:05:04 +08:00
temp message sending supported.
This commit is contained in:
parent
901c915850
commit
626638e899
@ -44,11 +44,11 @@ qq-android协议的golang实现 移植于mirai
|
|||||||
- [x] 客户端离线
|
- [x] 客户端离线
|
||||||
|
|
||||||
#### 主动操作
|
#### 主动操作
|
||||||
> 为防止滥用,将不支持主动/被动发送任何临时会话消息
|
> 为防止滥用,将不支持主动邀请新成员进群
|
||||||
|
|
||||||
- [x] 发送群消息
|
- [x] 发送群消息
|
||||||
- [x] 发送好友消息
|
- [x] 发送好友消息
|
||||||
- [ ] ~~发送临时会话消息~~
|
- [x] 发送临时会话消息
|
||||||
- [x] 获取/刷新群列表
|
- [x] 获取/刷新群列表
|
||||||
- [x] 获取/刷新群成员列表
|
- [x] 获取/刷新群成员列表
|
||||||
- [x] 获取/刷新好友列表
|
- [x] 获取/刷新好友列表
|
||||||
@ -61,6 +61,6 @@ qq-android协议的golang实现 移植于mirai
|
|||||||
- [x] 群设置 (全体禁言/群名)
|
- [x] 群设置 (全体禁言/群名)
|
||||||
- [x] 修改群成员Card
|
- [x] 修改群成员Card
|
||||||
- [x] 修改群成员头衔
|
- [x] 修改群成员头衔
|
||||||
- [ ] 群成员邀请
|
- [ ] ~~群成员邀请~~
|
||||||
- [x] 群成员禁言/解除禁言
|
- [x] 群成员禁言/解除禁言
|
||||||
- [x] T出群成员
|
- [x] T出群成员
|
||||||
|
@ -454,6 +454,40 @@ func (c *QQClient) buildFriendSendingPacket(target int64, msgSeq, r int32, time
|
|||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MessageSvc.PbSendMsg
|
||||||
|
func (c *QQClient) buildTempSendingPacket(groupUin, target int64, msgSeq, r int32, time int64, m *message.SendingMessage) (uint16, []byte) {
|
||||||
|
seq := c.nextSeq()
|
||||||
|
req := &msg.SendMessageRequest{
|
||||||
|
RoutingHead: &msg.RoutingHead{GrpTmp: &msg.GrpTmp{
|
||||||
|
GroupUin: groupUin,
|
||||||
|
ToUin: target,
|
||||||
|
}},
|
||||||
|
ContentHead: &msg.ContentHead{PkgNum: 1},
|
||||||
|
MsgBody: &msg.MessageBody{
|
||||||
|
RichText: &msg.RichText{
|
||||||
|
Elems: message.ToProtoElems(m.Elements, false),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
MsgSeq: msgSeq,
|
||||||
|
MsgRand: r,
|
||||||
|
SyncCookie: func() []byte {
|
||||||
|
cookie := &msg.SyncCookie{
|
||||||
|
Time: time,
|
||||||
|
Ran1: rand.Int63(),
|
||||||
|
Ran2: rand.Int63(),
|
||||||
|
Const1: syncConst1,
|
||||||
|
Const2: syncConst2,
|
||||||
|
Const3: 0x1d,
|
||||||
|
}
|
||||||
|
b, _ := proto.Marshal(cookie)
|
||||||
|
return b
|
||||||
|
}(),
|
||||||
|
}
|
||||||
|
payload, _ := proto.Marshal(req)
|
||||||
|
packet := packets.BuildUniPacket(c.Uin, seq, "MessageSvc.PbSendMsg", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
|
||||||
|
return seq, packet
|
||||||
|
}
|
||||||
|
|
||||||
// LongConn.OffPicUp
|
// LongConn.OffPicUp
|
||||||
func (c *QQClient) buildOffPicUpPacket(target int64, md5 []byte, size int32) (uint16, []byte) {
|
func (c *QQClient) buildOffPicUpPacket(target int64, md5 []byte, size int32) (uint16, []byte) {
|
||||||
seq := c.nextSeq()
|
seq := c.nextSeq()
|
||||||
|
@ -291,6 +291,39 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *QQClient) SendTempMessage(groupCode, target int64, m *message.SendingMessage) *message.TempMessage {
|
||||||
|
group := c.FindGroup(groupCode)
|
||||||
|
if group == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if c.FindFriend(target) != nil {
|
||||||
|
pm := c.SendPrivateMessage(target, m)
|
||||||
|
return &message.TempMessage{
|
||||||
|
Id: pm.Id,
|
||||||
|
GroupCode: group.Code,
|
||||||
|
GroupName: group.Name,
|
||||||
|
Sender: pm.Sender,
|
||||||
|
Elements: m.Elements,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mr := int32(rand.Uint32())
|
||||||
|
seq := c.nextFriendSeq()
|
||||||
|
t := time.Now().Unix()
|
||||||
|
_, pkt := c.buildTempSendingPacket(group.Uin, target, seq, mr, t, m)
|
||||||
|
_ = c.send(pkt)
|
||||||
|
return &message.TempMessage{
|
||||||
|
Id: seq,
|
||||||
|
GroupCode: group.Code,
|
||||||
|
GroupName: group.Name,
|
||||||
|
Sender: &message.Sender{
|
||||||
|
Uin: c.Uin,
|
||||||
|
Nickname: c.Nickname,
|
||||||
|
IsFriend: true,
|
||||||
|
},
|
||||||
|
Elements: m.Elements,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *QQClient) GetForwardMessage(resId string) *message.ForwardMessage {
|
func (c *QQClient) GetForwardMessage(resId string) *message.ForwardMessage {
|
||||||
i, err := c.sendAndWait(c.buildMultiApplyDownPacket(resId))
|
i, err := c.sendAndWait(c.buildMultiApplyDownPacket(resId))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user