diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt index 3754f973e..0e9cee6be 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt @@ -132,9 +132,9 @@ internal class OnlinePush { bot.getGroupByUin(groupUin).let { group -> val member = group[target] as MemberImpl this.discardExact(1) - return MemberLeaveEvent.Kick(member, group.members[readUInt().toLong()].also { - group.members.delegate.remove(it) - }) + return MemberLeaveEvent.Kick(member.also { + group.members.delegate.remove(member) + }, group.members[readUInt().toLong()]) } } } @@ -187,14 +187,18 @@ internal class OnlinePush { ) } } else { - if (target == bot.uin) { - - } - val member = group[target] - if (time == 0) { - MemberUnmuteEvent(operator = operator, member = member) + return if (target == bot.uin) { + if (time == 0) { + BotUnmuteEvent(operator) + } else + BotMuteEvent(durationSeconds = time, operator = operator) } else { - MemberMuteEvent(operator = operator, member = member, durationSeconds = time) + val member = group[target] + if (time == 0) { + MemberUnmuteEvent(operator = operator, member = member) + } else { + MemberMuteEvent(operator = operator, member = member, durationSeconds = time) + } } } } diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt index b33e6c205..b1b2722bb 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt @@ -129,12 +129,27 @@ data class BotGroupPermissionChangeEvent( */ data class BotMuteEvent( val durationSeconds: Int, - override val group: Group, /** - * 操作人. 为 null 则为机器人操作 + * 操作人. */ - val operator: Member? -) : GroupEvent, Packet, BotPassiveEvent + val operator: Member +) : GroupEvent, Packet, BotPassiveEvent { + override val group: Group + get() = operator.group +} + +/** + * Bot 被取消禁言 + */ +data class BotUnmuteEvent( + /** + * 操作人. + */ + val operator: Member +) : GroupEvent, Packet, BotPassiveEvent { + override val group: Group + get() = operator.group +} /** * Bot 加入了一个新群