Skip to main content
Quick Reference for AI Agents & Developers
  • Change scope: CometChat.updateGroupMemberScope(UID:GUID:scope:onSuccess:onError:)
  • Scopes: .admin, .moderator, .participant
  • Permission: Only admin can change member scopes
  • Related: Add Members · Kick Member · Transfer Ownership

Change Scope of a Group Member

In order to change the scope of a group member, you can use the updateGroupMemberScope() method.

Method Parameters

ParameterTypeDescription
UIDStringThe UID of the member whose scope needs to be changed
GUIDStringThe GUID of the group
scopeMemberScopeNew scope: .admin, .moderator, .participant

MemberScope Enum

ScopeDescriptionPermissions
.participantDefault scopeSend/receive messages
.moderatorElevated privilegesKick/ban members, delete messages
.adminFull privilegesAll moderator + change scopes, add members
Only the admin of the group can change the scope of any member. The default scope of any member is .participant.
let guid = "cometchat-guid-1"
let uid = "cometchat-uid-2"
let scope: CometChat.MemberScope = .admin

CometChat.updateGroupMemberScope(UID: uid, GUID: guid, scope: scope, onSuccess: { (response) in
    print("Scope changed: \(response)")
}, onError: { (error) in
    print("Error: \(error?.errorDescription)")
})
Request Parameters:
ParameterTypeDescription
UIDStringUnique identifier of the member. Example: "cometchat-uid-2"
GUIDStringUnique identifier of the group. Example: "cometchat-guid-1"
scopeMemberScopeNew scope for the member. Example: .admin
Success Response:
ParameterTypeDescription
responseStringSuccess message. Example: "Group member scope changed successfully."
After Scope Change to Admin:
EffectDescription
PermissionsMember now has full admin privileges
ActionsCan change other members’ scopes, add/remove members
EventOther members receive onGroupMemberScopeChanged event
Error Response (CometChatException):
ParameterTypeDescription
errorCodeStringUnique error code. Example: "ERR_GROUP_NOT_JOINED"
errorDescriptionStringHuman-readable error message. Example: "The user is not a member of the group"
Request Parameters:
ParameterTypeDescription
UIDStringUnique identifier of the member. Example: "cometchat-uid-2"
GUIDStringUnique identifier of the group. Example: "cometchat-guid-1"
scopeMemberScopeNew scope for the member. Example: .moderator
Success Response:
ParameterTypeDescription
responseStringSuccess message. Example: "Group member scope changed successfully."
After Scope Change to Moderator:
EffectDescription
PermissionsMember now has moderator privileges
ActionsCan kick/ban members, delete messages
EventOther members receive onGroupMemberScopeChanged event
Request Parameters:
ParameterTypeDescription
UIDStringUnique identifier of the member. Example: "cometchat-uid-2"
GUIDStringUnique identifier of the group. Example: "cometchat-guid-1"
scopeMemberScopeNew scope for the member. Example: .participant
Success Response:
ParameterTypeDescription
responseStringSuccess message. Example: "Group member scope changed successfully."
After Scope Change to Participant:
EffectDescription
PermissionsMember now has basic participant privileges
ActionsCan only send/receive messages
EventOther members receive onGroupMemberScopeChanged event

Real-Time Scope Change Events

In other words, as a member of a group, how do I know when someone’s scope is changed when my app is running? In order to receive real-time events whenever a group member’s scope changes, you will need to implement the onGroupMemberScopeChanged() method of the CometChatGroupDelegate.
class ViewController: UIViewController, CometChatGroupDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        CometChat.groupdelegate = self
    }
    
    func onGroupMemberScopeChanged(action: ActionMessage, scopeChangeduser: User, scopeChangedBy: User, scopeChangedTo: String, scopeChangedFrom: String, group: Group) {
        print("\(scopeChangeduser.name ?? "") scope changed")
        print("From: \(scopeChangedFrom) To: \(scopeChangedTo)")
        print("Changed by: \(scopeChangedBy.name ?? "")")
        print("In group: \(group.name ?? "")")
    }
}

onGroupMemberScopeChanged Parameters

ParameterTypeDescription
actionActionMessageAction message with details
scopeChangeduserUserUser whose scope was changed
scopeChangedByUserUser who changed the scope
scopeChangedToStringNew scope value
scopeChangedFromStringPrevious scope value
groupGroupGroup where change occurred
Event Trigger: Received via CometChatGroupDelegate.onGroupMemberScopeChanged(action:scopeChangeduser:scopeChangedBy:scopeChangedTo:scopeChangedFrom:group:)ActionMessage Object:
ParameterTypeDescription
actionStringAction type. Example: "scopeChanged"
actionOnUserUser whose scope changed. Example: {"uid": "user123", "name": "John Doe"}
actionByUserUser who changed the scope. Example: {"uid": "admin1", "name": "Admin User"}
actionForGroupGroup where change occurred. Example: {"guid": "group123", "name": "My Group"}
oldScopeStringOriginal scope. Example: "participant"
newScopeStringUpdated scope. Example: "moderator"
scopeChangeduser (User Object):
ParameterTypeDescription
uidString?Unique identifier of the user. Example: "user123"
nameString?Display name of the user. Example: "John Doe"
avatarString?URL to the user’s avatar. Example: "https://example.com/avatar.png"
scopeChangedBy (User Object):
ParameterTypeDescription
uidString?Unique identifier of the admin. Example: "admin1"
nameString?Display name of the admin. Example: "Admin User"
Scope Change Details:
ParameterTypeDescription
scopeChangedToStringNew scope value. Example: "moderator"
scopeChangedFromStringPrevious scope value. Example: "participant"
group (Group Object):
ParameterTypeDescription
guidStringUnique group identifier. Example: "group123"
nameString?Group display name. Example: "My Group"

Missed Group Member Scope Changed Events

In other words, as a member of a group, how do I know when someone’s scope is changed when my app is not running? When you retrieve the list of previous messages if a member’s scope has been changed for any group that the logged-in user is a member of, the list of messages will contain an Action message.

Action Message Properties (for missed events)

PropertyTypeDescription
actionString"scopeChanged"
actionOnUserUser whose scope changed
actionByUserUser who changed the scope
actionForGroupGroup where change occurred
oldScopeStringOriginal scope
newScopeStringUpdated scope

Common Error Codes

Error CodeDescriptionResolution
ERR_GROUP_NOT_FOUNDGroup with specified GUID does not existVerify the GUID is correct
ERR_UID_NOT_FOUNDUser with specified UID does not existVerify the user UID
ERR_GROUP_NOT_JOINEDUser is not a member of the groupJoin the group first
ERR_NOT_A_MEMBERTarget user is not a member of the groupUser must be a member
ERR_PERMISSION_DENIEDLogged-in user is not adminOnly admin can change scopes
ERR_CANNOT_CHANGE_OWNER_SCOPECannot change the group owner’s scopeOwner scope cannot be changed
ERR_INVALID_SCOPEInvalid scope value providedUse .admin, .moderator, or .participant