Updating Channel Members

Adding & Removing Channel Members

Using the addMembers() method adds the given users as members, while removeMembers() removes them.

var channel = await Client.GetOrCreateChannelWithIdAsync(ChannelType.Messaging, channelId: "my-channel-id");

var filters = new IFieldFilterRule[]
{
  UserFilter.Id.In("other-user-id-1", "other-user-id-2", "other-user-id-3")
};

var users = await Client.QueryUsersAsync(filters);

// Add IStreamUser collection as a members
await channel.AddMembersAsync(users);

// Or add by ID
await channel.AddMembersAsync("some-user-id-1", "some-user-id-2");

// Access channel members via channel.Members, let's remove the first member as an example
var member = channel.Members.First();
await channel.RemoveMembersAsync(member);

// Remove local user from a channel by user ID
var localUser = Client.LocalUserData.User;
await channel.RemoveMembersAsync(localUser.Id);

// Remove multiple users by their ID
await channel.RemoveMembersAsync("some-user-id-1", "some-user-id-2");

Note: You can only add/remove up to 100 members at once.

Members can also be added while creating the channel.

const channel = client.channel('messaging', randomID, {
  members: [
    { user_id: "james_bond", code_name: "007" },
    { user_id: "alec_trevelyan", code_name: "006" },
    { user_id: "bill_fairbanks", code_name: "002" },
});
await channel.create();

Stream Chat has a soft cap of 3000 channel memberships per user. If your use case requires >3000 channel memberships per user, consider removing users from channels or using elevated permissions to allow a user to access channels without membership if your use case allows

Message parameter

You can optionally include a message object that client-side SDKs will use to populate a system message. This works for both add and remove members

await channel.AddMembersAsync(users, hideHistory: default, new StreamMessageRequest
{
  Text = "John has joined the channel"
});

Hide history

When members join a channel you can specify if they have access to the history or not. The history will be shown by default, set true to hide_history parameter to hide it for new members.

await channel.AddMembersAsync(users, hideHistory: true);

Leaving a channel

It is possible for user to leave the channel without moderator-level permissions. Make sure channel members have Leave Own Channel permission.

await channel.RemoveMembersAsync(member);

You can familiarize yourself with all permissions in Permissions section

Adding & Removing Moderators to a Channel

Using the addModerators() method adds the given users as moderators (or updates their role to moderator if already members), while demoteModerators() removes the moderator status.

// Will be implemented soon, raise a GitHub issue if you need this feature https://github.com/GetStream/stream-chat-unity/issues/

These operations can only be performed server-side and up to 100 moderators can be added or removed at once.

© Getstream.io, Inc. All Rights Reserved.