ユーザーをユーザーグループに追加するスクリプト

現在、Automation プラグインには、カスタムフィールドに基づいてユーザーをグループに追加するスクリプトがあります。別のグループに追加されたときに、ユーザーをグループに追加するスクリプトが必要です。

シナリオは次のとおりです。Discourse Experts プラグインでは、「エキスパート」として指定されたユーザー グループは 1 つだけである必要があります。アンバサダー プログラムを実行しており、アンバサダーには 2 つのティアがあります。どちらもこの場合「エキスパート」です。

「Ambassadors」または「Expert Ambassadors」に追加されたすべてのユーザーが、「Experts」ユーザー グループにも追加されるようにしたいと考えています。

「いいね!」 5

もしスポンサーになっていただけるなら、それほど複雑ではないと思います。作業の見積もりを提示できます。teamにご連絡ください。

「いいね!」 2

以下でもリクエストされています。

「いいね!」 2

@JammyDodger がリンクしたトピック以外にも、同様の機能に関するリクエストがいくつかありました。

また、グループを階層的に表示できるようにするリクエストもありました。

これは、Automationスクリプトを追加することがこの問題に対処する最善の方法なのか、それともDiscourseのコアグループコードに追加すべき機能なのかを確認するためにメモしています。

個人的にこれを面白半分でいじっていました。これはZapierで行った最近の作業とも少し関連しています。この投稿の残りは無視しても構いません。

Automationスクリプトが適切なアプローチであると仮定すると、唯一の障害は、Automationプラグインの group コンポーネントが単一のグループしか受け付けないことです。したがって、group コンポーネントを複数のグループを受け入れるように更新するか、新しい groups コンポーネントを追加する必要があります。テストのために、ローカル開発ブランチに groups コンポーネントを追加しました。それが配置されたら:

サブグループのいずれかに追加されたときに、ユーザーを親グループに追加します。

リストされたすべてのサブグループから削除された場合、ユーザーを親グループから削除します。

参考になれば、トリガーとスクリプトはプラグインにあります:automation-script-example/plugin.rb at main · scossar/automation-script-example · GitHub コンポーネントが https://github.com/discourse/discourse-automation/tree/main/assets/javascripts/discourse/components/fields に追加されたことを前提としていることに注意してください。

「いいね!」 4

このプラグインは、この機能もカバーするようになりました。