automod_legacy

package
v2.33.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2024 License: MIT Imports: 28 Imported by: 0

README

Automod

Automod provides some auto moderation features.

Features:

  • Ban websites
  • Ban words
  • Spam detection
  • Ban invite links
  • Mention spam detection

Documentation

Index

Constants

This section is empty.

Variables

View Source
var BuiltinSwearWords = map[string]bool{
	"anal":        true,
	"anus":        true,
	"arse":        true,
	"ass":         true,
	"b1tch":       true,
	"ballsack":    true,
	"bastard":     true,
	"bitch":       true,
	"biatch":      true,
	"blowjob":     true,
	"bollock":     true,
	"bollok":      true,
	"boner":       true,
	"boob":        true,
	"boobs":       true,
	"buttplug":    true,
	"clitoris":    true,
	"cock":        true,
	"cum":         true,
	"cunt":        true,
	"dick":        true,
	"dildo":       true,
	"dyke":        true,
	"erection":    true,
	"fag":         true,
	"faggot":      true,
	"feck":        true,
	"fellate":     true,
	"fellatio":    true,
	"felching":    true,
	"fuck":        true,
	"fucks":       true,
	"fudgepacker": true,
	"genitals":    true,
	"hell":        true,
	"jerk":        true,
	"jizz":        true,
	"knobend":     true,
	"labia":       true,
	"masturbate":  true,
	"muff":        true,
	"nigger":      true,
	"nigga":       true,
	"penis":       true,
	"piss":        true,
	"poop":        true,
	"pube":        true,
	"pussy":       true,
	"scrotum":     true,
	"sex":         true,
	"shit":        true,
	"sh1t":        true,
	"slut":        true,
	"smegma":      true,
	"spunk":       true,
	"tit":         true,
	"tranny":      true,
	"trannies":    true,
	"tosser":      true,
	"turd":        true,
	"twat":        true,
	"vagina":      true,
	"wank":        true,
	"whore":       true,
	"tits":        true,
	"titty":       true,
	"asshole":     true,
	"fvck":        true,
	"asshat":      true,
	"pu55y":       true,
	"pen1s":       true,
}

These words are listed in in alphabethical order.

View Source
var PageHTML string

Functions

func CheckMessage

func CheckMessage(evt *eventsystem.EventData, m *discordgo.Message) bool

func CheckMessageForBadInvites

func CheckMessageForBadInvites(msg string, guildID int64) (containsBadInvites bool)

func CommandsMessageFilterFunc

func CommandsMessageFilterFunc(evt *eventsystem.EventData, msg *discordgo.Message) bool

func ExtraPostMW

func ExtraPostMW(inner http.Handler) http.Handler

Invalidates the cache

func HandleAutomod

func HandleAutomod(w http.ResponseWriter, r *http.Request) interface{}

func HandleMessageUpdate

func HandleMessageUpdate(evt *eventsystem.EventData)

func HandleUpdateAutomodRules

func HandleUpdateAutomodRules(event *pubsub.Event)

Invalidate the cache when the rules have changed

func KeyConfig

func KeyConfig(gID int64) string

func KeyEnabled

func KeyEnabled(gID int64) string

Redis keys

func KeyViolations

func KeyViolations(gID, uID int64, violation string) string

func RegisterPlugin

func RegisterPlugin()

Types

type BaseRule

type BaseRule struct {
	Enabled bool

	ViolationsExpire int `valid:"0,44640"`

	// Execute these punishments after certain number of repeated violaions
	MuteAfter    int `valid:"0,1000"`
	MuteDuration int `valid:"0,44640"`
	KickAfter    int `valid:"0,1000"`
	BanAfter     int `valid:"0,1000"`

	IgnoreRole     string   `valid:"role,true"`
	IgnoreChannels []string `valid:"channel,false"`
}

func (BaseRule) GetMuteDuration

func (r BaseRule) GetMuteDuration() int

func (BaseRule) IgnoreChannelsParsed

func (r BaseRule) IgnoreChannelsParsed() []int64

func (BaseRule) IgnoreRoleInt

func (r BaseRule) IgnoreRoleInt() int64

func (BaseRule) PushViolation

func (r BaseRule) PushViolation(key string) (p Punishment, err error)

