mirror of
https://github.com/litruv/DAdmin.git
synced 2026-07-24 02:36:11 +10:00
free insults
This commit is contained in:
474
commands/insult.js
Normal file
474
commands/insult.js
Normal file
@@ -0,0 +1,474 @@
|
||||
module.exports = {
|
||||
name: 'insult',
|
||||
alias: ['insult'],
|
||||
helptext: 'Fresh insults directed at whoever you want',
|
||||
helphide: false,
|
||||
permissions: ['READ_MESSAGES'],
|
||||
category: 'general',
|
||||
command: (client, msg) => {
|
||||
if (msg.mentions.members.array().length > 0)
|
||||
msg.channel.send(msg.mentions.members.first() + ', ' + getInsult());
|
||||
else
|
||||
msg.reply(getInsult());
|
||||
}
|
||||
}
|
||||
|
||||
const importedBuckets = {
|
||||
insults: [
|
||||
{ weight: 100, value: "Get [disease] and [die][you_blank]." },
|
||||
{ weight: 500, value: "I hope [bad_thing_happens_to_you][you_blank]." },
|
||||
{ weight: 100, value: "your [relative] (p)[hate] you[you_blank]." },
|
||||
{ weight: 100, value: "[you_smell] like [animal_excrement]." },
|
||||
{ weight: 100, value: "[you_are] (s)[noun]." },
|
||||
{ weight: 100, value: "[you_are] (s)[adj] [noun]." },
|
||||
{ weight: 100, value: "[you_are] (s)[noun], (s)[adj] [noun]." },
|
||||
{ weight: 100, value: "[you_are] (s)[noun] and your [relative] is (s)[noun]." },
|
||||
{ weight: 200, value: "[noun]." },
|
||||
{ weight: 50, value: "a thousand (p)[sex_anatomy] upon [your_face]." },
|
||||
{ weight: 100, value: "you are (s)[walking] [anatomy]." },
|
||||
{ weight: 100, value: "[your_or_your_relatives] [body_part_or_parts_are_ugly]." },
|
||||
{ weight: 100, value: "you [walk] like (s)[animal][you_blank]." },
|
||||
{ weight: 50, value: "I [hate] your [animal]-[body_part_or_body_parts]." },
|
||||
{ weight: 100, value: "my, what [ugly_body_part_or_parts] you have!" },
|
||||
{ weight: 50, value: "on [certain_day] you [doing_something_embarrassing][maybe_while_your_relative_watches]." },
|
||||
{ weight: 50, value: "between you and r{(s)[adj] [noun]}, I'd rather be r{(s)[adj] [noun]}." },
|
||||
{ weight: 100, value: "your [hygiene] is [atrocious][you_blank]." },
|
||||
{ weight: 100, value: "your [body_parts] are [ugly], your [body_part] is [ugly], and you smell like (s)[smelly_noun]." },
|
||||
{ weight: 50, value: "you're like (s)[noun], but [dumber]." },
|
||||
],
|
||||
your_or_your_relatives: [
|
||||
{ weight: 200, value: "your" },
|
||||
{ weight: 100, value: "your [relative]'s" }
|
||||
],
|
||||
body_part_or_parts_are_ugly: [
|
||||
"[body_part] is [ugly]",
|
||||
"[body_parts] are [ugly]"
|
||||
],
|
||||
bad_thing_happens_to_you: [
|
||||
"it smells like (s)[smelly_noun] on your [nice_day]",
|
||||
"[you_get] [disease]",
|
||||
"[you_get] [hiccups]",
|
||||
"your child grows up (s)[adj] [noun]",
|
||||
"[you_get] [raped] by a [pack] of (p)[animal]",
|
||||
"you fall [off_a_cliff] and die",
|
||||
"[you_get] [crucified]",
|
||||
"[you_get] [hanged]",
|
||||
"your car gets towed",
|
||||
"you walk in on your [relative] masturbating",
|
||||
"your [relative] catches you masturbating",
|
||||
"you have an unplanned child",
|
||||
"someone steals your car",
|
||||
"you get a nose bleed",
|
||||
"no one remembers your birthday",
|
||||
"you miss a mortgage payment and lose your home",
|
||||
"[you_get] [slapped]",
|
||||
"you spontaneously combust",
|
||||
"your [relative] has an affair with your [relative]",
|
||||
"[you_get] stabbed with (s)[dirty] [knife]",
|
||||
"your [relative] marries a [racist]",
|
||||
"you lose your job",
|
||||
"you marry the wrong person",
|
||||
"you fall into a ditch",
|
||||
"you miss the bus",
|
||||
"you get gum stuck in your hair",
|
||||
"you drop your phone",
|
||||
"you shit your pants",
|
||||
"you miss an important phone call",
|
||||
"you get a parking ticket",
|
||||
"you get [hiccups]",
|
||||
"(s)[fly] [flies_in_your_eye]",
|
||||
"you stub your toe",
|
||||
"you lose your keys",
|
||||
"your leg falls asleep",
|
||||
"you get locked out of your house",
|
||||
"you get your identity stolen",
|
||||
"you get passed on a promotion",
|
||||
"you fall down in public",
|
||||
"you step in [animal] [feces]",
|
||||
"you never find true love",
|
||||
"you get caught watching [animal] porn",
|
||||
"you get arrested for fraud"
|
||||
],
|
||||
animal_excrement: [
|
||||
"[animal] [excrement]",
|
||||
"fresh [animal] [excrement]",
|
||||
"a piece of [animal] [feces]",
|
||||
"a fresh piece of [animal] [feces]"
|
||||
],
|
||||
racist: ["racist", "nazi"],
|
||||
knife: ["knife", "knife", "pitchfork", "fork", "syringe", "stick"],
|
||||
dirty: ["dirty", "rusty", "AIDS-infected"],
|
||||
crucified: ["crucified", "crucified upside-down"],
|
||||
hanged: ["hanged", "hanged for (v)[fuck] (p)[animal]"],
|
||||
slapped: ["slapped", "bitch-slapped", "slapped silly", "spat on"],
|
||||
off_a_cliff: ["off a cliff", "down a well", "off a mountain"],
|
||||
you_blank: ["", ", you [noun]", ", you [adj] [noun]"],
|
||||
you_get: ["your [relative] gets", "you get"],
|
||||
you_smell: ["you smell", "your [relative] smells", "your breath smells"],
|
||||
you_are: ["you are", "your [relative] is"],
|
||||
you_have: ["you have", "your [relative] has"],
|
||||
your: ["your", "your [relative]'s"],
|
||||
your_face: ["you", "your face", "your family", "you and your family"],
|
||||
relative: [
|
||||
"brother",
|
||||
"child",
|
||||
"sister",
|
||||
"dad",
|
||||
"mom",
|
||||
"grandpa",
|
||||
"grandma",
|
||||
"dog",
|
||||
"cat",
|
||||
"boyfriend",
|
||||
"girlfriend"
|
||||
],
|
||||
disease: ["AIDS", "cholera", "ebola", "smallpox", "leprosy"],
|
||||
hiccups: [
|
||||
"hiccups",
|
||||
"jock-itch",
|
||||
"sunburn",
|
||||
"athlete's foot",
|
||||
"bad breath",
|
||||
"frizzy hair",
|
||||
"a paper cut",
|
||||
"pink eye",
|
||||
"the runs",
|
||||
"food poisoning"
|
||||
],
|
||||
adj: [
|
||||
"[compound_adj]",
|
||||
"[single_word_adj]",
|
||||
"[single_word_adj], [compound_adj]"
|
||||
],
|
||||
compound_adj: [
|
||||
"[penis]-sucking",
|
||||
"[fluid]-(v)[guzzle]",
|
||||
"[feces]-(v)[eat]",
|
||||
"[excrement]-stained",
|
||||
"[animal]-(v)[fuck]",
|
||||
"[disease]-ridden",
|
||||
"[animal]-infested"
|
||||
],
|
||||
single_word_adj: [
|
||||
"bloody",
|
||||
"brain-dead",
|
||||
"degenerate",
|
||||
"depraved",
|
||||
"despicable",
|
||||
"disgusting",
|
||||
"drooling",
|
||||
"fat",
|
||||
"festering",
|
||||
"filthy",
|
||||
"half-witted",
|
||||
"insignificant",
|
||||
"insecure",
|
||||
"meat-headed",
|
||||
"miserable",
|
||||
"pathetic",
|
||||
"puerile",
|
||||
"rancid",
|
||||
"repulsive",
|
||||
"ridiculous",
|
||||
"slack-jawed",
|
||||
"ugly",
|
||||
"vulgar",
|
||||
"worthless"
|
||||
],
|
||||
noun: [
|
||||
"[anatomy]",
|
||||
"[fluid_container]",
|
||||
"[smelly_noun]-[food]",
|
||||
"[sex_anatomy]-face",
|
||||
"[smelly_noun]-breath",
|
||||
"piece of [feces]",
|
||||
"piece of [animal] [feces]",
|
||||
"son of (s)[animal]",
|
||||
"[buffoon]",
|
||||
"[fluid]-(n)[guzzle]",
|
||||
"[feces]-(n)[eat]",
|
||||
"[animal]-(n)[fuck]",
|
||||
"[fruit]-[sex_anatomy]",
|
||||
"[excrement]-stain",
|
||||
"[sex_anatomy]-monster",
|
||||
"miscreant",
|
||||
"troglodyte",
|
||||
"paper cut",
|
||||
"canker sore",
|
||||
"dildo",
|
||||
"slut",
|
||||
"[racist]"
|
||||
],
|
||||
fluid_container: ["[fluid]-[container]", "[container] of [fluid]"],
|
||||
container: ["bag", "sack", "bucket", "bowl"],
|
||||
buffoon: ["buffoon", "moron", "nincompoop", "idiot", "loser", "dummy"],
|
||||
anatomy: [
|
||||
"[penis]",
|
||||
"[pubic_hair]",
|
||||
"[anus]",
|
||||
"canker",
|
||||
"pustule",
|
||||
"wart",
|
||||
"ovary",
|
||||
"tit",
|
||||
"testicle"
|
||||
],
|
||||
smelly_noun: ["[penis]", "[anus]", "[feces]", "fart", "armpit"],
|
||||
sex_anatomy: ["[penis]", "[anus]"],
|
||||
anus: ["anus", "ass", "rectum", "butt"],
|
||||
penis: ["cock", "dick", "penis", "dong"],
|
||||
animal: [
|
||||
"alligator",
|
||||
"ape",
|
||||
"baboon",
|
||||
"camel",
|
||||
"chicken",
|
||||
"chimpanzee",
|
||||
"chihuahua",
|
||||
"cow",
|
||||
"crocodile",
|
||||
"dog",
|
||||
"donkey",
|
||||
"elephant",
|
||||
"fish",
|
||||
"goat",
|
||||
"hippo",
|
||||
"horse",
|
||||
"hyena",
|
||||
"llama",
|
||||
"monkey",
|
||||
"pig",
|
||||
"rat",
|
||||
"skunk",
|
||||
"warthog"
|
||||
],
|
||||
fuck: ["fist", "fuck", "hump", "molest", "slap", "violate"],
|
||||
excrement: ["[feces]", "[semen]", "[urine]", "[vomit]", "douche"],
|
||||
fluid: ["[semen]", "[urine]", "[vomit]", "douche", "diarrhea"],
|
||||
feces: ["poop", "shit", "turd"],
|
||||
feces_verb: ["poop", "shit"],
|
||||
eat: ["eat", "lick", "sniff"],
|
||||
semen: ["cum", "jizz"],
|
||||
guzzle: ["chug", "drink", "guzzle"],
|
||||
urine: ["piss", "urine"],
|
||||
vomit: ["puke", "vomit"],
|
||||
pubic_hair: ["pube", "pubic hair"],
|
||||
raped: ["eaten", "humped", "violated", "captured", "imprisoned", "enslaved"],
|
||||
pack: ["group", "family", "pack", "swarm"],
|
||||
fruit: ["banana", "lemon", "mango", "kiwi", "cheese"],
|
||||
food: ["burger", "sandwich", "cake", "biscuit"],
|
||||
small_object: ["[fruit]", "[small_animal]"],
|
||||
small_animal: ["rat", "gerbil", "hamster", "kitten", "insect", "maggot"],
|
||||
nice_day: ["wedding day", "anniversary", "birthday"],
|
||||
walking: ["walking", "talking"],
|
||||
die: [
|
||||
"die",
|
||||
"fall down a set of stairs",
|
||||
"run into a wall",
|
||||
"walk into oncoming traffic"
|
||||
],
|
||||
fly: ["mosquito", "gnat", "bee"],
|
||||
flies_in_your_eye: [
|
||||
"lands on your eye",
|
||||
"lands in your ear",
|
||||
"flies up your butt",
|
||||
"flies in your mouth"
|
||||
],
|
||||
ugly: [
|
||||
"atrocious",
|
||||
"sub-par",
|
||||
"vomit-inducing",
|
||||
"disgusting",
|
||||
"deformed",
|
||||
"malformed",
|
||||
"ugly",
|
||||
"gross",
|
||||
"nauseating",
|
||||
"weird"
|
||||
],
|
||||
body_part: ["face", "nose", "head", "beard", "skin", "hair", "forehead"],
|
||||
countable_body_part: ["face", "nose", "head", "beard", "forehead"],
|
||||
body_parts: ["ears", "eyes", "arms", "legs", "teeth", "lips"],
|
||||
body_part_or_body_parts: ["[body_part]", "[body_parts]"],
|
||||
ugly_body_part_or_parts: [
|
||||
"[ugly] [body_parts]",
|
||||
"(s)[ugly] [countable_body_part]"
|
||||
],
|
||||
walk: ["walk", "smell", "look", "sound", "laugh"],
|
||||
hate: ["hate", "loathe", "despise", "detest"],
|
||||
doing_something_embarrassing: [
|
||||
"[feces_verb] on (p)[animal]",
|
||||
"expose yourself to children",
|
||||
"sniff (s)[smelly_noun]",
|
||||
"bathe in [fluid]",
|
||||
"drink [animal] [urine]",
|
||||
"eat [animal] [feces]",
|
||||
"masturbate to [animal] porn"
|
||||
],
|
||||
maybe_while_your_relative_watches: ["", " while your [relative] [watches]"],
|
||||
watches: ["watches", "films it"],
|
||||
certain_day: [
|
||||
"Mondays",
|
||||
"Tuesdays",
|
||||
"Wednesdays",
|
||||
"Thursdays",
|
||||
"Fridays",
|
||||
"Saturdays",
|
||||
"Sundays",
|
||||
"Christmas",
|
||||
"New Years",
|
||||
"New Years Eve",
|
||||
"Halloween",
|
||||
"Valentine's Day",
|
||||
"Martin Luther King Day",
|
||||
"President's Day",
|
||||
"Memorial Day",
|
||||
"Labour Day"
|
||||
],
|
||||
hygiene: ["personal hygiene", "oral hygiene", "hygiene"],
|
||||
atrocious: [
|
||||
"terrible",
|
||||
"horrendous",
|
||||
"atrocious",
|
||||
"sub-par",
|
||||
"not good",
|
||||
"disgusting"
|
||||
],
|
||||
dumber: [
|
||||
"dumber",
|
||||
"stupider",
|
||||
"more annoying",
|
||||
"smellier",
|
||||
"fatter",
|
||||
"grosser",
|
||||
"worse"
|
||||
]
|
||||
};
|
||||
|
||||
const isVowel = letter =>
|
||||
["a", "e", "i", "o", "u"].includes(letter.toLowerCase());
|
||||
|
||||
const addIndefiniteArticle = str => {
|
||||
if (str.match(/^(use|urin)/)) {
|
||||
return "a " + str;
|
||||
}
|
||||
|
||||
if (isVowel(str[0])) {
|
||||
return "an " + str;
|
||||
}
|
||||
|
||||
return "a " + str;
|
||||
};
|
||||
|
||||
const capitalize = str => str[0].toUpperCase() + str.slice(1);
|
||||
|
||||
const pluralize = str => {
|
||||
if (str.slice(-1) === "s") {
|
||||
return str + "es";
|
||||
}
|
||||
if (str.slice(-2) === "sh") {
|
||||
return str + "es";
|
||||
}
|
||||
return str + "s";
|
||||
};
|
||||
|
||||
const nounify = str => {
|
||||
if (str.slice(-3) === "ate") {
|
||||
return str.slice(0, str.length - 1) + "or";
|
||||
}
|
||||
|
||||
if (isVowel(str.slice(-1))) {
|
||||
return str + "r";
|
||||
}
|
||||
|
||||
if (isVowel(str[str.length - 2]) && isVowel(str[str.length - 3])) {
|
||||
return str + "er";
|
||||
}
|
||||
|
||||
if (isVowel(str[str.length - 2])) {
|
||||
return str + str.slice(-1) + "er";
|
||||
}
|
||||
|
||||
return str + "er";
|
||||
};
|
||||
|
||||
const ingify = str => {
|
||||
if (isVowel(str.slice(-1))) {
|
||||
return str.slice(0, str.length - 1) + "ing";
|
||||
}
|
||||
|
||||
if (isVowel(str[str.length - 2]) && isVowel(str[str.length - 3])) {
|
||||
return str + "ing";
|
||||
}
|
||||
|
||||
if (isVowel(str[str.length - 2])) {
|
||||
return str + str.slice(-1) + "ing";
|
||||
}
|
||||
|
||||
return str + "ing";
|
||||
};
|
||||
|
||||
|
||||
const randomElement = arr => {
|
||||
if (arr[0] && arr[0].weight) {
|
||||
const totalWeight = arr.reduce((acc, curr) => acc + curr.weight, 0);
|
||||
const rand = Math.random() * totalWeight;
|
||||
let count = 0, index = 0;
|
||||
|
||||
do {
|
||||
count += arr[index].weight;
|
||||
index++;
|
||||
} while (count < rand);
|
||||
|
||||
return arr[index - 1].value;
|
||||
} else {
|
||||
const index = Math.floor(Math.random() * arr.length);
|
||||
return arr[index];
|
||||
}
|
||||
};
|
||||
|
||||
const replacePatternWithModifier = buckets => (_, modifier, bucketName) => {
|
||||
const phrase = select(bucketName, buckets);
|
||||
|
||||
switch (modifier) {
|
||||
case "s":
|
||||
return addIndefiniteArticle(phrase);
|
||||
case "c":
|
||||
return capitalize(phrase);
|
||||
case "p":
|
||||
return pluralize(phrase);
|
||||
case "n":
|
||||
return nounify(phrase);
|
||||
case "v":
|
||||
return ingify(phrase);
|
||||
default:
|
||||
return phrase;
|
||||
}
|
||||
};
|
||||
|
||||
const replaceSimplePattern = buckets => (_, bucketName) =>
|
||||
select(bucketName, buckets);
|
||||
|
||||
function parse(str, buckets) {
|
||||
let output = str;
|
||||
const repeatingMatch = str.match(/r{(.*?)}/);
|
||||
|
||||
if (repeatingMatch) {
|
||||
const phrase = parse(repeatingMatch[1], buckets);
|
||||
|
||||
output = output.replace(/r{.*?}/g, phrase);
|
||||
}
|
||||
|
||||
return output
|
||||
.replace(/\((.)\)\[(.*?)]/g, replacePatternWithModifier(buckets))
|
||||
.replace(/\[(.*?)]/g, replaceSimplePattern(buckets));
|
||||
}
|
||||
|
||||
function select(bucketName, buckets) {
|
||||
const phrase = randomElement(buckets[bucketName]);
|
||||
|
||||
return parse(phrase, buckets);
|
||||
}
|
||||
|
||||
const getInsult = (buckets = importedBuckets) =>
|
||||
capitalize(select("insults", buckets));
|
||||
Reference in New Issue
Block a user