> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-013b37f0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Ban/Kick Member From A Group

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

The Admin or Moderator of a group can kick a member out of the group using the `kickGroupMember()` method.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    var GUID = "GUID";
    var 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>

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

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

The `kickGroupMember()` takes 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.

## Ban a Group Member

The Admin or Moderator of the group can ban a member from the group using the `banGroupMember()` method.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    var GUID = "GUID";
    var 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>

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

    CometChat.banGroupMember(GUID, UID).then(
        (response: Object) => {
            console.log("Group member banned successfully", response);
        }, (error: CometChat.CometChatException) => {
            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.

## Unban a Banned Group Member from a Group

Only Admin or Moderators of the group can unban a previously banned member from the group using the `unbanGroupMember()` method.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    var GUID = "GUID";
    var 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>

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

    CometChat.unbanGroupMember(GUID, UID).then(
        (response: Object) => {
            console.log("Group member unbanned successfully", response);
        }, (error: CometChat.CometChatException) => {
            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 UID of the group from which user is to be banned |

The unbanned user can now rejoin the group.

## Get List of Banned Members for a Group

In order to fetch the list of banned groups members for a group, you can use the `BannedGroupMembersRequest` class. To use this class i.e to create an object of the BannedGroupMembersRequest class, you need to use the `BannedGroupMembersRequestBuilder` class. The `BannedGroupMembersRequestBuilder` class allows you to set the parameters based on which the banned group members are to be fetched.

The `BannedGroupMembersRequestBuilder` class allows you to set the below parameters:

The `GUID` of the group for which the banned members are to be fetched must be specified in the constructor of the `GroupMembersRequestBuilder` class.

### Set Limit

This method sets the limit i.e. the number of banned members that should be fetched in a single iteration.

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

  <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>
</Tabs>

### Set Search Keyword

This method allows you to set the search string based on which the banned group members are to be fetched.

<Tabs>
  <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>

  <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>
</Tabs>

Finally, once all the parameters are set to the builder class, you need to call the build() method to get the object of the `BannedGroupMembersRequest` class.

Once you have the object of the `BannedGroupMembersRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `GroupMember` objects containing n number of banned members where n is the limit set in the builder class.

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

    bannedMembersRequest.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>

  <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>
</Tabs>

## Real-Time Group Member Kicked/Banned Events

*In other words, as a member of a group, how do I know when someone is banned/kicked when my app is running?*

In order to get real-time events for the kick/ban/unban group members you need to override the following methods of the `GroupListener` class.

1. `onGroupMemberKicked()` - triggered when any group member has been kicked.
2. `onGroupMemberBanned()` - triggered when any group member has been banned.
3. `onGroupMemberUnbanned()` - triggered when any group member has been unbanned.

<Tabs>
  <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>

  <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>
</Tabs>

## Missed Group Member Kicked/Banned Events

*In other words, as a member of a group, how do I know when someone is banned/kicked when my app is not running?*

When you retrieve the list of previous messages if a member has been kicked/banned/unbanned from any group that the logged-in user is a member of, the list of messages will contain an `Action` message. An `Action` message is a sub-class of `BaseMessage` class.

For group member kicked event, the details can be obtained using the below fields of the `Action` class-

1. `action` - `kicked`
2. `actionBy` - User object containing the details of the user who has kicked the member
3. `actionOn` - User object containing the details of the member that has been kicked
4. `actionFor` - Group object containing the details of the Group from which the member was kicked

For group member banned event, the details can be obtained using the below fields of the `Action` class-

1. `action` - `banned`
2. `actionBy` - User object containing the details of the user who has banned the member
3. `actionOn` - User object containing the details of the member that has been banned
4. `actionFor` - Group object containing the details of the Group from which the member was banned

For group member unbanned event, the details can be obtained using the below fields of the `Action` class-

1. `action` - `unbanned`
2. `actionBy` - User object containing the details of the user who has unbanned the member
3. `actionOn` - User object containing the details of the member that has been unbanned
4. `actionFor` - Group object containing the details of the Group from which the member was unbanned
