Plugin de modération de l'OP du sujet

En poursuivant la discussion de Possibilité pour les utilisateurs d’agir en tant que modérateurs sur leur propre sujet :

Ce plugin est maintenant essentiellement développé et testé.

Fonctionnalités

Je n’aime pas vraiment expliquer ses fonctions, j’ai donc décidé d’utiliser des images pour illustrer ce qu’il peut faire.

Utilisateurs

  • Il ajoute un bouton qui apparaît juste après le bouton topic-admin-button pour le créateur d’un sujet public.
  • Les messages privés (PM) ne sont pas pris en charge car je ne pense pas que ce soit nécessaire.
  • Tout le monde doit postuler avant d’obtenir des permissions de modération, mais la candidature peut être approuvée automatiquement.

  • Après la candidature, les boutons de modération apparaîtraient.

Manipulation des groupes

Administrateurs

Notes importantes

Après l’installation, veuillez suivre les instructions ci-dessous avant d’activer le plugin

  • Avant d’activer ce plugin, vous devez créer un compte à utiliser comme bot « Assistant utilisateur ». Bien que ce plugin puisse créer automatiquement un utilisateur bot ou utiliser le @Discobot existant, je ne recommande pas de le faire, car les utilisateurs bots créés par le plugin ne peuvent pas être modifiés dans le panneau d’administration. Vous pouvez lui accorder toutes les permissions que vous souhaitez, car en fait, le code pertinent est spécialement écrit pour que le bot agisse toujours en tant qu’administrateur, mais je suggère qu’il est préférable de lui accorder les permissions d’administrateur ou de modérateur. Pendant le développement, des bugs inconnus que je ne peux pas reproduire de manière stable sont parfois causés pour cette raison.

  • Ensuite, vous devez créer un sujet, qui peut être un message privé ou un sujet public. Remplissez son topic_id dans SiteSetting.topic_op_admin_logger_topic. Si topic_op_admin_enable_topic_log est activé, le bot ci-dessus créera des publications de journal plus détaillées dans le sujet.

  • Après avoir créé le robot assistant utilisateur, notez son ID utilisateur, puis remplissez-le dans SiteSetting.topic_op_admin_bot_user_id ci-dessus.

  • L’ouverture de certains paramètres sans suivre correctement les étapes ci-dessus peut entraîner des erreurs, voire endommager votre site web.

18 « J'aime »

Avez-vous envisagé de voir si vous pouviez lier le bot au groupe de modération de catégorie ? En tant que modérateur/administrateur complet, à mon avis, cela pourrait être risqué.

Il existe quelques plugins qui ont été marqués comme expérimentaux dans la catégorie des plugins jusqu’à ce qu’ils soient considérés comme sortis de la phase de développement, comme Who’s Online.

Peut-être que @Canapin pourrait examiner la catégorie et en discuter avec vous.

Excellent travail, bonne chance pour le développement !

Je me demande si nous devrions avoir des tags « Alpha » et « Beta » dans Plugin ? :thinking:

Cela rendrait les nouveaux plugins plus faciles à trouver et refléterait également le risque que vous prendriez en les installant…

3 « J'aime »

Les plugins sont du code qui s’exécute aux côtés de Discourse. Il n’y a aucun problème à ce que le bot ait des permissions quelconques, de l’administrateur au TL0, car en réalité, il ne s’agit que d’un objet d’opérations de code, et il dispose de permissions illimitées.

En fait, j’ai maintenant terminé le développement de cette partie du plugin. Mais je serais prudent quant à la publication de ce plugin dans Plugin étant donné les conséquences plus catastrophiques si un plugin (plutôt qu’un composant de thème) se trompe.

Je le publierai officiellement après le lancement du plugin sur mon forum et après une période de vérification.

3 « J'aime »

Ce plugin a été développé et testé. Vous pouvez maintenant l’installer en toute confiance !
(mais suivez les étapes écrites ci-dessus :

5 « J'aime »

@Lhc_fl cela semble super utile, mais cela permet-il à l’OP de publier sur son propre sujet pendant qu’il est fermé, comme un modérateur ou un administrateur pourrait le faire ? Pour nous, cela semble un bien meilleur flux que de le faire déverrouiller, publier, puis le re-verrouiller.

1 « J'aime »

Je prévois d’ajouter cette fonctionnalité - mais j’ai été occupé récemment et je n’ai pas beaucoup de temps pour m’occuper de mon plugin. Quiconque est intéressé peut soumettre une pull request.

2 « J'aime »

@Lhc_fl
ce plugin est sympa,

  • est-il possible d’en faire un composant de thème ? Plus de gens pourront l’utiliser,
    nous n’avons pas la permission d’installer de plugin sur l’instance, mais nous pourrions installer un composant de thème.

  • pourriez-vous ajouter la fonctionnalité “Diviser et fusionner des sujets” à la liste des permissions ?

merci…

Non, c’est impossible car il faut interagir avec la base de données.

Peut-être, mais c’est plus difficile. Je n’ai pas l’énergie d’ajouter de nouvelles fonctionnalités récemment.

3 « J'aime »

Je suis désolé que ce plugin soit incompatible avec la nouvelle version de Discourse en raison de la mise à niveau d’Ember.js, mais je suis trop occupé pour le corriger actuellement. Si quelqu’un est disposé à le corriger, veuillez ouvrir une Pull Request sur Github.

3 « J'aime »

J’ai mis à jour ce plugin aujourd’hui pour l’adapter à la nouvelle version de Discourse. Désormais, le plugin n’est plus #cassé

9 « J'aime »

J’ai activé le plugin « Autonomie de l’utilisateur », mais une erreur s’est produite après la soumission de la requête.

Voici le journal dans le terminal du navigateur :

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…1d8cd9.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…1d8cd9.js:191:58317)
    at Object.fireWith [as rejectWith] (chunk.7b3110aa5b5be8…1d8cd9.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