Discord Bot 构建套件 🤖

在 Discourse 上使用控制台时,我们可以在不生成的情况下使用它吗?

当我尝试进行重新映射时,我看到机器人告诉我错误 :smiling_face_with_tear:

我不完全确定您的意思。唯一的交互应该发生在 Discord 上。

但是您遇到了什么错误?我稍后会看一下。

1 个赞

我也遇到了同样的问题,进入 discourse 容器并启动 rails c 命令会导致机器人生成另一个实例。这会导致像 Ping! 这样的命令返回两次 Pong!,以及无法通过 discordrb 更改用户名或昵称等问题。

运行 ::DiscordBot::Bot.discord_bot.stop 命令会使由 rails c 生成的实例退出,但它无法与 Discourse 启动时生成的机器人进行交互。

1 个赞

感谢您的报告。我将把它记录为一个已知问题(编辑:已完成 - 添加到 OP 的“已知问题”部分)。但我怀疑它从一开始就是这样,而且鉴于这只是在最近才被报告过两三次,所以我认为它通常不被认为是一个大问题,因为它是一个极端情况。

鉴于您似乎技术能力很强,如果您能解决这个问题,欢迎提交 PR。

1 个赞

坦白说,这可能是 Discordrb 的核心问题,我在他们的文档中看不到列出其他正在运行的机器人或选择它们的方法,如果我发现了,我会通知你。至于这个机器人,我已经分叉了这个项目,并尽我所能对其进行了修改,使其能够作为聊天桥而不是帖子桥工作。


1 个赞

我们需要能够测试一个实例是否正在运行,并且在已存在实例的情况下不启动新的实例。

这是一个容易出现竞态条件(race condition)的危险区域,但会是一个非常好的改进。

如果我有更多时间,我会尽快查看,但如果你想尝试一下,请随时动手。

看起来当 rails 控制台启动时,它会将 @@DiscordBot 变量绑定到另一个线程中的另一个机器人,而原始机器人则被单独留下。我不确定是否可以检测到 rails 控制台正在启动并且不启动第二个机器人,但这解释了为什么我可以通过 rails 在机器人上运行停止命令,而不会影响与 Discourse 一起启动的那个。

1 个赞

你好,

干得漂亮,我想使用这个,但首先我有一个与此相关的问题……

我使用 Discourse WP-Connect 将 Wordpress 作为我的 SSO“主控”,(它也可以使用 Discord 登录)你知道我需要在此 SSO 请求中传递哪些“用户变量”才能将其与 Discord 用户匹配吗?或者仅仅是电子邮件(我猜不是)?

我已经发送了一些额外的值,所以我希望我能再发送一个?

根据 OP 的说法,它需要通过 Discord 进行身份验证(使用内置的核心逻辑)来建立关系。

硬编码的 WordPress SSO 会阻止这种情况发生,尤其是对于新用户。

如果您找到绕过此限制的方法,欢迎提交 PR 或提供额外文档。

干得漂亮,做得好。这是一个有用的见解。

好吧,这并不是我想要的,也许最好在支持中提问,因为 Discord 登录现在已内置于 Discourse 中。

1 个赞

此插件不支持 WordPress SSO。

但为了给您指明方向,您需要在该表中添加一个条目:

当您通过 Discord 登录时,会自动完成此操作。

我怀疑 WordPress SSO 能代表 Discord 填充该条目,但如果事实并非如此,我愿意接受证明。

1 个赞

我还有一个 OAuth 源,我需要用户使用它来代替 Discord。为了绕过这一点,我按照 OP 的要求设置了 Discord OAuth,但我使用了自定义 CSS 来隐藏所有其他登录源,只留下我希望用户使用的那个,并使用了 display: none; CSS 选项。Discord 的 OAuth 功能“技术上”仍然存在于 HTML 中,但普通最终用户永远找不到它。

然后,用户可以在我的其他 OAuth 源在其用户首选项下创建的帐户中“连接”他们的 Discord。


image

不错,这可能是一个变通方法,但我可能会研究一个实际的代码解决方案,这是否会显示在 Discourse 偏好设置中?也许我们可以私信,以免这个话题臃肿?

您为什么将 Discord 频道与 Discourse 分类而不是主题进行匹配?是因为可能存在同名主题吗?我想让 5 个频道进入 3 个分类中的相关主题,但似乎这不可能?

因为只宣布一个主题会很无聊?

它故意定得很高,这样你就可以在特定类别中宣布新主题。

2 个赞

抱歉,我的意思是这个
image

2 个赞

这是一个客户的要求 :money_bag:

所有聊天记录,据我所知,都会进入每个类别的一个主题,以避免在过多的主题中造成混乱。

2 个赞

我明白了

当然,但是因为它使用了类别,所以我不能在我的“Ford”类别中拥有一个例如“#ford-support”的线程,该线程从 Discord 中的 #ford-support 频道同步,Ruby 不是我选择的语言,所以我怀疑我能否分叉并调整它(就像我对许多非 Ruby 语言的许多其他事情所做的那样)

根据主题/线程名称来做是否很容易?或者是否存在某些限制?

附注图片(有趣的是 GIF 可以)不会同步到主题,不知道是否已知?

编辑:哦,等等,我似乎可以在创建主题后移动它

上次我查看时,Ruby Discord API 中还没有 Threads,但我被告知它“正在开发中”(两年前!)。

如果将来有可能添加对 Threads 的支持,我非常欢迎 PR。

恐怕我最近太忙了,无法专注于插件之外的许多功能开发,只能做付费工作,但我很乐意审查 PR。

1 个赞