Compare commits

...

2 Commits

Author SHA1 Message Date
f3636dddd6 fix: 添加 event_id 去重机制,防止消息重复处理
- 添加 processed_events 集合追踪已处理消息
- _process_message 检查 event_id 是否已处理
- 限制集合大小防止内存过大
2026-04-12 00:26:04 +08:00
66fa5db3d7 fix: 移除前端 [Matrix] 来源标记显示 2026-04-12 00:16:16 +08:00
10 changed files with 29 additions and 2 deletions

Binary file not shown.

View File

@@ -0,0 +1,7 @@
@tester:matrix.tphai.com AJFVRTHLJY matrix-ed25519 4mRjLhM8xbwjkwQP2T/iB3UZJoaADgP6cCVUiB8AtSk
@tester:matrix.tphai.com GVSFGGYNJL matrix-ed25519 8qV2own4G3m2nki+izFDBOrAxtbGl8RoneM3qUPkThU
@tester:matrix.tphai.com IMEQIQPXTR matrix-ed25519 6Yd4lmhP6jdkkNvh1rIw6TRK331ZUyiAt5G5hPeYqSE
@tester:matrix.tphai.com MIPPYHRVAS matrix-ed25519 s8Ol56sxLCjCOi0Gkv/Kj7LqVMp/8ZmuAJ6QA1rUi7o
@tester:matrix.tphai.com UKJGJYQQLT matrix-ed25519 opC9rhsz1nzrvQqNWMKTF5FxWIGuHTDfixx+q/Y8ea0
@tester:matrix.tphai.com UPMZGRLESG matrix-ed25519 86c6XPCIYHgesq83C2k5xhXNa0EYMnqTq4jFrTwJX8I
@huangzhuang_bro:matrix.tphai.com BQHGFLQEPR matrix-ed25519 IrEHmvqotfHKLyx1JRJp4RthUVyBT8qQX72qBifRRyQ

View File

@@ -0,0 +1,6 @@
@huangzhuang_bro:matrix.tphai.com BQHGFLQEPR matrix-ed25519 IrEHmvqotfHKLyx1JRJp4RthUVyBT8qQX72qBifRRyQ
@tester:matrix.tphai.com AJFVRTHLJY matrix-ed25519 4mRjLhM8xbwjkwQP2T/iB3UZJoaADgP6cCVUiB8AtSk
@tester:matrix.tphai.com GVSFGGYNJL matrix-ed25519 8qV2own4G3m2nki+izFDBOrAxtbGl8RoneM3qUPkThU
@tester:matrix.tphai.com IMEQIQPXTR matrix-ed25519 6Yd4lmhP6jdkkNvh1rIw6TRK331ZUyiAt5G5hPeYqSE
@tester:matrix.tphai.com MIPPYHRVAS matrix-ed25519 s8Ol56sxLCjCOi0Gkv/Kj7LqVMp/8ZmuAJ6QA1rUi7o
@tester:matrix.tphai.com UKJGJYQQLT matrix-ed25519 opC9rhsz1nzrvQqNWMKTF5FxWIGuHTDfixx+q/Y8ea0

View File

@@ -26,6 +26,7 @@ class MatrixBot:
self.is_running: bool = False
self.on_message_callback: Optional[Callable] = None
self.last_room_id: str = ""
self.processed_events: set = set() # 已处理的事件ID防止重复处理
async def init_from_config(self):
"""从数据库配置初始化"""
@@ -171,6 +172,20 @@ class MatrixBot:
async def _process_message(self, room, sender, message_text, event_id):
"""处理消息的核心逻辑"""
# 检查是否已处理过此事件(防止重复处理)
if event_id in self.processed_events:
logger.debug(f"忽略已处理的事件: {event_id}")
return
# 标记为已处理
self.processed_events.add(event_id)
logger.info(f"处理消息: event_id={event_id}")
# 限制集合大小保留最近的100个
if len(self.processed_events) > 100:
# 清理旧的一半
self.processed_events = set(list(self.processed_events)[-50:])
# 忽略自己发送的消息
if sender == self.user_id:
logger.debug(f"忽略自己发送的消息: {sender}")

View File

@@ -467,11 +467,10 @@
messageDiv.className = `message ${role}`;
const avatar = role === 'user' ? '👤' : '🤖';
const sourceLabel = source === 'matrix' ? ' [Matrix]' : '';
messageDiv.innerHTML = `
<div class="message-avatar">${avatar}</div>
<div class="message-content">${formatContent(content)}${sourceLabel}</div>
<div class="message-content">${formatContent(content)}</div>
`;
container.appendChild(messageDiv);