diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts
index 8e544b5..4ecf2fa 100644
--- a/src/onebot11/constructor.ts
+++ b/src/onebot11/constructor.ts
@@ -271,11 +271,21 @@ export class OB11Constructor {
                     log("收到群群员禁言提示", groupElement)
                     const memberUid = groupElement.shutUp.member.uid
                     const adminUid = groupElement.shutUp.admin.uid
-                    const memberUin = (await getGroupMember(msg.peerUid, null, memberUid))?.uin || (await NTQQApi.getUserDetailInfo(memberUid))?.uin
+                    let memberUin: string = ""
+                    let duration = parseInt(groupElement.shutUp.duration)
+                    let sub_type: "ban" | "lift_ban" = duration > 0 ? "ban" : "lift_ban"
+                    if (memberUid){
+                        memberUin = (await getGroupMember(msg.peerUid, null, memberUid))?.uin || (await NTQQApi.getUserDetailInfo(memberUid))?.uin
+                    }
+                    else {
+                        memberUin = "0";  // 0表示全员禁言
+                        if (duration > 0) {
+                            duration = -1
+                        }
+                    }
                     const adminUin = (await getGroupMember(msg.peerUid, null, adminUid))?.uin || (await NTQQApi.getUserDetailInfo(adminUid))?.uin
-                    const duration = parseInt(groupElement.shutUp.duration)
                     if (memberUin && adminUin) {
-                        return new OB11GroupBanEvent(parseInt(msg.peerUid), parseInt(memberUin), parseInt(adminUin), duration, duration > 0 ? "ban" : "lift_ban");
+                        return new OB11GroupBanEvent(parseInt(msg.peerUid), parseInt(memberUin), parseInt(adminUin), duration, sub_type);
                     }
                 }
             }