> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Ban Or Kick Member From A Group

> Kick, ban, and unban CometChat group members in JavaScript apps when the logged-in user is an admin or moderator.

There are certain actions that can be performed on the group members:

1. Kick a member from the group
2. Ban a member from the group
3. Unban a member from the group
4. Update the scope of the member of the group

All the above actions can only be performed by the **Admin** or the **Moderator** of the group.

## Kick a Group Member

Admins or Moderators can remove a member using `kickGroupMember()`. The kicked user can rejoin the group later.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let UID: string = "UID";

    CometChat.kickGroupMember(GUID, UID).then(
    (response: boolean) => {
    console.log("Group member kicked successfully", response);
    }, (error: CometChat.CometChatException) => {
    console.log("Group member kicking failed with error", error);
    }
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let UID = "UID";

    CometChat.kickGroupMember(GUID, UID).then(
      (response) => {
        console.log("Group member kicked successfully", response);
      }, (error) => {
        console.log("Group member kicking failed with error", error);
      }
    );
    ```
  </Tab>
</Tabs>

The `kickGroupMember()` takes the following parameters:

| Parameter | Description                                           |
| --------- | ----------------------------------------------------- |
| `UID`     | The UID of the user to be kicked.                     |
| `GUID`    | The GUID of the group from which user is to be kicked |

The kicked user will be no longer part of the group and can not perform any actions in the group, but the kicked user can rejoin the group.

On success, the method resolves with a `boolean` value (`true`) confirming the operation.

## Ban a Group Member

Admins or Moderators can ban a member using `banGroupMember()`. Unlike kicked users, banned users cannot rejoin until unbanned.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let UID: string = "UID";

    CometChat.banGroupMember(GUID, UID).then(
    (response: boolean) => {
    console.log("Group member banned successfully", response);
    }, (error: CometChat.CometChatException) => {
    console.log("Group member banning failed with error", error);
    }
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    const GUID = "GUID";
    const UID = "UID";

    CometChat.banGroupMember(GUID, UID).then(
    response => {
      console.log("Group member banned successfully", response);
    }, error => {
      console.log("Group member banning failed with error", error);
    }
    );
    ```
  </Tab>
</Tabs>

The `banGroupMember()` method takes the following parameters:

| Parameter | Description                                           |
| --------- | ----------------------------------------------------- |
| `UID`     | The UID of the user to be banned                      |
| `GUID`    | The GUID of the group from which user is to be banned |

The banned user will be no longer part of the group and can not perform any actions in the group. A banned user cannot rejoin the same group without being unbanned.

On success, the method resolves with a `boolean` value (`true`) confirming the operation.

## Unban a Group Member

Admins or Moderators can unban a previously banned member using `unbanGroupMember()`.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let UID: string = "UID";

    CometChat.unbanGroupMember(GUID, UID).then(
    (response: boolean) => {
    console.log("Group member unbanned successfully", response);
    }, (error: CometChat.CometChatException) => {
    console.log("Group member unbanning failed with error", error);
    }
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    const GUID = "GUID";
    const UID = "UID";

    CometChat.unbanGroupMember(GUID, UID).then(
    response => {
      console.log("Group member unbanned successfully", response);
    }, error => {
      console.log("Group member unbanning failed with error", error);
    }
    );
    ```
  </Tab>
</Tabs>

The `unbanGroupMember()` method takes the following parameters

| Parameter | Description                                             |
| --------- | ------------------------------------------------------- |
| `UID`     | The UID of the user to be unbanned                      |
| `GUID`    | The GUID of the group from which user is to be unbanned |

Once unbanned, the user can rejoin the group.

On success, the method resolves with a `boolean` value (`true`) confirming the operation.

## Get List of Banned Members for a Group

Use `BannedMembersRequestBuilder` to fetch banned members of a [Group](/sdk/reference/entities#group). The GUID must be specified in the constructor.

### Set Limit

Sets the number of banned members to fetch per request.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let bannedGroupMembersRequest: CometChat.BannedMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let bannedGroupMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
      																.setLimit(limit)
      																.build();
    ```
  </Tab>
</Tabs>

### Set Search Keyword

Filters banned members by a search string.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let searchKeyword: string = "super";
    let bannedGroupMembersRequest: CometChat.BannedMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setSearchKeyword(searchKeyword)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let searchKeyword = "super";
    let bannedGroupMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
      																.setLimit(limit)
      																.setSearchKeyword(searchKeyword)
      																.build();
    ```
  </Tab>
</Tabs>

Once configured, call `build()` to create the request, then `fetchNext()` to retrieve banned members.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let bannedGroupMembersRequest: CometChat.BannedMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build();

    bannedGroupMembersRequest.fetchNext().then(
    (bannedMembers: CometChat.GroupMember[]) => {
    console.log("Banned Group Member list fetched successfully:", bannedMembers);
    }, (error: CometChat.CometChatException) => {
    console.log("Banned Group Member list fetching failed with exception:", error);
    }
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let bannedGroupMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID)
     .setLimit(limit)
     .build();

    bannedGroupMembersRequest.fetchNext().then(
     (bannedMembers) => {
     console.log("Banned Group Member list fetched successfully:", bannedMembers);
     }, (error) => {
     console.log("Banned Group Member list fetching failed with exception:", error);
     }
    );
    ```
  </Tab>
</Tabs>

The `fetchNext()` method returns an array of [`GroupMember`](/sdk/reference/entities#groupmember) objects representing the banned members of the group.

## Real-Time Kick/Ban/Unban Events

Implement these `GroupListener` methods to receive real-time notifications:

| Method                    | Triggered When       |
| ------------------------- | -------------------- |
| `onGroupMemberKicked()`   | A member is kicked   |
| `onGroupMemberBanned()`   | A member is banned   |
| `onGroupMemberUnbanned()` | A member is unbanned |

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let listenerID: string = "UNIQUE_LISTENER_ID";

    CometChat.addGroupListener(
    listenerID,
    new CometChat.GroupListener({
    onGroupMemberKicked: (message: CometChat.Action, kickedUser: CometChat.User, kickedBy: CometChat.User, kickedFrom: CometChat.Group) => {
    console.log("User kicked", { message, kickedUser, kickedBy, kickedFrom });
    },
    onGroupMemberBanned: (message: CometChat.Action, bannedUser: CometChat.User, bannedBy: CometChat.User, bannedFrom: CometChat.Group) => {
    console.log("User banned", { message, bannedUser, bannedBy, bannedFrom });
    },
    onGroupMemberUnbanned: (message: CometChat.Action, unbannedUser: CometChat.User, unbannedBy: CometChat.User, unbannedFrom: CometChat.Group) => {
    console.log("User unbanned", { message, unbannedUser, unbannedBy, unbannedFrom });
    }
    })
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let listenerID = "UNIQUE_LISTENER_ID";

    CometChat.addGroupListener(
    listenerID,
    new CometChat.GroupListener({
      onGroupMemberKicked: (message, kickedUser, kickedBy, kickedFrom) => {
        console.log("User kicked", { message, kickedUser, kickedBy, kickedFrom });
      },
      onGroupMemberBanned: (message, bannedUser, bannedBy, bannedFrom) => {
        console.log("User banned", { message, bannedUser, bannedBy, bannedFrom });
      },
      onGroupMemberUnbanned: (message, unbannedUser, unbannedBy,unbannedFrom) => {
        console.log("User unbanned", {message, unbannedUser, unbannedBy, unbannedFrom});
      }
    })
    );
    ```
  </Tab>
</Tabs>

<Warning>
  Always remove group listeners when they're no longer needed (e.g., on component unmount or page navigation). Failing to remove listeners can cause memory leaks and duplicate event handling.

  ```javascript theme={null}
  CometChat.removeGroupListener("UNIQUE_LISTENER_ID");
  ```
</Warning>

## Missed Group Member Kicked/Banned Events

When fetching previous messages, kick/ban/unban actions appear as [Action](/sdk/reference/messages#action) messages (a subclass of `BaseMessage`).

**Kicked event:**

| Field       | Value/Type                             | Description                    |
| ----------- | -------------------------------------- | ------------------------------ |
| `action`    | `"kicked"`                             | The action type                |
| `actionBy`  | [User](/sdk/reference/entities#user)   | The user who kicked the member |
| `actionOn`  | [User](/sdk/reference/entities#user)   | The member who was kicked      |
| `actionFor` | [Group](/sdk/reference/entities#group) | The group                      |

**Banned event:**

| Field       | Value/Type                             | Description                    |
| ----------- | -------------------------------------- | ------------------------------ |
| `action`    | `"banned"`                             | The action type                |
| `actionBy`  | [User](/sdk/reference/entities#user)   | The user who banned the member |
| `actionOn`  | [User](/sdk/reference/entities#user)   | The member who was banned      |
| `actionFor` | [Group](/sdk/reference/entities#group) | The group                      |

**Unbanned event:**

| Field       | Value/Type                             | Description                      |
| ----------- | -------------------------------------- | -------------------------------- |
| `action`    | `"unbanned"`                           | The action type                  |
| `actionBy`  | [User](/sdk/reference/entities#user)   | The user who unbanned the member |
| `actionOn`  | [User](/sdk/reference/entities#user)   | The member who was unbanned      |
| `actionFor` | [Group](/sdk/reference/entities#group) | The group                        |

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Add Members" icon="user-plus" href="/sdk/javascript/group-add-members">
    Add new members to a group
  </Card>

  <Card title="Change Member Scope" icon="user-shield" href="/sdk/javascript/group-change-member-scope">
    Promote or demote group members
  </Card>

  <Card title="Retrieve Group Members" icon="users" href="/sdk/javascript/retrieve-group-members">
    Fetch the list of members in a group
  </Card>

  <Card title="Leave a Group" icon="right-from-bracket" href="/sdk/javascript/leave-group">
    Allow members to leave a group
  </Card>
</CardGroup>
