Discord Bot 构建套件 🤖

好的。这有点令人沮丧,因为我刚刚在我们的 Discord 支持频道强制使用线程,以便更好地了解支持案例。我不确定这是否真的能达到目的——但幸运的是,还有其他好处。

您有 API 的预计到达时间吗?以及支持该功能大概需要多少成本?

谢谢!

/k

2 个赞

我最近跟进了一下,这已经开发了一段时间了。我会再次跟进并回复,但请注意,上次他们告诉我“完成时自然就完成了”……开源项目的问题通常在于缺乏一种有效的方式来引导社区资金(或缺乏资金)以协助关注和确定优先级……我们拭目以待……

从我这边来看,我需要看到最终的实现才能估算工作量。

挑战可能在于,虽然复制消息很简单,但要保持 Threads 与 Topics 同步可能需要 Discourse 中维护某种映射,例如一个自定义字段或表,用于将 Discord Threads 映射到 Discourse Topics,这样当新消息添加到 Thread 时,您就知道该将其放在 Discourse 的何处。

您能否详细说明您正在寻求的确切功能/行为?

2 个赞

是的,依赖于无法影响的事物确实令人沮丧。

我的想法深受该文章以及 Discourse 博客上关于 Discord 和 Discourse 如何互补的讨论的启发。大约两个月前,当我们开始建立 Discord 服务器时,我们并不知道它会如何发展,也不知道它会如何影响我们现有的(但几乎没有配置的)Discourse 论坛。但看起来人们仍然像使用我们的 Discord 一样使用它来询问技术支持问题(我属于 FOSS 项目 CrowdSec)。所以基本上,我完全赞同将 Discourse 用作更长期的记忆,并将 Discord 线程同步到与 Discord 频道匹配的主题(反之亦然)。在我看来,通过使用线程可以更有效地(例如,自动化地)实现这一点。

正如我所说,我最近在 Discord 上强制使用了线程,这意味着对于我们负责用户支持的开发人员来说,有时很难获得线程的概览。因此,我想利用与 Discourse 的同步,让他们能够很好地了解需要回答的问题,同时又不会过多地陷入 Discord 的闲聊。

这有意义吗?有没有其他方法可以在更短的时间内实现这一点?

2 个赞

您好 @merefield

我在这里联系您,因为我认为我的 GitHub Issue 没有被看到,而且我认为这是下一个最好的地方。

image

我们遇到了一个错误,我们已将其追溯到 discord bot 插件。上图显示了检查元素错误,但任何发送 PM 的用户在发送 PM 时也会看到“500 错误”视觉效果。PM 仍然成功发送,但此错误使其看起来并非如此。禁用插件后,问题不再存在。

我相当确定问题来自 /lib/discourse_event_handlers.rb。我假设 PM 触发了 post_created DiscourseEvent,这会使其尝试通过 posted_category = post.topic.category.id 访问帖子的类别,从而导致错误。

希望这有帮助,希望这个问题能尽快得到解决。谢谢。

2 个赞

谢谢你的报告。听起来差不多。本周也许有机会看看……

2 个赞

太棒了,谢谢!我们会留意这次更新的。 :+1:

2 个赞

由于我目前手头有很多客户工作,可能需要一段时间才能处理。

同时,PR 已被接受。

总的来说,我欢迎社区为免费插件做出更多贡献。

2 个赞

我目前非常忙,但我认为我已经推送了一个修复程序:

FIX: exclude private messages from bot event considerations · merefield/discourse-discord-bot@82b2109 (github.com)

现在似乎可以正常工作了,并且困扰人的私信500错误也消失了……

2 个赞

哦,那太棒了,可以替代 Discord Chat

它应该读取 Discourse 中的 slug 名称还是仅标题?

1 个赞

Discord 不以同样的方式管理 slug,所以我印象中是标题。

2 个赞

您好,我不知道这个问题以前是否被问过,但是 OAuth 凭据必须与应用程序相同吗?因为我们目前正在使用另一个 Discord 同步集成,并且 OAuth 字段已填写。谢谢。

1 个赞

此插件与核心中的官方社交登录解决方案兼容。机器人需要来自授权 Discord 应用的令牌。社交登录允许插件跨两个平台识别同一用户。

2 个赞

谢谢你的回答!我会再多调试一下,看看我设置上还缺少什么。

2 个赞

我不认为它需要是同一个 Discord 应用,但可以试试!

2 个赞

你好!
我在论坛上搜索了根据 Discord 账户为 Discourse 用户分配不同信任等级的方法,找到了这里。

我们已经在 Discord 上拥有一个非常活跃的社区,最近引入了 Discourse 以进行更有组织的讨论。

我正在寻找一个解决方案,其工作方式如下:用户通过其 Discord 账户登录,并在 Discord 上拥有特定角色,即可自动在 Discourse 上获得信任等级 1。

这个 Bot Kit 是实现此功能的正确起点吗?

谢谢!

1 个赞

据我所知,此机器人是“单向”的,从 Discourse 到 Discord。没有内置的相反功能。

我个人认为,使用外部代码来监视 Discourse 安装的用户事件 webhook 会更容易完成此任务。

Webhook 事件外出 → 从 Discourse 数据库获取 Discord 用户 ID(需要使用 Discord 身份验证)-> 使用 discord.js、.py 等获取角色 → 使用 Discourse API 请求分配角色

为了获取 Discord ID,您需要使用 Data Explorer 插件并创建以下查询:

-- [params]
-- string :user
SELECT u.username, u.id, a.user_id, a.provider_name, a.provider_uid
FROM users u
JOIN user_associated_accounts a on a.user_id = u.id
WHERE u.username = :user

然后,您可以查找 Data Explorer 插件文档,并通过 API 请求命中该查询以获取 ID。

希望这有点帮助。

1 个赞

虽然这对于角色同步来说是真的,但其他方面并不正确。

来自 OP:

因此,有很多 Discord → Discourse 的行为,远非仅仅是一个“角色同步”机器人。

一如既往,欢迎为任何普遍有用的附加功能提供 PR。很高兴能收到社区的一些补充。:eyes:

4 个赞

感谢您发布的帖子@merefield

我可以得到您的Discord吗?如果可以的话,我想问您一些问题。

为了让知识保持开放并可供所有人索引,最好在这里提问。Discord 是信息的黑洞。信息一旦进入就再也找不到了 :slight_smile: 另外,我们在 Discourse 上也有聊天。

1 个赞

嗨 Kene,如果不是商业性质的,我将不胜感激,如果您能在这里提出您的问题,以便社区能够从中受益(甚至回答它们)

3 个赞