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

# Change Member Scope

> Update CometChat group member scopes with the Android SDK to manage participant, moderator, and admin roles.

<Accordion title="AI Integration Quick Reference">
  ```kotlin theme={null}
  // Change member scope (admin only)
  CometChat.updateGroupMemberScope(
      "UID", 
      "GUID", 
      CometChatConstants.SCOPE_MODERATOR,
      object : CallbackListener<String>() {
          override fun onSuccess(message: String) { }
          override fun onError(e: CometChatException) { }
      })
  ```

  **Available Scopes:**

  * `SCOPE_ADMIN` - Full control over group
  * `SCOPE_MODERATOR` - Can moderate members and content
  * `SCOPE_PARTICIPANT` - Regular member (default)

  **Note:** Only group admins can change member scopes.
</Accordion>

## Change Scope of a Group Member

Use `updateGroupMemberScope()` to change a member's role. Only group **Admins** can change scopes.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    private String GUID = "GUID";
    private String UID = "UID";
    private String scope = CometChatConstants.SCOPE_ADMIN;

    CometChat.updateGroupMemberScope(UID, GUID, scope, new CometChat.CallbackListener<String>() {
      @Override
      public void onSuccess(String successMessage) {
        Log.d(TAG, "User scope updated successfully");
      }

      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "User scope update failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

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

    CometChat.updateGroupMemberScope(UID, GUID, scope, object:CometChat.CallbackListener<String>(){
      override fun onSuccess(p0: String?) {
        Log.d(TAG, "User scope updated successfully")
      }

      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "User scope update failed with exception: " + p0?.message)
      }
    })
    ```
  </Tab>
</Tabs>

This method takes the below parameters:

| Parameter | Description                                                                                                                                                                                                               |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UID`     | The UID of the member whose scope you would like to change                                                                                                                                                                |
| `GUID`    | The GUID of the group for which the member's scope needs to be changed                                                                                                                                                    |
| `scope`   | the updated scope of the member. This can be either of the 3 values: 1.`CometChatConstants.SCOPE_ADMIN` (admin) 2.`CometChatConstants.SCOPE_MODERATOR` (moderator) 3.`CometChatConstants.SCOPE_PARTICIPANT` (participant) |

The default scope of any member is `participant`. Only the **Admin** of the group can change the scope of any participant in the group.

## Real-Time Group Member Scope Changed Events

When a member's scope changes, group members receive a real-time event in `onGroupMemberScopeChanged()` of the `GroupListener` class. The callback provides an [`Action`](/sdk/reference/messages#action) object, the updating [`User`](/sdk/reference/entities#user), the updated [`User`](/sdk/reference/entities#user), and the [`Group`](/sdk/reference/entities#group).

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChat.addGroupListener(YourActivity.class.getSimpleName(), new CometChat.GroupListener() {
      @Override
      public void onGroupMemberScopeChanged(Action action, User updatedBy, User updatedUser, String scopeChangedTo, String scopeChangedFrom, Group group) {

      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    CometChat.addGroupListener("ListenerID", object : CometChat.GroupListener() {
      override fun onGroupMemberScopeChanged(action: Action, updatedBy: User, updatedUser: User, scopeChangedTo: String, scopeChangedFrom: String, group: Group) {

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

## Missed Group Member Scope Changed Events

When fetching message history, scope changes appear as [`Action`](/sdk/reference/messages#action) messages with these fields:

1. `action` - `scopeChanged`
2. `actionOn` - [`User`](/sdk/reference/entities#user) object containing the details of the user whos scope has been changed
3. `actionBy` - [`User`](/sdk/reference/entities#user) object containing the details of the user who changed the scope of the member
4. `actionFor` - [`Group`](/sdk/reference/entities#group) object containing the details of the group in which the member scope was changed
5. `oldScope` - The original scope of the member
6. `newScope` - The updated scope of the member

<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 with specific scopes
  </Card>

  <Card title="Kick Member" icon="user-minus" href="/sdk/android/group-kick-member">
    Remove members from groups
  </Card>

  <Card title="Transfer Ownership" icon="user-shield" href="/sdk/android/transfer-group-ownership">
    Transfer group ownership to another admin
  </Card>

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