Browse SDKs · WASM
SDKsWASM

List group members

Retrieve members of a specified group using pagination.

Copy

Parameters

ParameterTypeRequiredDescription
groupIDstringYesID of the target group.
filterGroupMemberFilterYesMember role filter.
offsetnumberYesStarting offset. Pass 0 for the first page.
countnumberYesMaximum number of members to retrieve.
Enum valueNumeric valueMeaning
GroupMemberFilter.All0All members.
GroupMemberFilter.Owner1Group owner only.
GroupMemberFilter.Admin2Administrators only.
GroupMemberFilter.Normal3Regular members only.
GroupMemberFilter.AdminAndNormal4Administrators and regular members.
GroupMemberFilter.AdminAndOwner5Administrators and the group owner.
import { GroupMemberFilter } from '@openim/wasm-client-sdk';

const { data: members } = await openimsdk.getGroupMemberList({
  groupID,
  filter: GroupMemberFilter.All,
  offset: 0,
  count: 50,
});

When the Promise resolves, data is the current page of GroupMemberItem[]. For the next page, increase offset by the number of items requested, not by the length of an array that may already contain event-driven updates.

Group member fields

FieldTypeDescription
groupIDstringID of the group to which the member belongs.
userIDstringMember's user ID. Together with groupID, it forms the stable identifier for the member record.
nicknamestringUser's nickname within this group.
faceURLstringSnapshot of the group member's avatar URL.
roleLevelGroupMemberRoleRole in the group: regular member, administrator, or owner.
muteEndTimenumberTime when the member's mute period ends. Compare it with the current time to determine whether the member is muted.
joinTimenumberTime when the member joined the group.
joinSourceGroupJoinSourceHow the member joined, such as by invitation, search, or QR code.
inviterUserIDstringUser ID of the member who sent the invitation. It may be empty when there was no inviter.
operatorUserIDstringUser ID of the operator who most recently created or updated the member record.
exstringApplication-defined extension string for the group member.

nickname and roleLevel belong to the current group context and may differ for the same user in other groups. Do not overwrite the account-level PublicUserItem with group member profile data.

The SDK does not provide a separate API for listing muted members. If needed, retrieve the member list page by page and filter it by muteEndTime.

Listen for member changes

This page is the canonical reference for group member event listeners. Use groupID:userID as the merge key for member profiles:

import { CbEvents } from '@openim/wasm-client-sdk';

const handleAdded = ({ data }) => upsertGroupMember(data);
const handleDeleted = ({ data }) =>
  removeGroupMember(data.groupID, data.userID);
const handleChanged = ({ data }) => upsertGroupMember(data);

openimsdk.on(CbEvents.OnGroupMemberAdded, handleAdded);
openimsdk.on(CbEvents.OnGroupMemberDeleted, handleDeleted);
openimsdk.on(CbEvents.OnGroupMemberInfoChanged, handleChanged);

function removeGroupMemberListeners() {
  openimsdk.off(CbEvents.OnGroupMemberAdded, handleAdded);
  openimsdk.off(CbEvents.OnGroupMemberDeleted, handleDeleted);
  openimsdk.off(CbEvents.OnGroupMemberInfoChanged, handleChanged);
}

If a member is added or removed while you are paging through the list, reset pagination and reload from the first page. Call removeGroupMemberListeners() when the component unmounts, the user logs out, or the active account changes.