Plugin de moderação do OP do tópico

Continuando a discussão de Ability for users to act as moderators on their own topic:

Este plugin foi basicamente desenvolvido e testado agora.

Recursos

Eu não gosto muito de explicar suas funções, então decidi usar imagens para ilustrar o que ele pode fazer.

Usuários

  • Ele adiciona um botão que aparece logo após o botão topic-admin-button para o criador do tópico público
  • Mensagens Privadas (PM) não são suportadas, pois não acho que sejam necessárias.
  • Todos devem se candidatar antes de obter permissões de moderação, mas a candidatura pode ser aprovada automaticamente.

  • Após a candidatura, os botões de moderação apareceriam.

Manipulando Grupos

Administradores

Notas importantes

Após a instalação, siga as instruções abaixo antes de habilitar o plugin

  • Antes de habilitar este plugin, você precisa criar uma conta para ser usada como um “bot de Assistente de Usuário”. Embora este plugin possa criar automaticamente um usuário bot ou usar o @Discobot existente, não recomendo fazer isso, pois os usuários bot criados pelo plugin não podem ser modificados no painel de administração. Você pode conceder a ele qualquer permissão que desejar, pois, na verdade, o código relevante é especialmente escrito para fazer o bot sempre agir como Admin, mas sugiro que seja melhor conceder a ele permissões de Admin ou moderador. Durante o desenvolvimento, às vezes bugs desconhecidos que não consigo reproduzir de forma estável são causados por esse motivo.

  • Em seguida, você precisa criar um tópico, que pode ser uma mensagem privada ou um tópico público. Preencha seu topic_id em SiteSetting.topic_op_admin_logger_topic. Se topic_op_admin_enable_topic_log estiver ativado, o bot acima criará posts de log mais detalhados dentro do tópico.

  • Após criar o robô assistente de usuário, anote seu ID de usuário e, em seguida, preencha-o em SiteSetting.topic_op_admin_bot_user_id acima.

  • Abrir certas configurações sem seguir as etapas acima corretamente pode causar erros ou até mesmo quebrar seu site

18 curtidas

Você já considerou ver se é possível vincular o bot ao grupo de moderação de categoria? Como mod/admin completo, na minha opinião, pode ser arriscado.

Existem alguns plugins que estiveram na categoria de plugins marcados como experimentais até que fossem considerados fora da fase de desenvolvimento, como o Who’s Online.

Talvez @Canapin possa dar uma olhada na categoria e discutir com você.

Ótimo trabalho, boa sorte com o desenvolvimento!

Será que deveríamos ter tags “Alpha” e “Beta” em Plugin? :thinking:

Isso tornaria os novos plugins mais fáceis de encontrar e também refletiria o risco que você correria ao instalá-los…

3 curtidas

Plugins são códigos que rodam junto com o Discourse. Não é um problema para o bot ter quaisquer permissões, de Admin a TL0, pois na verdade é apenas um objeto de operações de código, e ele tem permissões ilimitadas.

Na verdade, já terminei de desenvolver esta parte do plugin. Mas eu teria receio de publicar este plugin em Plugin, dadas as consequências mais catastróficas se um plugin (em vez de um componente de tema) der errado.

Vou lançá-lo oficialmente após o plugin ser lançado no meu fórum e após um período de verificação.

3 curtidas

Este plugin foi basicamente desenvolvido e testado. Agora você pode instalá-lo com confiança!
(mas siga as etapas descritas acima:

5 curtidas

@Lhc_fl isso parece super útil, mas permite que o OP poste em seu próprio tópico enquanto ele está fechado, como um moderador ou administrador poderia? Para nós, isso parece um fluxo muito melhor do que fazê-los desbloquear, postar e, em seguida, rebloquear.

1 curtida

Estou planejando adicionar este recurso - mas estive ocupado recentemente e não tenho muito tempo para olhar meu plugin. Qualquer pessoa interessada pode enviar um pull request.

2 curtidas

@Lhc_fl
este é um plugin legal,

  • é possível transformá-lo em um componente de tema? mais pessoas poderão usá-lo,
    não temos permissão para instalar plugins na instância, mas poderíamos instalar um componente de tema.

  • você poderia adicionar “Dividir e mesclar tópicos” à lista de permissões?
    obrigado…

Não, é impossível porque ele precisa interagir com o banco de dados.

Talvez, mas é mais difícil. Não tenho energia para adicionar novos recursos a ele recentemente.

3 curtidas

Desculpe, mas este plugin é incompatível com a nova versão do Discourse devido à atualização do ember.js, mas estou muito ocupado no momento para corrigi-lo. Se alguém estiver disposto a corrigi-lo, por favor, envie um PR no Github.

3 curtidas

Atualizei este plugin hoje para me adaptar à nova versão do Discourse. Agora o plugin não está mais #quebrado

9 curtidas

Eu ativei o User autonomy plugin enabled, mas há um erro após o envio da solicitação

este é o log no terminal do navegador


chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
    at D.parse [as parseJSON] (<anonymous>)
    at l (chunk.7b3110aa5b5be8…1d8cd9.js:393:63167)
    at p (chunk.7b3110aa5b5be8…1d8cd9.js:393:63847)
    at k (chunk.7b3110aa5b5be8…41d8cd9.js:308:3688)
    at w (chunk.7b3110aa5b5be8…41d8cd9.js:308:3581)
    at f (chunk.7b3110aa5b5be8…41d8cd9.js:308:3077)
    at invoke (chunk.7b3110aa5b5be8…41d8cd9.js:121:10063)
    at m.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:9140)
    at g.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:11012)
    at q._end (chunk.7b3110aa5b5be8…41d8cd9.js:121:16062)
    at q.end (chunk.7b3110aa5b5be8…41d8cd9.js:121:13189)
    at q._run (chunk.7b3110aa5b5be8…41d8cd9.js:121:16576)
    at q.run (chunk.7b3110aa5b5be8…41d8cd9.js:121:13722)
    at c (chunk.7b3110aa5b5be8…41d8cd9.js:161:53419)
    at t.error (chunk.7b3110aa5b5be8…41d8cd9.js:302:131483)
    at l (chunk.7b3110aa5b5be8…41d8cd9.js:191:58317)
    at Object.fireWith [as rejectWith] (chunk.7b3110aa5b5be8…41d8cd9.js:191:59062)
    at C (chunk.7b3110aa5b5be8…41d8cd9.js:194:5783)
    at XMLHttpRequest.<anonymous> (chunk.7b3110aa5b5be8…41d8cd9.js:194:8211)
l	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
p	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
k	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
w	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
f	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
invoke	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_run	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
run	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
c	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
t.error	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
l	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
fireWith	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
C	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
<anonymous>	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
XMLHttpRequest.send		
send	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
ajax	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
o	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
<anonymous>	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
e	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
D	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
submit	@	request-op-admin-form.js:106
<anonymous>	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
invoke	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_runExpiredTimers	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
setTimeout		
setTimeout	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_installTimerTimeout	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_reinstallTimerTimeout	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_later	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
later	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
T	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
_triggerAction	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
click	@	chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421