修复新人进房欢迎消息显示

This commit is contained in:
pllx
2026-04-27 14:05:11 +08:00
parent 8db1a252d7
commit 3d8e270df4
4 changed files with 56 additions and 15 deletions
@@ -2642,13 +2642,20 @@
// 后端下发的带有 welcome_user 的也是系统欢迎/离开消息,加上属性标记
if (msg.welcome_user) {
const welcomeKind = msg.welcome_kind || 'entry_broadcast';
div.setAttribute('data-system-user', msg.welcome_user);
// 收到后端来的新欢迎消息时,把界面上该用户旧的都删掉
const welcomeSelector = `[data-system-user="${msg.welcome_user}"]`;
const oldWelcomes = container.querySelectorAll(welcomeSelector);
oldWelcomes.forEach(el => el.remove());
renderBatch?.publicFragment.querySelectorAll(welcomeSelector).forEach(el => el.remove());
renderBatch?.privateFragment.querySelectorAll(welcomeSelector).forEach(el => el.remove());
div.setAttribute('data-system-welcome-kind', welcomeKind);
// 收到后端来的同类欢迎消息时,只替换同类旧消息,避免进场播报误删新人礼包和 AI 欢迎。
const removeSameWelcome = (root) => {
root?.querySelectorAll('[data-system-user]').forEach(el => {
if (el.dataset.systemUser === msg.welcome_user && (el.dataset.systemWelcomeKind || 'entry_broadcast') === welcomeKind) {
el.remove();
}
});
};
removeSameWelcome(container);
removeSameWelcome(renderBatch?.publicFragment);
removeSameWelcome(renderBatch?.privateFragment);
}
// 路由规则(复刻原版):