Skip to main content
Quick Reference for AI Agents & Developers
// Change member scope (admin only)
await CometChat.updateGroupMemberScope(
  "group_guid",
  "user_uid",
  CometChat.GROUP_MEMBER_SCOPE.MODERATOR  // ADMIN, MODERATOR, or PARTICIPANT
);

// Scopes: ADMIN (full control) > MODERATOR (manage members) > PARTICIPANT (basic)

// Listen for scope changes
CometChat.addGroupListener("LISTENER", new CometChat.GroupListener({
  onGroupMemberScopeChanged: (msg, user, newScope, oldScope, group) => {
    console.log(user.getName(), "changed from", oldScope, "to", newScope);
  }
}));
Change a member’s scope to promote or demote them within a group.
Availability: SDK, API, UI KitsOnly admins can change member scopes.

Member Scopes

ScopePermissions
ADMINFull control - manage group, members, and settings
MODERATORCan manage participants, kick/ban members
PARTICIPANTRegular member - send/receive messages

Change Scope

const GUID = "group-123";
const UID = "user1";
const newScope = CometChat.GROUP_MEMBER_SCOPE.MODERATOR;

CometChat.updateGroupMemberScope(GUID, UID, newScope).then(
  (response) => console.log("Scope updated:", response),
  (error) => console.log("Failed:", error)
);

Promote to Admin

CometChat.updateGroupMemberScope(
  "group-123",
  "user1",
  CometChat.GROUP_MEMBER_SCOPE.ADMIN
);

Demote to Participant

CometChat.updateGroupMemberScope(
  "group-123",
  "user1",
  CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT
);

Real-Time Scope Change Events

Listen for scope changes:
const listenerID = "GROUP_LISTENER";

CometChat.addGroupListener(
  listenerID,
  new CometChat.GroupListener({
    onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => {
      console.log(`${changedUser.getName()} scope changed from ${oldScope} to ${newScope}`);
    }
  })
);

// Remove listener when done
CometChat.removeGroupListener(listenerID);

Missed Scope Change Events

When fetching message history, scope changes appear as Action messages:
messages.forEach((message) => {
  if (message.getCategory() === "action" && message.getAction() === "scopeChanged") {
    const user = message.getActionOn();
    const by = message.getActionBy();
    const oldScope = message.getOldScope();
    const newScope = message.getNewScope();
    
    console.log(`${by.getName()} changed ${user.getName()} from ${oldScope} to ${newScope}`);
  }
});

Next Steps