Discord Sync: DiscourseフォーラムとDiscordサーバーを同期

:warning: このプラグインは自動で動作し、コマンドは存在しません。汎用的な Discord ボットフレームワークをお探しの場合は、このプラグインの基盤となった @merefieldボット構築キット をご覧ください。

Discord 同期 Discourse フォーラムと Discord サーバーを同期 :discourse:

このプラグインは、Discourse フォーラムインスタンスと Discord サーバー間で、ユーザーに関連する特定の情報を同期できます。Discord ボットを作成し、すべての権限を管理し、サーバー内の特定のアクションをトリガーします。

機能

  • Discourse グループを Discord ロールに同期
    Discourse でのユーザーのグループアクセスに基づいて、Discord サーバー内のロールを自動的に管理します。

    • 検証済みロール
      Discord アカウントをリンクしたすべての Discord ユーザーに付与される「検証済みロール」を追加できます。

    • 安全なロール
      このプラグインは、Discord のロールを Discourse のグループと一致させるように強制するため、ボットが無視し、Discord サーバーで手動で管理できるロールのリストを設定できます。

  • Discourse ユーザー名を Discord ニックネームに同期
    フォーラムのユーザー名でユーザーを認識したい場合、Discourse でのユーザー名と同じ Discord サーバーのニックネームを持つように強制できます。

トリガー

このプラグインは、以下のケースでニックネームとロールを含む完全な Discourse から Discord への同期を実行します。

  • Discourse
    • ユーザーがグループに追加された
    • ユーザーがグループから削除された
    • ユーザープロフィールが更新された
      ユーザー名とニックネームの同期を意図しています
    • ユーザーが認証された
      認証プロバイダーが Discord の場合のみ実行され、アカウントリンク直後に最初の同期が確実に実行されます
  • Discord
    • ユーザーが Discord サーバーに参加した
      データベース内で指定された Discord ID を持つユーザーを検索し、同期ジョブを実行します

インストール

:exclamation: このプラグインは、Discourse と Discord のアカウントを識別およびリンクするために Discord OAuth2 に依存しています。ユーザーに Discord でのログインを許可したくないが、アカウントリンクを維持したい場合は、このトピックの解決策 を確認してください。

前提条件

このプラグインには libsodium(Discord Ruby gem が必要)が必要です。インストールするには、.yml ファイルを編集し、以下のコードを追加してください。

hooks:
    before_code:
       - exec:
              cmd:
                - apt-get update
                - apt-get install -y libsodium-dev

インストール手順

  1. このリポジトリ URL https://github.com/barreeeiroo/discourse-discord-sync.git を使用して、プラグインのインストール方法 の標準ガイドに従ってください。
  2. Discourse インスタンスで Discord でのログインを設定するには、このガイド に従ってください。
  3. Discord 開発者ポータルで「Bot」に進み、サーバーに追加してください。最高権限のロールを付与することを確認してください。
  4. Discourse の「プラグイン設定」で、前のステップに表示されたボットトークンを discord sync token に設定してください。

設定オプション

  • discord sync enabled: 統合を有効にするかどうか
  • discord sync token: Discord からのボットトークン
  • discord sync prefix: コマンドのプレフィックス(現在は !ping のみ)
  • discord sync admin channel id: ログメッセージ(ニックネーム変更、ロール変更)を投稿するチャンネル
  • discord sync username: true の場合、すべての Discord サーバーのニックネームを Discourse のユーザー名に同期します
  • discord sync verified role: Discourse アカウントを持つすべてのユーザーに追加するロール
  • discord sync safe roles: ボットが無視し、Discord で手動付与としてマークするロールのリスト

使い方

アカウントをリンクするには、Discord での認証をユーザーに許可している場合、そのプロバイダーを使用するだけです。許可していない場合は、アカウント設定に進み、関連アカウントまでスクロールして、Discord 行の接続をクリックしてください。

ライブデモ

現在、Kodular Community の Discourse インスタンスでこのプラグインを使用しており、Discord サーバーは kodul.ar/discord にあります。

謝辞

  • Discourse Bot@merefield
    このプラグインの骨格を提供してくれた Robert に心から感謝します。Discourse インスタンス内で Discord ボットを実行するための基盤を確立するのを確かに助け、libsodium のインストールに関する彼のトリックにも称賛を送ります。

  • Discourse Discord Sync@angus
    ボットを必要とせずに信頼レベルを Discord ロールに同期するための代替案。

  • Login with Discord、Discourse チーム作
    このプラグインは、Discord OAuth2 統合(以前はプラグイン)がなければ不可能でした。これにより、Discourse と Discord の両方のアカウントをリンクできます。

    • Partially enable login option@Falco@Roman
      Falco と Roman に感謝します。認証オプションを有効にすることなく、アカウントを「リンク」するためのログインプロバイダーを有効にするオプションを提供してくれたからです。
  • discordrb
    このプラグインは、Ruby を使用して Discord API に接続できる discordrb gem に依存しています。

「いいね!」 29

これは本当に素晴らしいですね!私は個人的には Telegram のファンですが、Discord も素晴らしいです!Telegram は、コミュニケーションに焦点を当てた有名なオープンソースプロジェクトである Discourse と相性が良いと感じます。

