56 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: messenger.unread.concept
title: 未读数和标记未读
type: concept
feature: messenger
scope: end-user
locale: zh
aliases:
- 未读数
- 红点是什么
- 怎么显示未读数
- 标记未读
- 把消息标记为未读
- 群里多少条没看
related_tools: [get_message_list]
related_pages: [messenger, dialog_chat]
prerequisites: []
negative:
- 红点dot和未读数unread是两个独立机制dot 是轻提示unread 按消息粒度统计
- 未读数总上限受展示限制(一般 99+ 截断),实际 DB 仍精确
- 标记未读mark_unread只对自己有效且打开会话会自动清除
last_verified: v1.7.90
---
# 未读数和标记未读
「未读数」unread count是每个用户在每个会话里未读消息的条数按 dialog_msg_reads.read_at=null 实时计算。「标记未读」mark_unread是用户主动把已读会话再次置成未读用于稍后处理。
## 定义
- unread会话当前未读消息条数
- unread_one是否仅有 1 条用于「N 条新消息」气泡显示)
- mention未读 + 被 @ 的消息条数
- mention_ids被 @ 的消息 ID 列表
- mark_unread用户主动标记未读1=已标)
- dot服务端轻量推送红点刷新即清
## 关键属性
- 进入会话并向上滚动经过该消息 → 自动标已读
- 主动「标记已读 / 一键已读」→ chunkById 批量写 read_at
- 主动「标记未读」→ mark_unread=1列表上显示红点打开会话自动清除
- 免打扰开启 / 关闭都不影响未读计数
## 与会话列表显示的关系
- 未读 > 0 显示「N」徽标
- mention > 0 显示「@N」徽标,优先级高于普通未读
- mark_unread=1 显示红点但不显数字
## 不支持
- 不支持「将整个会话彻底清零未读但不打开」(必须打开或调用一键已读)
- 不支持按消息类型筛选未读(如只看图片未读)
- 不支持把未读数同步到其他客户端的"动态"提示