> ## Documentation Index
> Fetch the complete documentation index at: https://www.cometchat.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Kick/Ban Member

> Kick, ban, and unban CometChat group members with the Android SDK to manage group access and membership.

<Accordion title="AI Integration Quick Reference">
  ```kotlin theme={null}
  // Kick a member (can rejoin)
  CometChat.kickGroupMember("UID", "GUID", object : CallbackListener<String>() {
      override fun onSuccess(message: String) { }
      override fun onError(e: CometChatException) { }
  })

  // Ban a member (cannot rejoin without unban)
  CometChat.banGroupMember("UID", "GUID", callback)

  // Unban a member
  CometChat.unbanGroupMember("UID", "GUID", callback)
  ```

  **Note:** Only admins and moderators can kick, ban, or unban members.
</Accordion>

Admins and moderators can kick, ban, or unban group members. Kicked users can rejoin; banned users cannot until unbanned.

## 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="Java">
    ```java theme={null}
    private String UID = "UID";
    private String GUID = "GUID";

    CometChat.kickGroupMember(UID, GUID, new CometChat.CallbackListener<String>() {
      @Override
      public void onSuccess(String successMessage) {
        Log.d(TAG, "Group member kicked successfully");
      }
      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "Group member kicking failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val GUID:String="GUID"
    val UID:String="UID"

    CometChat.kickGroupMember(UID,GUID,object :CometChat.CallbackListener<String>(){
      override fun onSuccess(p0: String?) {
        Log.d(TAG, "Group member kicked successfully")
      }
      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "Group member kicking failed with exception: " + p0?.message)
      }
    })
    ```
  </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="Java">
    ```java theme={null}
    private String UID = "UID";
    private String GUID = "GUID";

    CometChat.banGroupMember(UID, GUID, new CometChat.CallbackListener<String>() {
      @Override
      public void onSuccess(String successMessage) {
        Log.d(TAG, "Group member banned successfully");
      }
      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "Group member banning failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val GUID:String="GUID"
    val UID:String="UID"

    CometChat.banGroupMember(UID,GUID,object:CometChat.CallbackListener<String>(){
      override fun onSuccess(p0: String?) {
        Log.d(TAG, "Group member banned successfully")
      }
      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "Group member banning failed with exception: " + p0?.message)
      }
    })
    ```
  </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 group 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="Java">
    ```java theme={null}
    private String UID = "UID";
    private String GUID = "GUID";

    CometChat.unbanGroupMember(UID, GUID, new CometChat.CallbackListener<String>() {
      @Override
      public void onSuccess(String successMessage) {
        Log.d(TAG, "Group Member unbanned successfully");
      }
      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "Group Member unbanning failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val GUID:String="GUID"
    val UID:String="UID"

    CometChat.unbanGroupMember(UID,GUID,object :CometChat.CallbackListener<String>(){
      override fun onSuccess(p0: String?) {
        Log.d(TAG, "Group Member unbanned successfully")
      }
      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "Group Member unbanning failed with exception: " + p0?.message)
      }
    })
    ```
  </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

Use `BannedGroupMembersRequestBuilder` with the group GUID to fetch banned members.

### Set Limit

Set the number of banned members to fetch per request.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BannedGroupMembersRequest bannedGroupMembersRequest = new BannedGroupMembersRequest.BannedGroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val bannedGroupMembersRequest = BannedGroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build()
    ```
  </Tab>
</Tabs>

### Set Search Keyword

Filter banned members by a search string.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BannedGroupMembersRequest bannedGroupMembersRequest = new BannedGroupMembersRequest.BannedGroupMembersRequestBuilder(GUID)
      .setSearchKeyword("abc")
      .build();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val bannedGroupMembersRequest = BannedGroupMembersRequestBuilder(GUID)
      .setSearchKeyword("CometChat")
      .build()
    ```
  </Tab>
</Tabs>

### Fetch Banned Members

