// 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();