Isso é fácil de resolver. Existe um atributo no modelo de tópico que mostra se você já respondeu a ele, chamado posted. Eu escrevi um componente anteriormente (Composer tip under specific tag topics) que determina se você já respondeu. Se você tiver base de código, pode dar uma olhada no que escrevi. Combinado com o método decorateCookedElement da API, isso pode ser implementado.
Tenho preguiça de escrever o código específico. Tenho estado muito ocupado recentemente.
<script type="text/discourse-plugin" version="1.6.0">
const user = api.getCurrentUser();
const I18n = require("I18n");
const pid = "post_hider"
const tl4_css = `
.d-editor-preview [data-theme-hide] {
background: var(--tertiary);
color: var(--secondary);
border-top: 2px solid var(--secondary);
position: sticky;
top: 0;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.d-editor-preview [data-theme-hide]::before {
content: "Este post foi ocultado";
}
`
api.addPostClassesCallback((attrs) => {
if (attrs?.cooked?.includes(`div data-theme-hide="true"`)) {
return ["hiddened"]; // Adicionado para CSS, como escrever o CSS depende de você
} else {
return [];
}
});
if (!user) {
api.decorateCookedElement((el, helper) => {
function hide_post() {
setTimeout(() => {
try {
// document.querySelector(`[data-post-id="${helper?.widget?.attrs?.id}"]`)?.parentElement?.remove();
} catch (err) {
console.log(el);
console.log(err);
}
}, 1000);
}
if (el?.querySelector(`[data-theme-hide="true"]`)) {
el.innerHTML = `<p>Este post foi ocultado pela comunidade</p>`; // Modifique esta linha
hide_post();
}
}, {
id: pid,
afterAdopt: true,
onlyStream: true,
});
}
</script>
Lembrei que tenho um código aqui que usei para ocultar o post inteiro de usuários não logados. Você pode usá-lo como referência.