1
0
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:
Zheng Li 2023-08-01 10:29:04 +08:00 committed by GitHub
parent 1d0fdf6983
commit b49cd23484
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 12 deletions

View File

@ -1093,20 +1093,22 @@ func (c *QQClient) buildGroupMuteAllPacket(groupCode int64, mute bool) (uint16,
}
// 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
if block {
flagBlock = 1
}
body := &oidb.D8A0ReqBody{
OptUint64GroupCode: groupCode,
MsgKickList: []*oidb.D8A0KickMemberInfo{
{
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{
OptUint64GroupCode: groupCode,
MsgKickList: msgKickList,
KickMsg: []byte(kickMsg),
}
b, _ := proto.Marshal(body)

View File

@ -726,8 +726,8 @@ func (c *QQClient) quitGroup(groupCode int64) {
_, _ = c.sendAndWait(c.buildQuitGroupPacket(groupCode))
}
func (c *QQClient) kickGroupMember(groupCode, memberUin int64, msg string, block bool) {
_, _ = c.sendAndWait(c.buildGroupKickPacket(groupCode, memberUin, msg, block))
func (c *QQClient) KickGroupMembers(groupCode int64, msg string, block bool, memberUins ...int64) {
_, _ = c.sendAndWait(c.buildGroupKickPacket(groupCode, msg, block, memberUins...))
}
func (g *GroupInfo) removeMember(uin int64) {

View File

@ -389,7 +389,7 @@ func (m *GroupMemberInfo) EditSpecialTitle(title string) {
func (m *GroupMemberInfo) Kick(msg string, block bool) error {
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
} else {
return errors.New("not manageable")