diff --git a/client/builders.go b/client/builders.go index 32e3732c..09408ed6 100644 --- a/client/builders.go +++ b/client/builders.go @@ -593,12 +593,20 @@ func (c *QQClient) buildGroupSendingPacket(groupCode int64, r, pkgNum, pkgIndex, // MessageSvc.PbSendMsg func (c *QQClient) buildFriendSendingPacket(target int64, msgSeq, r, pkgNum, pkgIndex, pkgDiv int32, time int64, m []message.IMessageElement) (uint16, []byte) { seq := c.nextSeq() + var ptt *msg.Ptt + if len(m) > 0 { + if p, ok := m[0].(*message.PrivateVoiceElement); ok { + ptt = p.Ptt + m = []message.IMessageElement{} + } + } req := &msg.SendMessageRequest{ RoutingHead: &msg.RoutingHead{C2C: &msg.C2C{ToUin: target}}, ContentHead: &msg.ContentHead{PkgNum: pkgNum, PkgIndex: pkgIndex, DivSeq: pkgDiv}, MsgBody: &msg.MessageBody{ RichText: &msg.RichText{ Elems: message.ToProtoElems(m, false), + Ptt: ptt, }, }, MsgSeq: msgSeq, diff --git a/message/elements.go b/message/elements.go index 93331519..2666c1af 100644 --- a/message/elements.go +++ b/message/elements.go @@ -272,6 +272,10 @@ func (e *GroupVoiceElement) Type() ElementType { return Voice } +func (e *PrivateVoiceElement) Type() ElementType { + return Voice +} + func (e *VoiceElement) Type() ElementType { return Voice }