This commit is contained in:
Your Name
2026-09-01 15:31:05 +08:00
parent 1f3addcf79
commit 2fc864cc00
20 changed files with 1381 additions and 45 deletions
+23
View File
@@ -45,3 +45,26 @@ def normalize_conversation_id(conversation_id: str, my_uid: int) -> str:
if peer_uid and my_uid:
return build_conversation_id(my_uid, peer_uid)
return (conversation_id or "").strip()
def conversation_belongs_to(conversation_id: str, my_uid: int) -> bool:
"""判断单聊会话是否属于 my_uid 本人。
托管多个账号时,一条属于别的账号的会话(例如 frontier 长连接按设备号寻址
造成的跨账号推送)一旦流进本账号的处理链路,resolve_peer_uid 会把末段当成
「对方」、normalize_conversation_id 再拼成 0:1:{本账号}:{别人的好友},于是
本账号就把消息发给了另一个账号的好友。这里给出唯一的归属判据。
无法判定时一律返回 True(保守放行):缺 my_uid、群聊、裸 UID 等形态本来就
不带参与方信息。只有两个参与方都已知、且都不是本账号时才判定为不属于本账号。
"""
try:
uid = int(my_uid or 0)
except (TypeError, ValueError):
return True
if not uid:
return True
parts = parse_conversation_parts(conversation_id)
if not parts:
return True
return uid in parts