// Create a new channel type with message counting enabled await client.createChannelType({ name: "public", count_messages: true, });
Channel Message Count
Message counting
Stream Chat can keep track of the number of messages in a channel. This is useful for displaying message counts in your UI.
Message counting is disabled by default and can be enabled on a channel type level by setting the count_messages
option to true
when creating or updating a channel type.
Message counting only works on newly created channels. Existing channels will not have their message count updated when this feature is enabled.
Enabling message counting
client.create_channel_type({ "name": "public", "count_messages": True, })
client.create_channel_type({ 'name' => 'public', 'count_messages' => true, })
$client->createChannelType([ 'name' => 'public', 'count_messages' => true, ]);
ChannelType.create("public") .countMessages(true) .request();
await channelTypeClient.CreateChannelTypeAsync(new ChannelTypeRequest { Name = "public", CountMessages = true, });
newChannelType := &ChannelType{ // Copy the default settings. ChannelConfig: DefaultChannelConfig, } newChannelType.Name = "public" newChannelType.CountMessages = true client.CreateChannelType(newChannelType)
Retrieving message count
When message counting is enabled for a channel type, the message count can be retrieved from the channel object.
When you query or watch a channel, the message count will be available in the message_count
field of the channel object.
val channelClient = client.channel("messaging", "general") channelClient.watch().enqueue { result -> if (result.isSuccess) { val channel = result.data() val count = channel.messageCount // Int } }
const channel = client.channel("messaging", "general"); await channel.watch(); console.log(channel.state.channel.message_count);
let controller = client.channelController(for: .init(type: .messaging, id: "general")) controller.synchronize { error in if error == nil { let count = controller.channel?.messageCount print(count ?? 0) } }
final channel = client.channel('messaging', id: 'general'); await channel.watch(); print(channel.extraData['message_count']);
const channel = client.channel("messaging", "general"); await channel.watch(); console.log(channel.state.channel.message_count);
channel = client.channel('messaging', 'general') channel.query puts channel['message_count']
int32 MessageCount = Channel->GetMessageCount();
channel = client.channel('messaging', 'general') channel.watch() print(channel['message_count'])
$channel = $client->Channel('messaging', 'general'); $channel->watch(); echo $channel->getChannel()['message_count'];
var channel = await client.GetOrCreateChannelAsync("messaging", "general"); Console.WriteLine(channel.MessageCount);
channel, _ := client.QueryChannel(ctx, "messaging", "general", nil) fmt.Println(channel.MessageCount)
var channel = await Client.GetOrCreateChannelAsync(ChannelType.Messaging, "general"); Debug.Log(channel.MessageCount);
Channel channel = client.channel("messaging", "general").get().execute().getChannel(); int count = channel.getMessageCount();