After configuring the builder, call `build()` then `fetchNext()` to retrieve banned members.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    private BannedGroupMembersRequest bannedGroupMembersRequest = null;
    private String GUID = "GUID";
    private int limit = 30;

    bannedGroupMembersRequest = new BannedGroupMembersRequest.BannedGroupMembersRequestBuilder(GUID).setLimit(limit).build();

    bannedGroupMembersRequest.fetchNext(new CometChat.CallbackListener<List<GroupMember>>(){
      @Override
      public void onSuccess(List <GroupMember> list) {
        Log.d(TAG, "Banned Group Member list fetched successfully: " + list.size());
      }
      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "Banned Group Member list fetching failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    var bannedGroupMembersRequest:BannedGroupMembersRequest?=null
    val GUID:String="GUID"
    val limit:Int=30

    bannedGroupMembersRequest=BannedGroupMembersRequest.BannedGroupMembersRequestBuilder(GUID).setLimit(limit).build()

    bannedGroupMembersRequest?.fetchNext(object :CometChat.CallbackListener<List<GroupMember>>(){
      override fun onSuccess(p0: List<GroupMember>?) {
        Log.d(TAG, "Banned Group Member list fetched successfully: " + p0?.size)
      }
      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "Banned Group Member list fetching failed with exception: " + p0?.message)
      }
    })
    ```
  </Tab>
</Tabs>

## Real-Time Group Member Kicked/Banned Events

When a member is kicked, banned, or unbanned, group members receive real-time events via the `GroupListener` class. The callbacks provide an [`Action`](/sdk/reference/messages#action) object, the affected [`User`](/sdk/reference/entities#user), the acting [`User`](/sdk/reference/entities#user), and the [`Group`](/sdk/reference/entities#group).

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChat.addGroupListener(GroupChatActivity.class.getSimpleName(), new CometChat.GroupListener() {
      @Override
      public void onGroupMemberKicked(Action action, User kickedUser, User kickedBy, Group kickedFrom) {

      }

      @Override
      public void onGroupMemberBanned(Action action, User bannedUser, User bannedBy, Group bannedFrom) {

      }

      @Override
      public void onGroupMemberUnbanned(Action action, User unbannedUser, User unbannedBy, Group unbannedFrom) {

      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    CometChat.addGroupListener(MainActivity::class.java.simpleName, object : GroupListener() {
      override fun onGroupMemberKicked(action: Action?, kickedUser: User?, kickedBy: User?, kickedFrom: Group?) {}

      override fun onGroupMemberBanned(action: Action?, bannedUser: User?, bannedBy: User?, bannedFrom: Group?) {}

      override fun onGroupMemberUnbanned(action: Action?, unbannedUser: User?, unbannedBy: User?, unbannedFrom: Group?) {}

    })
    ```
  </Tab>
</Tabs>

## Missed Group Member Kicked/Banned Events

When fetching message history, kick/ban/unban actions appear as [`Action`](/sdk/reference/messages#action) messages with these fields:

1. `action` - `kicked`
2. `actionBy` - [`User`](/sdk/reference/entities#user) object containing the details of the user who has kicked the member
3. `actionOn` - [`User`](/sdk/reference/entities#user) object containing the details of the member that has been kicked
4. `actionFor` - [`Group`](/sdk/reference/entities#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`](/sdk/reference/messages#action) class-

1. `action` - `banned`
2. `actionBy` - [`User`](/sdk/reference/entities#user) object containing the details of the user who has banned the member
3. `actionOn` - [`User`](/sdk/reference/entities#user) object containing the details of the member that has been banned
4. `actionFor` - [`Group`](/sdk/reference/entities#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`](/sdk/reference/messages#action) class-

1. `action` - `unbanned`
2. `actionBy` - [`User`](/sdk/reference/entities#user) object containing the details of the user who has unbanned the member
3. `actionOn` - [`User`](/sdk/reference/entities#user) object containing the details of the member that has been unbanned
4. `actionFor` - [`Group`](/sdk/reference/entities#group) object containing the details of the Group from which the member was unbanned

<Warning>
  Always remove group listeners when they're no longer needed (e.g., in `onDestroy()` or when navigating away). Failing to remove listeners can cause memory leaks and duplicate event handling.
</Warning>

***

## Next Steps

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

  <Card title="Change Member Scope" icon="user-shield" href="/sdk/android/group-change-member-scope">
    Update member roles and permissions
  </Card>

  <Card title="Retrieve Members" icon="users" href="/sdk/android/retrieve-group-members">
    Fetch list of group members
  </Card>

  <Card title="Group Listeners" icon="bell" href="/sdk/android/real-time-listeners">
    Handle real-time group events
  </Card>
</CardGroup>
