You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.0 KiB

package main
import (
"fmt"
"github.com/kf5grd/keybasebot"
"samhofi.us/x/keybase/v2"
"samhofi.us/x/keybase/v2/types/chat1"
)
func nsfwFilter() keybasebot.Adapter {
return func(action keybasebot.BotAction) keybasebot.BotAction {
return func(m chat1.MsgSummary, b *keybasebot.Bot) (bool, error) {
// if its not a team, nsfw is always allowed
if m.Channel.MembersType == keybase.USER {
b.Logger.Debug("boobs are allowed in %s", m.Channel.Name)
return action(m, b)
}
// if the team is in the allowed list, nsfw is allowed
if m.Channel.MembersType == keybase.TEAM {
data, ok := b.Meta["nsfwAllowed"]
if !ok {
err := fmt.Errorf("Unable to fetch allowed teams from meta")
return false, err
}
allowedTeams := data.(map[chat1.ConvIDStr]bool)
if isAllowed := allowedTeams[m.ConvID]; isAllowed {
return action(m, b)
}
}
// if the team is not allowed, fail silently
b.Logger.Debug("boobs are not allowed in %s", m.Channel.Name)
return true, nil
}
}
}