diff --git a/fun.go b/fun.go index 003d726..35578ba 100644 --- a/fun.go +++ b/fun.go @@ -104,24 +104,24 @@ func reverbolate(userid int64, honks []*Honk) { h.Precis = string(p) h.Noise = string(n) } - - if userid == -1 { - if h.Precis != "" { - h.Open = "" - } - } else { - unsee(userid, h) - if h.Open == "open" && h.Precis == "unspecified horror" { - h.Precis = "" + j := 0 + for i := 0; i < len(h.Donks); i++ { + if !zap[h.Donks[i].XID] { + h.Donks[j] = h.Donks[i] + j++ } } - if len(h.Noise) > 6000 && h.Open == "open" { - if h.Precis == "" { - h.Precis = "really freaking long" - } - h.Open = "" - } + h.Donks = h.Donks[:j] + } + unsee(honks, userid) + + for _, h := range honks { + local := false + if h.Whofore == 2 || h.Whofore == 3 { + local = true + } + zap := make(map[string]bool) emuxifier := func(e string) string { for _, d := range h.Donks { if d.Name == e { diff --git a/hfcs.go b/hfcs.go index cc5c710..146a25f 100644 --- a/hfcs.go +++ b/hfcs.go @@ -353,21 +353,34 @@ func skipMedia(xonk *Honk) bool { return false } -func unsee(userid int64, h *Honk) { - filts := getfilters(userid, filtCollapse) - for _, f := range filts { - if bad := matchfilterX(h, f); bad != "" { - if h.Precis == "" { - h.Precis = bad +func unsee(honks []*Honk, userid int64) { + if userid != -1 { + colfilts := getfilters(userid, filtCollapse) + rwfilts := getfilters(userid, filtRewrite) + for _, h := range honks { + for _, f := range colfilts { + if bad := matchfilterX(h, f); bad != "" { + if h.Precis == "" { + h.Precis = bad + } + h.Open = "" + break + } + } + if h.Open == "open" && h.Precis == "unspecified horror" { + h.Precis = "" + } + for _, f := range rwfilts { + if matchfilter(h, f) { + h.Noise = f.re_rewrite.ReplaceAllString(h.Noise, f.Replace) + } + } + if len(h.Noise) > 6000 && h.Open == "open" { + if h.Precis == "" { + h.Precis = "really freaking long" + } + h.Open = "" } - h.Open = "" - break - } - } - filts = getfilters(userid, filtRewrite) - for _, f := range filts { - if matchfilter(h, f) { - h.Noise = f.re_rewrite.ReplaceAllString(h.Noise, f.Replace) } } }