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

# Change Member Scope

> Update CometChat group member scopes in JavaScript apps to change participants between admin, moderator, and participant roles.

## Change Scope of a Group Member

Use `updateGroupMemberScope()` to change a member's scope within a [Group](/sdk/reference/entities#group).

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

    CometChat.updateGroupMemberScope(GUID, UID, CometChat.GROUP_MEMBER_SCOPE.ADMIN).then(
    (response: boolean) => {
    console.log("Group member scope changed", response);
    }, (error: CometChat.CometChatException) => {
    console.log("Group member scope change failed", error);
    }
    );

    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let UID = "UID";
    let scope = CometChat.GROUP_MEMBER_SCOPE.ADMIN;

    CometChat.updateGroupMemberScope(GUID, UID, scope).then(
    response => {
      console.log("Group member scope changed", response);
    }, error => {
      console.log("Group member scope change failed", error);
    }
    );
    ```
  </Tab>
</Tabs>

This method takes the below parameters:

| Parameter | Description                                                                                                                                  |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `UID`     | The UID of the member whose scope you want to change                                                                                         |
| `GUID`    | The GUID of the group                                                                                                                        |
| `scope`   | The new scope: `CometChat.GROUP_MEMBER_SCOPE.ADMIN`, `CometChat.GROUP_MEMBER_SCOPE.MODERATOR`, or `CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT` |

The default scope is `participant`. Only Admins can change member scopes.

On success, the method resolves with `true` (boolean).

## Real-Time Group Member Scope Changed Events

Implement `onGroupMemberScopeChanged()` in `GroupListener` to receive real-time notifications when a member's scope changes.

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

    CometChat.addGroupListener(
    listenerID,
    new CometChat.GroupListener({
    onGroupMemberScopeChanged: (message: CometChat.Action, changedUser: CometChat.User, newScope: string, oldScope: string, changedGroup: CometChat.Group) => {
    console.log("Scope changed", { message, changedUser, newScope, oldScope, changedGroup });
    }
    })
    );

    ```
  </Tab>

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

    CometChat.addGroupListener(
    listenerID,
    new CometChat.GroupListener({
      onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => {
        console.log("Scope changed", {message, changedUser, newScope, oldScope, changedGroup});
      }
    })
    );
    ```
  </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 Scope Changed Events

When fetching previous messages, scope changes appear as [Action](/sdk/reference/messages#action) messages (a subclass of `BaseMessage`).

| Field       | Value/Type                             | Description                    |
| ----------- | -------------------------------------- | ------------------------------ |
| `action`    | `"scopeChanged"`                       | The action type                |
| `actionOn`  | [User](/sdk/reference/entities#user)   | The user whose scope changed   |
| `actionBy`  | [User](/sdk/reference/entities#user)   | The user who changed the scope |
| `actionFor` | [Group](/sdk/reference/entities#group) | The group                      |
| `oldScope`  | `string`                               | The previous scope             |
| `newScope`  | `string`                               | The new scope                  |

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Transfer Group Ownership" icon="arrow-right-arrow-left" href="/sdk/javascript/transfer-group-ownership">
    Transfer ownership of a group to another member
  </Card>

  <Card title="Kick & Ban Members" icon="user-slash" href="/sdk/javascript/group-kick-ban-members">
    Remove or ban members from a group
  </Card>

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

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