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 加入了一个新群