Discord 到 discourse?

你好,有没有办法自动将 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,如果可能,将以执行操作的用户身份发布

如果你希望支持交互式输入,例如设置自定义停止点、排除某些消息或自定义目标分类,可以做得更高级。这是我能想到的最佳用户体验,且无需来回交互。

实际上,让这一过程变得交互起来相当容易:

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

// 前提条件:
// msg.type == REPLY (19)
// msg.mentions 或 msg.mention_roles 包含机器人
// 这里是 JavaScript,但实际需要在 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 个赞

好的,我找到了一个变通方案,虽然不太完美,但只能这样了。
我不得不使用 Zapier(缺点是免费计划不足以覆盖所有帖子)来连接 Trello 和 Discourse,以便回复我为此专门创建的线程。
现在的流程是:
数据库通过 API 将帖子发送到 Slack,Slack 创建 Trello 卡片,Trello 再将内容发布到 Discord 和 Discourse。:slight_smile:

不过现在出现了一个循环问题:Discourse 会再次将内容转发到 Discord,哈哈。有没有办法排除我自己的帖子,避免这种情况?

我已在以下链接添加了一个相关功能:Discord Bot Construction Kit 🤖 - #79 by merefield

如果您将某个频道指定为“公告频道”,那么在该频道中输入的任何消息都会被发布到您指定的 Discourse 主题中。

(该更新还会监控从 Discourse 复制到 Discord 同一频道中的公告消息。)

在我的实现中也会出现这种情况,但并非无限循环,它只是确认帖子已成功添加。您可以通过将 Discord 主题在 Discourse 中放置在不同的位置,并避开被监控的分类来避免这个问题。

5 个赞

哦,谢谢!这说不定能让我省去再装一个第三方应用的麻烦!我只得看看它如何处理图片链接了。

1 个赞

其实我不是很理解你的说明,我在 Discourse 的菜单里找不到插件选项,也不清楚该如何安装你的插件。

请将关于该插件的具体问题发布到插件主题帖中。

您目前描述的问题有些模糊,我难以提供帮助。请确保您已仔细阅读了主帖(OP),然后发布一个具体的问题,我很乐意为您提供帮助。

1 个赞