もしこの機能にクロスポスト機能があれば、さらに素敵でしょう。Discord チャットで誰かが発言すると、特定の Discord スレッド(「チャットルームスレッド」として知られるもの)に返信が作成されるようにするのです。こうすることで、チャットスレッド内の新しいコンテンツがすべて、Discourse ウェブサイトの SEO 向上に貢献することになります。

「いいね!」 4

私も Telegram がとても好きで、以前は公開チャットグループとして利用していました。しかし数日前、メンバーが1000人を超えたため、この規模のグループを管理するのが難しくなったことから、Discord に移行しました。Discord のロール機能を使えば、簡単に管理できました。

「いいね!」 4

素晴らしいですね :slight_smile:

@merefield さんの Discord Bot のほか、純粋な OAuth2(ボット不要)の Discord ロール ⇔ Discourse グループ同期プラグイン(例:信頼レベル 3 を Discord ロールと同期)もこちらで利用可能です。

「いいね!」 5

これは Discourse から Discord への同期を行います。ただし、ステークホルダーのタイプを識別する際には、Discourse のグループよりも Discord のロールを主に活用しています。そのため、このプラグインで Discord から Discourse への同期も行えると非常に助かります。具体的には、Discord のロールに基づいて Discourse ユーザーをグループに追加したり、Discord のロールに基づいて Discourse ユーザーにバッジを付与したり、Discord のユーザー名に合わせて Discourse のユーザー名を変更したり(逆ではなく)などの機能です。

「いいね!」 1

この機能を、逆方向に同期するように変更することは可能でしょうか?つまり、Discord のロール、ニックネームなどを Discourse のグループに同期させるようにするということです。

私たちは Discord 側でロールなどを管理しており、Discourse 側にプッシュしたいと考えています。

「いいね!」 2

このようなものを見つけたら、ぜひお知らせください。

これは本当に素晴らしいですね。ただ一点、DiscourseのDiscordグループとの連携方法についてお聞きしたいのですが、名前の一致だけでしょうか?もしそうであれば、DiscordのロールIDを使って、どのグループをどのロールに割り当てるかを定義できるようにしていただけませんか?それが難しい場合は、ロールのホワイトリストを追加することは可能でしょうか?Discourseではグループが設定されているロールは数個しかありませんが、Discordでは多くのロールを利用しています。

「いいね!」 1

この特定の機能は、Discord 経由ですべてのロールを管理しているため、私たちにとって非常に重要です。Discord のグループを Discourse に同期できる方法があると素晴らしいのですが、名前で同期され、権限などは後から設定されるだけでも構いません。

@barreeeiroo : このような機能の予定はありますか?あるいは、今後どのように進めればよいかアドバイスはありますか?「Safe Roles」を介したロールの手動管理は、ほぼ十分です。しかし、スペースを含むロール名があるため、それらを Safe Roles フィールドに追加することができません。Discord 上のすべてのロールを手動で更新してスペースなしの名前に変更するのではなく、他に方法はありませんか?

可能であれば、Discord のグループを Discourse のグループに「プッシュ」できると、とても助かります。

このプラグインの取り組みに感謝します!

追記:名前ではなくロール ID を使用するという提案は、私の側で多くの問題を確実に解決してくれるでしょう。

「いいね!」 1

設定にまだ問題があります。Discord のロールについて、ID と名前のどちらを検索しているのでしょうか?また、「保護されたロール」の代わりに、特定のロールのみを同期できるようにする機能は追加できませんか?

Ruby は詳しくないので、お手伝いはできません。いずれは基礎を学ぶか、Java で API を通じて何かを実装する予定です。

問題の原因がわかりました。管理チャンネルの名前をIDと間違えていました。あとは、権限/ロールのチェックをして、なぜ何も実行されないのかを確認する必要があります。

「いいね!」 1

ちょっと言っておきたいのですが、私はこのプラグインの逆のものを作成しました。これは、DiscordのロールをDiscourseのグループに同期するものです: https://www.youtube.com/watch?v=C5paAvTYty4

「いいね!」 5

DiscordのロールをDiscourseと同期させる方法はありますか?DiscourseのロールをDiscordと同期させるのではなく。

このプラグインの目的はそれですか?壊れていますか?また、OPでリンクされている私のボットプラグインも確認してください。これは(ボットコマンドを使用していますが)ディスコースからディスコードへの同期を実行します。

「いいね!」 2

ここにあるすべてのプラグインは、Discourse上のあなたのロールをDiscordアカウントに付与します。DiscordのロールをDiscourseアカウントに付与するわけではありません。

それはあなたの元の質問とは逆のことですか?

@spirobel のプラグインがそれを行っていると思いますか?

「いいね!」 2

いいえ、たとえば、Discourseに「Community Moderator」があると、Discordのロールが変更されます。
しかし、Discordに「Community Moderator」があっても、Discourseのロールは変更されません。

「いいね!」 2

私が言及していたものを見落とした可能性があります: Discord Sync: sync a Discourse forum with a Discord server - #17 by spirobel

@spirobel さん、お願いします。

「いいね!」 4

見逃していました。彼のプラグインは400ドルでカスタムメイドされたものです。

「いいね!」 1

彼は本当にそれを400ドルで売っているのですか?それはばかげています。

「いいね!」 1