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
| Scope | Permissions |
|---|
ADMIN | Full control - manage group, members, and settings |
MODERATOR | Can manage participants, kick/ban members |
PARTICIPANT | Regular member - send/receive messages |
Change Scope
JavaScript
TypeScript
Async/Await
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)
);
const GUID: string = "group-123";
const UID: string = "user1";
const newScope: string = CometChat.GROUP_MEMBER_SCOPE.MODERATOR;
CometChat.updateGroupMemberScope(GUID, UID, newScope).then(
(response: boolean) => console.log("Scope updated:", response),
(error: CometChat.CometChatException) => console.log("Failed:", error)
);
const changeMemberScope = async () => {
try {
const GUID = "group-123";
const UID = "user1";
const newScope = CometChat.GROUP_MEMBER_SCOPE.MODERATOR;
const response = await CometChat.updateGroupMemberScope(GUID, UID, newScope);
console.log("Scope updated:", response);
} catch (error) {
console.log("Failed:", error);
}
};
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