Discourse AI 不尊重“所有人”群组

看起来这是导致模板出现问题的同一个已知问题。
everyone-group-unable-to-see-private-templates

在这种情况下,ai-bot 选项会出现,但机器人根本不会响应。

2 个赞

感谢您查找先前的问题! :sunglasses: :+1:

我认为这里也适用:

您不能向匿名用户授予聊天机器人访问权限,因此使用 trust_level_0 是您用例的有效解决方案。 :slight_smile:

8 个赞

@Roman 在阅读 Discourse 中的代码时,我认为现在可以了。

现在是时候关闭这个并移除向后兼容代码了吗?

这有点棘手。我最初添加了 everyone 选项,因为我们希望允许匿名用户查看 gists。每个功能都有自己的规则,所以我不认为将 Persona 的允许组设置为该选项会使该功能对每个人都可用。

这仍然是一个问题。如果“AI 机器人允许的组”设置为 everyone,机器人不会响应。

我认为错误在这里:here

return false if (SiteSetting.ai_bot_allowed_groups_map & post.user.group_ids).blank?

如果设置是 everyone,则此条件返回 false,因为 0 不在 post.user.group_ids 中。

正确的模式是 !user.in_any_groups?(SiteSetting.ai_bot_allowed_groups_map)

它有一个针对 everyone 的特殊情况:

  def in_any_groups?(group_ids)
    group_ids.include?(Group::AUTO_GROUPS[:everyone]) ||
      (is_system_user? && (Group.auto_groups_between(:admins, :trust_level_4) & group_ids).any?) ||
      (group_ids & belonging_to_group_ids).any?
  end
5 个赞