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 a list length that may already have changed after member events arrived.

Group member fields

FieldTypeDescription
groupIDstringID of the group to which the member belongs.
userIDstringMember's user ID. When a member event arrives, use it together with groupID to find the matching member.
nicknamestringUser's nickname within this group.
faceURLstringAvatar URL stored in the current group member profile.
roleLevelGroupMemberRoleRole in the group: regular member, administrator, or owner.
muteEndTimenumberEnd of the member's mute period as a Unix timestamp in milliseconds. Compare it with the current time to determine whether the member is muted.
joinTimenumberTime when the member joined the group, as a Unix timestamp in milliseconds.
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.
attachedInfostring (optional)SDK attachment data. Parse it only according to a confirmed application contract.

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 provides the complete group member event listeners. Use groupID:userID to identify a group member record:

import { SdkEvent } 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(SdkEvent.OnGroupMemberAdded, handleAdded);
openimsdk.on(SdkEvent.OnGroupMemberDeleted, handleDeleted);
openimsdk.on(SdkEvent.OnGroupMemberInfoChanged, handleChanged);

function removeGroupMemberListeners() {
  openimsdk.off(SdkEvent.OnGroupMemberAdded, handleAdded);
  openimsdk.off(SdkEvent.OnGroupMemberDeleted, handleDeleted);
  openimsdk.off(SdkEvent.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.