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

这仍然是一个问题。如果“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
4 个赞