トピックOPモデレーションプラグイン

Ability for users to act as moderators on their own topic の議論を続けます。

このプラグインは、基本的に開発とテストが完了しました。

機能

機能の説明はあまり好きではないので、画像を使って何ができるかを説明することにしました。

ユーザー

  • 公開トピックの作成者に対して、topic-admin-button の直後に表示されるボタンを追加します。
  • PMは必要ないと思うのでサポートされていません。
  • モデレーション権限を取得する前に誰もが申請する必要がありますが、申請は自動的に承認される可能性があります。

  • 申請後、モデレーターボタンが表示されます。

グループの操作

  • このボタンはすべてのトピックに表示されます。
  • 区切り線の下のオプションは、ユーザーがStaffの場合にのみ表示されます。

管理者

重要な注意点

インストール後、プラグインを有効にする前に以下の手順に従ってください。

  • このプラグインを有効にする前に、「User Assistant bot」として使用するアカウントを作成する必要があります。このプラグインはボットユーザーを自動的に作成したり、既存の @Discobot を使用したりできますが、プラグインによって作成されたボットユーザーは管理パネルで変更できないため、お勧めしません。このボットには任意の権限を付与できます。実際、関連コードはボットが常に管理者として動作するように特別に記述されていますが、管理者またはモデレーター権限を付与するのが最善であることをお勧めします。開発中、この理由により、安定して再現できない未知のバグが発生することがありました。

  • 次に、トピック(プライベートメッセージまたは公開トピック)を作成する必要があります。その topic_idSiteSetting.topic_op_admin_logger_topic に入力します。topic_op_admin_enable_topic_log がオンの場合、上記のボットはトピック内に詳細なログ投稿を作成します。

  • ユーザーアシスタントボットを作成した後、そのユーザーIDを書き留め、それを上記の SiteSetting.topic_op_admin_bot_user_id に入力します。

  • 上記の手順を正しく実行せずに特定の Сettings を開くと、エラーが発生したり、ウェブサイトが破損したりする可能性があります。

「いいね!」 18

ボットをカテゴリモデレーターグループに紐付けることを検討しましたか?フルモデレーター/管理者 imho は危険かもしれません。

Who’s Online のように、開発段階を過ぎたと見なされるまでプラグインカテゴリで実験的とマークされていたプラグインがいくつかあります。

おそらく @Canapin がカテゴリを確認し、あなたと話し合うことができます。

開発頑張ってください、幸運を祈ります!

プラグインのタグに「アルファ」と「ベータ」を追加すべきでしょうか? :thinking:

そうすれば、新しいプラグインが見つけやすくなり、インストールする際のリスクも反映されるでしょう…

「いいね!」 3

プラグインは、Discourse と並行して実行されるコードです。ボットが管理者から TL0 までの任意の権限を持つことは問題ありません。実際には、コード操作のオブジェクトにすぎず、無制限の権限を持っています。

実際、プラグインのこの部分の開発は完了しました。しかし、プラグイン(テーマコンポーネントではなく)が誤動作した場合の壊滅的な結果を考えると、このプラグインを Plugin に公開することには注意が必要です。

フォーラムでプラグインを公開し、検証期間を経てから正式にリリースします。

「いいね!」 3

このプラグインは基本的に開発とテストが完了しました。自信を持ってインストールしてください!
(ただし、上記の手順に従ってください:

「いいね!」 5

@Lhc_fl これは非常に便利そうですが、モデレーターや管理者ができるような、トピックが閉じている間にOP(元の投稿者)が自分のトピックに投稿することを許可しますか?私たちにとっては、それを解除して投稿し、再度ロックするよりもはるかに優れたフローのように思えます。

「いいね!」 1

この機能を追加する予定ですが、最近忙しくてプラグインを見る時間がほとんどありません。興味のある方はプルリクエストを提出してください。

「いいね!」 2

@Lhc_fl
このプラグインは素晴らしいですね。

  • これをテーマコンポーネントにすることは可能ですか? より多くの人が利用できるようになります。
    インスタンスにプラグインをインストールする権限がありませんが、テーマコンポーネントはインストールできます。

  • 「トピックの分割と結合」を権限リストに追加することはできますか?

よろしくお願いします…

データベースとのやり取りが必要なため、不可能です。

おそらく可能ですが、より困難です。最近、新しい機能を追加するエネルギーがありません。

「いいね!」 3

申し訳ありませんが、ember.js のアップグレードにより、このプラグインは discourse の新しいバージョンと互換性がなくなりました。しかし、現在私は非常に忙しいため、修正することができません。もしどなたか修正していただける方がいらっしゃいましたら、Github で PR をお願いします。

「いいね!」 3

本日、このプラグインを新しいバージョンの Discourse に対応させるためにアップグレードしました。これにより、プラグインはもう #壊れていません。

「いいね!」 9

「ユーザーの自律性プラグインを有効にしました」を開きましたが、リクエストを送信した後にエラーが発生しました。

ブラウザのターミナルにあるログは以下の通りです。

chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
SyntaxError: 不正なトークン '<'、"<"!DOCTYPE "... は有効な 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…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
(匿名)	@	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
(匿名)	@	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
(匿名)	@	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