[...document.querySelector('.top').children].reduce((acc, n) => {
const text = n.innerText;
acc.includes(text) ? n.remove() : acc.push(text);
return acc;
}, []);
или
Object
.values(Array
.from(document.querySelectorAll('.top > .nick'))
.reduce((acc, n) => ((acc[n.innerText] ??= []).push(n), acc), {}))
.forEach(n => n.forEach((m, i) => i && m.remove()));
или
const el = document.querySelector('.top');
el.innerHTML = [...new Set(el.innerHTML.match(/<span.*?\/span>/g) ?? [])].join(' ');
или
const el = document.querySelector('.top');
el.innerHTML = Array
.from(el.getElementsByClassName('nick'))
.map(n => n.innerText)
.filter((n, i, a) => i === a.indexOf(n))
.reduce((acc, n) => acc + (acc && ' ') + `<span class="nick">${n}</span>`, '');