Updating Channel Members

Adding & Removing Channel Members

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

await channelClient.AddMembersAsync("channel-type", "channel-id", "thierry", "josh");

await channelClient.RemoveMembersAsync("channel-type", "channel-id", new[] { "thierry", "josh" });

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

Members can also be added while creating the channel.

val channelClient = client.channel("messaging", "general")
            
// Add members with ids "james_bond", "alec_trevelyan" and "bill_fairbanks" 
// during channel creation
channelClient.create(
  memberIds = listOf("james_bond", "alec_trevelyan", "bill_fairbanks"),
  extraData = emptyMap(),
).enqueue()

// Add members with custom extra data during channel creation
val params = CreateChannelParams(
  members = listOf(
    MemberData(userId = "james_bond", extraData = mapOf("code_name" to "007")),
    MemberData(userId = "alec_trevelyan", extraData = mapOf("code_name" to "006")),
    MemberData(userId = "bill_fairbanks", extraData = mapOf("code_name" to "007")),
  ), 
  extraData = emptyMap(),
)
channelClient.create(params).enqueue()

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

var msg = new MessageRequest { Text: "Tommaso joined the channel", UserId: "tommaso" };
await channelClient.AddMembersAsync("channel-type", "channel-id", new[] {"tommaso"}, msg, null);

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 channelClient.AddMembersAsync("channel-type", "channel-id", new[] {"thierry"}, null, new AddMemberOptions { 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 channelClient.RemoveMembersAsync("channel-type", "channel-id", new[] { "my_user_id" });

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.

await channelClient.AddModeratorsAsync("channel-type", "channel-type", new[] { "thierry", "josh" });
await channelClient.DemoteModeratorsAsync("channel-type", "channel-type", new[] { "tommaso" });

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.