mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
feat: batch kick (#279)
* kick batch * Update group_info.go * Update client.go * Update builders.go --------- Co-authored-by: 源文雨 <41315874+fumiama@users.noreply.github.com>
This commit is contained in:
parent
1d0fdf6983
commit
b49cd23484
@ -1093,21 +1093,23 @@ func (c *QQClient) buildGroupMuteAllPacket(groupCode int64, mute bool) (uint16,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OidbSvc.0x8a0_0
|
// OidbSvc.0x8a0_0
|
||||||
func (c *QQClient) buildGroupKickPacket(groupCode, memberUin int64, kickMsg string, block bool) (uint16, []byte) {
|
func (c *QQClient) buildGroupKickPacket(groupCode int64, kickMsg string, block bool, memberUins ...int64) (uint16, []byte) {
|
||||||
flagBlock := 0
|
flagBlock := 0
|
||||||
if block {
|
if block {
|
||||||
flagBlock = 1
|
flagBlock = 1
|
||||||
}
|
}
|
||||||
|
msgKickList := make([]*oidb.D8A0KickMemberInfo, 0, len(memberUins))
|
||||||
|
for _, memberUin := range memberUins {
|
||||||
|
msgKickList = append(msgKickList, &oidb.D8A0KickMemberInfo{
|
||||||
|
OptUint32Operate: 5,
|
||||||
|
OptUint64MemberUin: memberUin,
|
||||||
|
OptUint32Flag: int32(flagBlock),
|
||||||
|
})
|
||||||
|
}
|
||||||
body := &oidb.D8A0ReqBody{
|
body := &oidb.D8A0ReqBody{
|
||||||
OptUint64GroupCode: groupCode,
|
OptUint64GroupCode: groupCode,
|
||||||
MsgKickList: []*oidb.D8A0KickMemberInfo{
|
MsgKickList: msgKickList,
|
||||||
{
|
KickMsg: []byte(kickMsg),
|
||||||
OptUint32Operate: 5,
|
|
||||||
OptUint64MemberUin: memberUin,
|
|
||||||
OptUint32Flag: int32(flagBlock),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
KickMsg: []byte(kickMsg),
|
|
||||||
}
|
}
|
||||||
b, _ := proto.Marshal(body)
|
b, _ := proto.Marshal(body)
|
||||||
payload := c.packOIDBPackage(2208, 0, b)
|
payload := c.packOIDBPackage(2208, 0, b)
|
||||||
|
@ -726,8 +726,8 @@ func (c *QQClient) quitGroup(groupCode int64) {
|
|||||||
_, _ = c.sendAndWait(c.buildQuitGroupPacket(groupCode))
|
_, _ = c.sendAndWait(c.buildQuitGroupPacket(groupCode))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) kickGroupMember(groupCode, memberUin int64, msg string, block bool) {
|
func (c *QQClient) KickGroupMembers(groupCode int64, msg string, block bool, memberUins ...int64) {
|
||||||
_, _ = c.sendAndWait(c.buildGroupKickPacket(groupCode, memberUin, msg, block))
|
_, _ = c.sendAndWait(c.buildGroupKickPacket(groupCode, msg, block, memberUins...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GroupInfo) removeMember(uin int64) {
|
func (g *GroupInfo) removeMember(uin int64) {
|
||||||
|
@ -389,7 +389,7 @@ func (m *GroupMemberInfo) EditSpecialTitle(title string) {
|
|||||||
|
|
||||||
func (m *GroupMemberInfo) Kick(msg string, block bool) error {
|
func (m *GroupMemberInfo) Kick(msg string, block bool) error {
|
||||||
if m.Uin != m.Group.client.Uin && m.Manageable() {
|
if m.Uin != m.Group.client.Uin && m.Manageable() {
|
||||||
m.Group.client.kickGroupMember(m.Group.Code, m.Uin, msg, block)
|
m.Group.client.KickGroupMembers(m.Group.Code, msg, block, m.Uin)
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
return errors.New("not manageable")
|
return errors.New("not manageable")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user