Discordからディスコースへ?

こんにちは、Discord の投稿から自動的に Discourse に投稿を作成する方法はありますか?

「いいね!」 1

こんにちは、Sam さん!コミュニティへようこそ。Set up Discord notifications with the discourse-chat-integration plugin をご覧ください。

今後は :mag: 検索をお試しください。多くの質問はすでにここで議論されており、検索機能もそれらを見つけるのに非常に優れています。

「いいね!」 1

ありがとうございます。確認しましたが、探しているものと異なります。これはDiscourseからDiscordへの連携ではなく、DiscordからDiscourseへの連携が必要です。

具体例:
Discordのチャンネルにメッセージが届くと、そのメッセージがDiscourseに送信され、その情報でスレッドが作成される、というシナリオです。

「いいね!」 2

Slack ではチャット統合でその機能を実現できます。Discord 向けに「トランスクリプトの投稿」機能の実装をお探しのようです。

「いいね!」 2

ありがとうございます。つまり、自動化された方法は存在しないのですね。

カスタム Discord ボットを作成してメッセージの内容をコピーし、フォーラムに対して POST リクエストを送信することで、これを達成できます。

ただし、フォーラムのプラグインとして discordrb を使用しない限り、追加のホスティングが必要になります。

こちらをお試しください:

https://meta.discourse.org/t/how-to-connect-discourse-with-hundreds-of-apps-using-integromat/

ありがとうございます。試してみたのですが、なぜか正しいメッセージID変数の設定がうまくいきません。

テクニカルサポートなら、きっと解決策を見つけるお手伝いができるはずです。

権限や呼び出しについて、どのように動作するのでしょうか?

すべてのメッセージをコピーしたいのか、それとも特定のチャンネルのメッセージだけでしょうか?それらはすべて単一のトピックに追加されるのでしょうか?新しいトピックが作成されるトリガーは何でしょうか?

すべてのDiscordユーザーがこの機能を利用できるのでしょうか?

どこに保存されるのでしょうか?カテゴリなしで?

「いいね!」 3

呼び出しチャンネル内のメッセージのみを、理想的には指定した停止点まで取得します。

より洗練された実装方法としては、以下のような手順があります。

  • 投稿したい最初のメッセージで「返信」をクリック
  • @YourDiscourseIntegrationBotAccount と入力し、末尾に transcript またはその翻訳のいずれかをオプションで追加
  • そのメッセージから現在時刻までのトランスクリプト(最大約 50 件)が Discourse に投稿されます。可能であれば、実行したユーザーとして投稿されます。

対話的な入力(カスタムの停止点の設定、特定のメッセージの除外、宛先カテゴリのカスタマイズなど)を許可する場合は、さらに高度な機能を実装することも可能です。双方向のやり取りを伴わない UX として、これが私が考えつく最善の案です。

実際には、これを対話型にするのは比較的容易です。

const BASE_URL = "https://discourse.example.com";

// 前提条件:
// msg.type == REPLY (19)
// msg.mentions または msg.mention_roles にボットが含まれている
// これは JS だが、Ruby での実装が必要
function onMentionWithReply(msg) {
  discord.sendMessage({
    content: "<" + BASE_URL +
      "/chat-integration/discord/make-transcript/" +
      msg.channel_id + "/" +
      msg.message_reference.message_id + ".." + msg.id +
      ">";
    type: REPLY,
    message_reference: { message_id: msg.id },
  });
}

ここで /chat-integration/discord/make-transcript/:channel_id/:id1..:id2 は、Discourse 上でメッセージをプレビューし、最終確定を行える対話型ページをレンダリングします。

注意点:

  • そのページにアクセスするユーザーのアクセス権限を確認し、トランスクリプトの不適切な開示を防ぐ必要があります。
「いいね!」 4

現在、Slack から Trello、Trello から Discord へのリンクがありますので、Discord で投稿を作成するか、あるいは Trello から特定のトピック下に新しい投稿を作成したいと考えています。

投稿先が多すぎて時間が足りないんです! :slight_smile:

ありがとう、見ておきますね。

おっと、失礼しました。Slack 統合のように、この統合は双方向に投稿されないとは気づいていませんでした。

一般的に疑問に思うのですが、なぜそのようなことをしたいのでしょうか?Discourse の長期記憶に雑談が混じって、かえってごちゃごちゃになってしまいますよ。

問題ありません。Discourse に投稿したいチャンネル投稿は、ゲームの新しいアップデートに関するお知らせです。同じ内容を複数の場所で投稿するのは非常に時間がかかるため、Discourse が忘れられがちになっています。そこで、私の作業負担を減らすと同時に、Discourse でのアクティビティ向上も目指しています。

「いいね!」 1

とりあえず、これで妥協するしかなさそうな回避策を見つけました。
Trello を Discourse に接続してスレッドに返信するには Zapier を使う必要がありましたが(欠点は無料プランでは投稿数をカバーしきれないこと)、そのために専用のスレッドを作成しました。
今の流れは以下の通りです。
データベースの API から Slack に投稿 → Slack が Trello のカードを作成 → Trello から Discord と Discourse に投稿 :slight_smile:

ただ、今は Discourse が Discord に再投稿してしまうというループが発生しています。私の投稿を除外する方法はありませんか?

関連機能を追加しました:Discord Bot Construction Kit 🤖 - #79 by merefield

「お知らせチャンネル」としてチャンネルを指定すると、そのチャンネルに入力されたすべてのメッセージが指定された Discourse トピックに投稿されます。

(この更新では、Discourse からの通知が同じチャンネルに Discord へコピーされた場合も監視されます)

私の実装でも同様の現象が起きますが、無限ループにはならず、投稿が追加されたことを確認するだけです。Discourse 上の Discord トピックを別の場所に配置し、監視されているカテゴリを避けることで回避できます。

「いいね!」 5

おお、ありがとう!これなら他のサードパーティ製アプリを使う必要がなくなるかもしれない!画像リンクがどう処理されるか確認してみよう。

「いいね!」 1

実は、あなたの指示があまり理解できていません。Discourseのメニューでプラグインの下にこれが見つからず、プラグインのインストール方法もわかりません。

プラグイントピックに、手順に関する具体的な問題を投稿してください。

現在の問題点は少し曖昧で、お手伝いが難しい状況です。まずは最初の投稿(OP)を十分に読み込み、その後、具体的な問題を投稿してください。喜んでお手伝いいたします。

「いいね!」 1