2.0 KiB
Raw Permalink Blame History

id, title, type, feature, scope, locale, aliases, related_tools, related_pages, prerequisites, negative, last_verified
id title type feature scope locale aliases related_tools related_pages prerequisites negative last_verified
messenger.unread.concept 未读数和标记未读 concept messenger end-user zh
未读数
红点是什么
怎么显示未读数
标记未读
把消息标记为未读
群里多少条没看
get_message_list
messenger
dialog_chat
红点dot和未读数unread是两个独立机制dot 是轻提示unread 按消息粒度统计
未读数总上限受展示限制(一般 99+ 截断),实际 DB 仍精确
标记未读mark_unread只对自己有效且打开会话会自动清除
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 显示红点但不显数字

不支持

  • 不支持「将整个会话彻底清零未读但不打开」(必须打开或调用一键已读)
  • 不支持按消息类型筛选未读(如只看图片未读)
  • 不支持把未读数同步到其他客户端的"动态"提示