138 lines
6.7 KiB
Lua
138 lines
6.7 KiB
Lua
-- https://github.com/web-mech/badwords
|
|
-- array can be found in https://raw.githubusercontent.com/web-mech/badwords/master/lib/lang.json
|
|
local words = { "ahole", "anus", "ash0le", "ash0les", "asholes", "ass", "Ass Monkey", "Assface", "assh0le", "assh0lez",
|
|
"asshole", "assholes", "assholz", "asswipe", "azzhole", "bassterds", "bastard", "bastards", "bastardz",
|
|
"basterds", "basterdz", "Biatch", "bitch", "bitches", "Blow Job", "boffing", "butthole", "buttwipe",
|
|
"bøsse", "c0ck", "c0cks", "c0k", "Carpet Muncher", "cawk", "cawks", "Clit", "cnts", "cntz", "cock", "cockhead",
|
|
"cock-head", "cocks", "CockSucker", "cock-sucker", "crap", "cum", "cunt", "cunts", "cuntz", "dick",
|
|
"dild0", "dild0s", "dildo", "dildos", "dilld0", "dilld0s", "dominatricks", "dominatrics", "dominatrix",
|
|
"dyke", "enema", "f u c k", "f u c k e r", "fag", "fag1t", "faget", "fagg1t", "faggit", "faggot",
|
|
"fagg0t", "fagit", "fags", "fagz", "faig", "faigs", "fart", "flipping the bird", "fuck", "fucker",
|
|
"fuckin", "fucking", "fucks", "Fudge Packer", "fuk", "Fukah", "Fuken", "fuker", "Fukin", "Fukk",
|
|
"Fukkah", "Fukken", "Fukker", "Fukkin", "g00k", "God-damned", "h00r", "h0ar", "h0re", "hells", "hoar",
|
|
"hoor", "hoore", "jackoff", "jap", "japs", "jerk-off", "jisim", "jiss", "jizm", "jizz", "knob", "knobs",
|
|
"knobz", "kunt", "kunts", "kuntz", "Lezzian", "Lipshits", "Lipshitz", "masochist", "masokist",
|
|
"massterbait", "masstrbait", "masstrbate", "masterbaiter", "masterbate", "masterbates", "Motha Fucker",
|
|
"Motha Fuker", "Motha Fukkah", "Motha Fukker", "Mother Fucker", "Mother Fukah", "Mother Fuker",
|
|
"Mother Fukkah", "Mother Fukker", "mother-fucker", "Mutha Fucker", "Mutha Fukah", "Mutha Fuker",
|
|
"Mutha Fukkah", "Mutha Fukker", "n1gr", "nastt", "nigger;", "nigur;", "niiger;", "niigr;", "orafis",
|
|
"orgasim;", "orgasm", "orgasum", "oriface", "orifice", "orifiss", "packi", "packie", "packy", "paki",
|
|
"pakie", "paky", "pecker", "peeenus", "peeenusss", "peenus", "peinus", "pen1s", "penas", "penis",
|
|
"penis-breath", "penus", "penuus", "Phuc", "Phuck", "Phuk", "Phuker", "Phukker", "polac", "polack",
|
|
"polak", "Poonani", "pr1c", "pr1ck", "pr1k", "pusse", "pussee", "pussy", "puuke", "puuker", "qweir",
|
|
"recktum", "rectum", "retard", "sadist", "scank", "schlong", "screwing", "semen", "sex", "sexy", "Sh!t",
|
|
"sh1t", "sh1ter", "sh1ts", "sh1tter", "sh1tz", "shit", "shits", "shitter", "Shitty", "Shity", "shitz",
|
|
"Shyt", "Shyte", "Shytty", "Shyty", "skanck", "skank", "skankee", "skankey", "skanks", "Skanky", "slag",
|
|
"slut", "sluts", "Slutty", "slutz", "son-of-a-bitch", "tit", "turd", "va1jina", "vag1na", "vagiina",
|
|
"vagina", "vaj1na", "vajina", "vullva", "vulva", "w0p", "wh00r", "wh0re", "whore", "xrated", "xxx",
|
|
"b!+ch", "bitch", "blowjob", "clit", "arschloch", "fuck", "shit", "ass", "asshole", "b!tch", "b17ch",
|
|
"b1tch", "bastard", "bi+ch", "boiolas", "buceta", "c0ck", "cawk", "chink", "cipa", "clits", "cock",
|
|
"cum", "cunt", "dildo", "dirsa", "ejakulate", "fatass", "fcuk", "fuk", "fux0r", "hoer", "hore", "jism",
|
|
"kawk", "l3itch", "l3i+ch", "luder", "masturbate", "masterbat*", "masterbat3", "motherfucker", "s.o.b.", "mofo",
|
|
"nazi", "nigga", "nigger", "neger", "nutsack", "phuck", "pimpis", "pusse", "pussy", "scrotum", "sh!t", "shemale",
|
|
"shi+", "sh!+", "slut", "smut", "teets", "tits", "boobs", "b00bs", "teez", "testical", "testicle",
|
|
"titt", "w00se", "jackoff", "wank", "whoar", "whore", "*damn", "*dyke", "*fuck*", "*shit*", "@$$",
|
|
"amcik", "andskota", "arse*", "assrammer", "ayir", "bi7ch", "bitch*", "bollock*", "breasts",
|
|
"butt-pirate", "cabron", "cazzo", "chraa", "chuj", "Cock*", "cunt*", "d4mn", "daygo", "dego", "dick*",
|
|
"dike*", "dupa", "dziwka", "ejackulate", "Ekrem*", "Ekto", "enculer", "faen", "fag*", "fanculo", "fanny",
|
|
"feces", "feg", "Felcher", "ficken", "fitt*", "Flikker", "foreskin", "Fotze", "Fu(*", "fuk*",
|
|
"futkretzn", "gook", "guiena", "h0r", "h4x0r", "hell", "helvete", "hoer*", "honkey", "Huevon", "hui",
|
|
"injun", "jizz", "kanker*", "kike", "klootzak", "kraut", "knulle", "kuk", "kuksuger", "Kurac", "kurwa",
|
|
"kusi*", "kyrpa*", "lesbo", "mamhoon", "masturbat*", "merd*", "mibun", "monkleigh", "mouliewop", "muie",
|
|
"mulkku", "muschi", "nazis", "nepesaurio", "nigger*", "orospu", "paska*", "perse", "picka", "pierdol*",
|
|
"pillu*", "pimmel", "piss*", "pizda", "poontsee", "poop", "porn", "p0rn", "pr0n", "preteen", "pula",
|
|
"pule", "puta", "puto", "qahbeh", "queef*", "rautenberg", "schaffer", "scheiss*", "schlampe", "schmuck",
|
|
"screw", "sh!t*", "sharmuta", "sharmute", "shipal", "shiz", "skribz", "skurwysyn", "sphencter", "spic",
|
|
"spierdalaj", "splooge", "suka", "b00b*", "testicle*", "titt*", "twat", "vittu", "wank*", "wetback*",
|
|
"wichser", "wop*", "yed", "zabourah" }
|
|
|
|
-- @swkeep
|
|
local function searchForBadWords(TEXT)
|
|
local badwords = {}
|
|
if type(TEXT) ~= "string" then
|
|
return false
|
|
end
|
|
|
|
for w in TEXT:gmatch("%S+") do
|
|
local state, word = searchInsideWordsUppercase(w)
|
|
if state == true then
|
|
table.insert(badwords, word)
|
|
end
|
|
end
|
|
if next(badwords) ~= nil then
|
|
return {
|
|
reason = 'badword',
|
|
words = badwords
|
|
}
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function searchInsideWordsUppercase(word)
|
|
for index, value in ipairs(words) do
|
|
if string.upper(word) == string.upper(value) then
|
|
return true, word
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
local function reachedMaxCharacters(TEXT, maxLimit)
|
|
if type(TEXT) ~= "string" then
|
|
return 'NOTaSTRING'
|
|
end
|
|
local count = 0
|
|
for w in TEXT:gmatch("%S+") do
|
|
count = count + string.len(TEXT)
|
|
end
|
|
|
|
if count <= maxLimit then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
local function isOneWord(TEXT)
|
|
if type(TEXT) ~= "string" then
|
|
return 'NOTaSTRING'
|
|
end
|
|
local count = 0
|
|
for w in TEXT:gmatch("%S+") do
|
|
count = count + 1
|
|
end
|
|
|
|
if count <= 1 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
local function validateWord(TEXT, maxCharacter)
|
|
if reachedMaxCharacters(TEXT, maxCharacter) == false then
|
|
return searchForBadWords(TEXT)
|
|
else
|
|
return {
|
|
reason = 'maxCharacter'
|
|
}
|
|
end
|
|
end
|
|
|
|
--- check for bad words
|
|
---@param TEXT string
|
|
---@param maxCharacter integer
|
|
---@return boolean|table
|
|
function ValidatePetName(TEXT, maxCharacter)
|
|
-- potentially we won't need isOneWord becuse when players are typing command it's gonna accept only one arg
|
|
if isOneWord(TEXT) then
|
|
return validateWord(TEXT, maxCharacter)
|
|
end
|
|
return {
|
|
reason = 'moreThanOneWord'
|
|
}
|
|
end
|
|
|
|
-- Return the first index with the given value (or nil if not found).
|