Initial commit.
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
guptoken.py
|
||||
6
README
Normal file
6
README
Normal file
@@ -0,0 +1,6 @@
|
||||
Right now, this requires `guptoken.py` in the same directory to have the function getToken()
|
||||
|
||||
```
|
||||
def getToken():
|
||||
return "YOURTOKENHERE"
|
||||
```
|
||||
2
example_guptoken.py
Normal file
2
example_guptoken.py
Normal file
@@ -0,0 +1,2 @@
|
||||
def getToken():
|
||||
return "YOURTOKENHERE"
|
||||
65
gupbot.py
Normal file
65
gupbot.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# bot.py
|
||||
import os
|
||||
import random
|
||||
import discord
|
||||
import guptoken
|
||||
import insult_generator
|
||||
|
||||
TOKEN = guptoken.getToken()
|
||||
|
||||
intents = discord.Intents.default()
|
||||
intents.members = True
|
||||
client = discord.Client(intents=intents)
|
||||
|
||||
@client.event
|
||||
async def on_ready():
|
||||
print(f'{client.user} has connected to Discord!')
|
||||
|
||||
@client.event
|
||||
async def on_message(message):
|
||||
if message.author == client.user:
|
||||
return
|
||||
|
||||
if message.content.startswith("!insult"):
|
||||
print(f'Message: {message.content}')
|
||||
l = message.content.split(" ")
|
||||
if (len(l) <= 1):
|
||||
return
|
||||
|
||||
id = 0
|
||||
if (l[1].startswith("<@")):
|
||||
id = int(l[1][2:-1])
|
||||
print(f'{id}')
|
||||
|
||||
m = message.channel.members
|
||||
print(f'Terrrgetted user: {l[1]}')
|
||||
|
||||
print(f'Members: {m}')
|
||||
for member in m:
|
||||
print(f'Checking {member.display_name}, {member.id}...')
|
||||
if (member.display_name.lower() == l[1].lower() or member.id == id):
|
||||
response = f'{member.mention} is a {insult_generator.hit_me(3, odds_of_adding_another_word=0.75)}!'
|
||||
await message.channel.send(response)
|
||||
return
|
||||
|
||||
if (message.content.startswith("!survivor")):
|
||||
survivors = ["Acrid", "Artificer", "Bandit", "Captain", "Commando", "Engineer", "Huntress", "Loader", "MUL-T", "Mercenary", "REX", "Railgunner", "Void Fiend"]
|
||||
s = random.choice(survivors)
|
||||
response = f'{message.author.mention} play {s}, you {insult_generator.hit_me(2)}'
|
||||
await message.channel.send(response)
|
||||
return
|
||||
|
||||
if (message.content.startswith("!help")):
|
||||
response = f'{message.author.mention} go screw yourself, {insult_generator.hit_me(1)}'
|
||||
await message.channel.send(response)
|
||||
return
|
||||
|
||||
if (message.content.startswith("!")):
|
||||
response = f'{message.author.mention} uh, *wat*? For a list of commands, type !help.'
|
||||
await message.channel.send(response)
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
client.run(TOKEN)
|
||||
342
insult_generator.py
Normal file
342
insult_generator.py
Normal file
@@ -0,0 +1,342 @@
|
||||
import math
|
||||
import random
|
||||
import time
|
||||
|
||||
insultingAdjectives = [
|
||||
"sweaty",
|
||||
"big",
|
||||
"fat",
|
||||
"dumb",
|
||||
"stupid",
|
||||
"goddamn",
|
||||
"moist",
|
||||
"mega-",
|
||||
"turbo-",
|
||||
"hyper-",
|
||||
"idiotic",
|
||||
"worthless",
|
||||
"flesh-covered",
|
||||
"uptight",
|
||||
"poop flinging",
|
||||
"diseased",
|
||||
"hairy",
|
||||
"miserable",
|
||||
"lonely",
|
||||
"sad",
|
||||
"brain-damaged",
|
||||
"stupendous",
|
||||
"terminally-online",
|
||||
"millennial",
|
||||
"broke-ass",
|
||||
"braindead",
|
||||
"fetal alcohol",
|
||||
"underdeveloped",
|
||||
"talentless",
|
||||
"ignorant",
|
||||
"son-of-a-",
|
||||
"store-brand",
|
||||
"irrelevant",
|
||||
"giant",
|
||||
"deformed",
|
||||
"wannabe",
|
||||
"obsolete",
|
||||
"old",
|
||||
"infantile",
|
||||
"unfunny",
|
||||
"greasy",
|
||||
"degenerate",
|
||||
"lazy",
|
||||
"slovenly",
|
||||
"buck-toothed",
|
||||
"pathetic",
|
||||
"reptilian",
|
||||
"absolute",
|
||||
"feeble-minded",
|
||||
"effeminate",
|
||||
"lumpy",
|
||||
"low-IQ",
|
||||
"sticky",
|
||||
"cringey",
|
||||
"stinky",
|
||||
"phallic",
|
||||
"second-class",
|
||||
"corporate",
|
||||
"anime-watching",
|
||||
"wrinkly",
|
||||
"fugly",
|
||||
"disposable",
|
||||
"v-tuber simping",
|
||||
"desperate",
|
||||
"sleazy",
|
||||
"lowly",
|
||||
]
|
||||
|
||||
adjectivesThatTurnNounsIntoAdjectives = [
|
||||
"-obsessed",
|
||||
"-infested",
|
||||
"-ass",
|
||||
"-like",
|
||||
"-esque",
|
||||
"-face",
|
||||
"-bag",
|
||||
"-sack",
|
||||
"-shaped",
|
||||
"-head",
|
||||
"-smelling",
|
||||
"-covered",
|
||||
"-filled",
|
||||
"-looking-ass",
|
||||
"less",
|
||||
"-tuber",
|
||||
]
|
||||
|
||||
insultingNouns = [
|
||||
"egg",
|
||||
"glue",
|
||||
"fart",
|
||||
"diarrhea",
|
||||
"hair",
|
||||
"poop",
|
||||
"doo-doo",
|
||||
"mother",
|
||||
"daddy",
|
||||
"granny",
|
||||
"pizza",
|
||||
"baby",
|
||||
"sewer",
|
||||
"keeb",
|
||||
"crotch",
|
||||
"frog",
|
||||
"bong",
|
||||
"3D-printer",
|
||||
"puppy",
|
||||
"Funko Pop",
|
||||
"diaper",
|
||||
"moustache",
|
||||
"octopus",
|
||||
"kitten",
|
||||
"banana",
|
||||
"Quagsire",
|
||||
"pony",
|
||||
"garbage",
|
||||
"finger",
|
||||
"watermelon",
|
||||
"Bionicle",
|
||||
"RGB-LED",
|
||||
"robot",
|
||||
"sausage",
|
||||
"uncle",
|
||||
"goop",
|
||||
"hobo",
|
||||
"cigar",
|
||||
"vape",
|
||||
"cat",
|
||||
"spoon",
|
||||
"nugget",
|
||||
"taint",
|
||||
"beer",
|
||||
"hamster",
|
||||
]
|
||||
|
||||
nouns_for_you = [
|
||||
"meat sack",
|
||||
"millennial",
|
||||
"loser",
|
||||
"peasant",
|
||||
"oxygen thief",
|
||||
"waste of space",
|
||||
"dork",
|
||||
"nerd",
|
||||
"dweeb",
|
||||
"ignoramus",
|
||||
"knucklehead",
|
||||
"moron",
|
||||
"hack",
|
||||
"psychopath",
|
||||
"mama's boy",
|
||||
"virgin",
|
||||
"disappointment",
|
||||
"wimp",
|
||||
"so-and-so",
|
||||
"degenerate",
|
||||
"charlatan",
|
||||
"hack",
|
||||
"drain on society",
|
||||
"parasite",
|
||||
"stain",
|
||||
"weeaboo",
|
||||
"creep",
|
||||
"redneck",
|
||||
"phony",
|
||||
"future divorcee",
|
||||
"sellout",
|
||||
"noob",
|
||||
]
|
||||
|
||||
versatile_nouns = [
|
||||
"worm",
|
||||
"douche",
|
||||
"monkey",
|
||||
"orangutan",
|
||||
"wildebeest",
|
||||
"boomer",
|
||||
"dog",
|
||||
"bitch",
|
||||
"turd",
|
||||
"booger",
|
||||
"goblin",
|
||||
"ass",
|
||||
"penis",
|
||||
"hoo-ha",
|
||||
"sphinchter",
|
||||
"rodent",
|
||||
"reptile",
|
||||
"dipstick",
|
||||
"neanderthal",
|
||||
"wiener",
|
||||
"dingus",
|
||||
"scum",
|
||||
"snake",
|
||||
"weasel",
|
||||
"donkey",
|
||||
"bum",
|
||||
"butt",
|
||||
"pimple",
|
||||
"pustule",
|
||||
"boob",
|
||||
"amogus",
|
||||
"corncob",
|
||||
"nut",
|
||||
"nozzle",
|
||||
"redacted",
|
||||
"donut",
|
||||
]
|
||||
|
||||
insultingVerbs = [
|
||||
"suck",
|
||||
"lick",
|
||||
"kick",
|
||||
"punch",
|
||||
"cuddl",
|
||||
"slapp",
|
||||
"fapp",
|
||||
"tugg",
|
||||
"blast",
|
||||
"snort",
|
||||
"defil",
|
||||
"snuggl",
|
||||
"hump",
|
||||
"eat",
|
||||
"lov",
|
||||
"sniff",
|
||||
"touch",
|
||||
"look",
|
||||
"slurp",
|
||||
"ogl",
|
||||
"fondl",
|
||||
"huff",
|
||||
"chew",
|
||||
"spew",
|
||||
"punt",
|
||||
"tast",
|
||||
"grabb",
|
||||
"strok",
|
||||
"pucker",
|
||||
"smooch",
|
||||
"disappoint",
|
||||
"hat",
|
||||
"hoard",
|
||||
"guzzl",
|
||||
"pinch",
|
||||
]
|
||||
|
||||
|
||||
def pick_candidate(words, exclusions):
|
||||
if random.random() < 0.02:
|
||||
# print('hee hee I broke the rules')
|
||||
return random.choice(words)
|
||||
|
||||
candidates = [word for word in words if word not in exclusions]
|
||||
|
||||
if len(candidates) == 0:
|
||||
print('Ran out of words! Reusing one.')
|
||||
return random.choice(words)
|
||||
|
||||
return random.choice(candidates)
|
||||
|
||||
|
||||
def gimme_a_verb(exclusions=""):
|
||||
return pick_candidate(insultingVerbs, exclusions)
|
||||
|
||||
|
||||
def noun_yourself(compound_words_allowed=False, exclusions=""):
|
||||
dice_roll = random.random()
|
||||
|
||||
if not compound_words_allowed or dice_roll < 0.8:
|
||||
return pick_candidate(nouns_for_you + versatile_nouns, exclusions)
|
||||
|
||||
elif dice_roll < 0.9:
|
||||
first_noun = pick_candidate(insultingNouns + versatile_nouns, exclusions)
|
||||
second_noun = pick_candidate(insultingNouns + versatile_nouns, exclusions + first_noun)
|
||||
|
||||
return f'{first_noun} ' f'{second_noun}'
|
||||
|
||||
else:
|
||||
noun = noun_something_else(exclusions)
|
||||
verb = gimme_a_verb(exclusions + noun)
|
||||
return f'{noun}-{verb}er'
|
||||
|
||||
|
||||
def noun_something_else(exclusions=""):
|
||||
return pick_candidate(insultingNouns + versatile_nouns, exclusions)
|
||||
|
||||
|
||||
def get_an_adjective(next_word_is_a_noun, exclusions=""):
|
||||
if random.random() < 0.75:
|
||||
if next_word_is_a_noun:
|
||||
return pick_candidate([word for word in insultingAdjectives if word[-1] != '-'], exclusions)
|
||||
else:
|
||||
return pick_candidate(insultingAdjectives, exclusions)
|
||||
|
||||
else:
|
||||
noun = noun_something_else(exclusions)
|
||||
|
||||
dice_roll = random.randint(0, len(insultingVerbs) + len(adjectivesThatTurnNounsIntoAdjectives))
|
||||
|
||||
if dice_roll < len(insultingVerbs):
|
||||
verb = pick_candidate(insultingVerbs, exclusions)
|
||||
return f'{noun}-{verb}ing'
|
||||
|
||||
else:
|
||||
adjective = pick_candidate(adjectivesThatTurnNounsIntoAdjectives, exclusions)
|
||||
return noun + adjective
|
||||
|
||||
|
||||
def hit_me(maximum_words=math.inf, exclusions="", odds_of_adding_another_word=0.5):
|
||||
output = ''
|
||||
word_count = 1 # Includes the noun
|
||||
|
||||
dice_roll = random.random()
|
||||
|
||||
while word_count < maximum_words and dice_roll < odds_of_adding_another_word:
|
||||
dice_roll = random.random()
|
||||
|
||||
output += get_an_adjective(dice_roll < odds_of_adding_another_word, exclusions=(output + exclusions))
|
||||
if output[-1] is not '-':
|
||||
output += ' '
|
||||
|
||||
word_count += 1
|
||||
|
||||
hyphenated = len(output) > 0 and output[-1] == '-'
|
||||
output += noun_yourself(compound_words_allowed=(not hyphenated), exclusions=(output + exclusions))
|
||||
|
||||
return output
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
last_insult = ''
|
||||
|
||||
while True:
|
||||
last_insult = hit_me(3, exclusions=last_insult, odds_of_adding_another_word=0.75)
|
||||
print(last_insult)
|
||||
time.sleep(0.5)
|
||||
Reference in New Issue
Block a user