func (BaseRule) ShouldIgnore

func (r BaseRule) ShouldIgnore(cs *dstate.ChannelState, evt *discordgo.Message, ms *dstate.MemberState) bool

Returns true if this rule should be ignored

type Condition

type Condition string

type Config

type Config struct {
	Enabled bool
	Spam    *SpamRule    `valid:"traverse"`
	Mention *MentionRule `valid:"traverse"`
	Invite  *InviteRule  `valid:"traverse"`
	Links   *LinksRule   `valid:"traverse"`
	Sites   *SitesRule   `valid:"traverse"`
	Words   *WordsRule   `valid:"traverse"`
}

func CachedGetConfig

func CachedGetConfig(gID int64) (*Config, error)

CachedGetConfig either retrieves from local application cache or redis

func GetConfig

func GetConfig(guildID int64) (config *Config, err error)

func NewConfig

func NewConfig() *Config

func (Config) Name

func (c Config) Name() string

func (Config) Save

func (c Config) Save(guildID int64) error

type GeneralForm

type GeneralForm struct {
	Enabled bool
}

type GuildInvites added in v2.9.0

type GuildInvites struct {
	// contains filtered or unexported fields
}

type InviteRule

type InviteRule struct {
	BaseRule `valid:"traverse"`
}

func (*InviteRule) Check

func (i *InviteRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

type LinksRule

type LinksRule struct {
	BaseRule `valid:"traverse"`
}

func (*LinksRule) Check

func (l *LinksRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

type MentionRule

type MentionRule struct {
	BaseRule `valid:"traverse"`

	Treshold int `valid:"0,500"`
}

func (*MentionRule) Check

func (m *MentionRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

type Plugin

type Plugin struct{}

func (*Plugin) AllFeatureFlags

func (p *Plugin) AllFeatureFlags() []string

func (*Plugin) BotInit

func (p *Plugin) BotInit()

func (*Plugin) InitWeb

func (p *Plugin) InitWeb()

func (*Plugin) LoadServerHomeWidget

func (p *Plugin) LoadServerHomeWidget(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func (*Plugin) Name

func (p *Plugin) Name() string

func (*Plugin) PluginInfo

func (p *Plugin) PluginInfo() *common.PluginInfo

func (*Plugin) SysName

func (p *Plugin) SysName() string

func (*Plugin) UpdateFeatureFlags

func (p *Plugin) UpdateFeatureFlags(guildID int64) ([]string, error)

type Punishment

type Punishment int
const (
	PunishNone Punishment = iota
	PunishMute
	PunishKick
	PunishBan
)

type Rule

type Rule interface {
	Check(m *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)
	ShouldIgnore(cs *dstate.ChannelState, msg *discordgo.Message, m *dstate.MemberState) bool
	GetMuteDuration() int
}

type SitesRule

type SitesRule struct {
	BaseRule `valid:"traverse"`

	GoogleSafeBrowsingEnabled bool
	ScamLinkProtection        bool

	BannedWebsites string `valid:",10000"`
	// contains filtered or unexported fields
}

func (*SitesRule) Check

func (s *SitesRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

func (*SitesRule) GetCompiled

func (w *SitesRule) GetCompiled() []string

type SpamRule

type SpamRule struct {
	BaseRule `valid:"traverse"`

	NumMessages int `valid:"0,1000"`
	Within      int `valid:"0,100"`
}

func (*SpamRule) Check

func (s *SpamRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

Triggers when a certain number of messages is found by the same author within a timeframe

func (*SpamRule) FindSpam

func (s *SpamRule) FindSpam(evt *discordgo.Message, cs *dstate.ChannelState) bool

type WordsRule

type WordsRule struct {
	BaseRule          `valid:"traverse"`
	BuiltinSwearWords bool
	BannedWords       string `valid:",25000"`
	// contains filtered or unexported fields
}

func (*WordsRule) Check

func (w *WordsRule) Check(evt *discordgo.Message, cs *dstate.ChannelState) (del bool, punishment Punishment, msg string, err error)

func (*WordsRule) CheckMessage

func (w *WordsRule) CheckMessage(content string) (word string)

func (*WordsRule) GetCompiled

func (w *WordsRule) GetCompiled() map[string]bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL