mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-06-19 05:55:05 +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] 获取/刷新好友列表
|
||||
@ -61,6 +61,6 @@ qq-android协议的golang实现 移植于mirai
|
||||
- [x] 群设置 (全体禁言/群名)
|
||||
- [x] 修改群成员Card
|
||||
- [x] 修改群成员头衔
|
||||
- [ ] 群成员邀请
|
||||
- [ ] ~~群成员邀请~~
|
||||
- [x] 群成员禁言/解除禁言
|
||||
- [x] T出群成员
|
||||
|
@ -454,6 +454,40 @@ func (c *QQClient) buildFriendSendingPacket(target int64, msgSeq, r int32, time
|
||||
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
|
||||
func (c *QQClient) buildOffPicUpPacket(target int64, md5 []byte, size int32) (uint16, []byte) {
|
||||
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 {
|
||||
i, err := c.sendAndWait(c.buildMultiApplyDownPacket(resId))
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user