from sopel import module
import subprocess
import random

JOKES = [
"There are only 10 types of people in the world: those that understand binary and those that don't.",
"Computers make very fast, very accurate mistakes.",
"Be nice to the nerds, for all you know they might be the next Bill Gates!",
"Artificial intelligence usually beats real stupidity.",
"To err is human - and to blame it on a computer is even more so.",
"CAPS LOCK - Preventing Login Since 1980.",
"The truth is out there. Anybody got the URL?",
"The Internet: where men are men, women are men, and children are FBI agents.",
"Some things Man was never meant to know. For everything else, there's DuckDuckGo (and StartPage and Ixquick; definitely not Google).",
"The box said 'Requires Windows Vista or better'. So I installed GNU/LINUX.",
"UNIX (or GNU/Linux) is basically a simple operating system, but you have to be a genius to understand the simplicity.",
"In a world without fences and walls, who needs Gates and Windows?",
"C://dos",
"C://dos.run",
"run.dos.run",
"Bugs come in through open Windows.",
"Penguins love cold, they won't survive the sun.",
"Unix (and GNU/Linux) is user friendly. It's just selective about who its friends are.",
"Failure is not an option. It comes bundled with your Microsoft (and Apple) product.",
"NT is the only OS that has caused me to beat a piece of hardware to death with my bare hands.",
"Microsoft: \"You've got questions. We've got dancing paperclips.\"",
"Microsoft is not the answer. Microsoft is the question. NO is the answer.",
"Windows isn't a virus, viruses do something.",
"Computers are like air conditioners: they stop working when you open Windows.",
"Mac users swear by their Mac, PC users swear at their PC.",
"If at first you don't succeed; call it version 1.0.",
"My software never has bugs. It just develops random features.",
"I would love to change the world, but they won't give me the source code.",
"The code that is the hardest to debug is the code that you know cannot possibly be wrong.",
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.",
"The beginning of the programmer's wisdom is understanding the difference between getting program to run and having a runnable program.",
"I'm not anti-social; I'm just not user friendly.",
"Hey! It compiles! Ship it!",
"If Ruby is not and Perl is the answer, you don't understand the question.",
"The more I C, the less I see.",
"If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.",
"Programmers are tools for converting caffeine into code.",
"My attitude isn't bad. It's in beta.",
"Enter any 11-digit prime number to continue.",
"E-mail returned to sender, insufficient voltage.",
"All wiyht. Rho sritched mg kegtops awound?",
"If I wanted a warm fuzzy feeling, I'd antialias my graphics!",
"If brute force doesn't solve your problems, then you aren't using enough.",
"SUPERCOMPUTER: what it sounded like before you bought it.",
"Linus Torvalds: \"Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies.\"",
"There are three kinds of people: those who can count and those who can't.",
"Latest survey shows that 3 out of 4 people make up 75% of the world's population.",
"An infinite crowd of mathematicians enters a bar. The first one orders a pint, the second one a half pint, the third one a quarter pint... \"I understand\", says the bartender - and pours two pints.",
"Knock knock. Who's there? SYN flood. SYN flood who? Knock knock...",
"Linux geek started working at McDonalds. A customer asked him for a Big Mac and he gave him a bit of paper with FF:FF:FF:FF:FF:FF written on it.",
"Never trust an operating system you don't have sources for. ",
"Microsoft gives you Windows... Linux gives you the whole house. ",
"Linux, DOS, Windows NT -- The Good, the Bad, and the Ugly ",
"Going from DOS to Linux is like trading a glider for an F117. ",
"Linux, because we don't need no steenkin' Blue Screen of Death! ",
"The nice thing about Windows is - It does not just crash, it displays a dialog.",
"Fatal Error: Found MS-Windows System -> Repartitioning Disk for Linux... ",
"Microsoft: \"You've got questions. We've got dancing paperclips.\"",
"The box said \"Windows 98 or better\" - so I installed Linux ",
"Linux is not user-friendly. It _is_ user-friendly. It is not ignorant-friendly and idiot-friendly.",
"GNU/Linux: because a PC is a terrible thing to waste.",
"Linux: the choice of a GNU generation",
"Oxymoron: Microsoft Works.",
"Best joke ever: https://support.microsoft.com/en-us/kb/247804",
"Richard Stallman pipes the Emacs binaries to /dev/dsp before he goes to sleep.",
"The R in RMS stands for RMS.",
"Richard Stallman can telnet into Mordor.",
"Richard Stallman wrote his own library and lives in it.",
"Richard Stallman is the only man alive who can pronounce GNU the way it is meant to be pronounced.",
"Richard Stallman ported Emacs to Intel 4004 chip.",
"When Richard Stallman uses floats, there are no rounding errors.",
"Richard Stallman calculates the universe's entropy by exploiting forced stack overflows.",
"Richard Stallman can remove his own appendix, using only GDB.",
"On Richard Stallman's computer the bootloader is contained in his .emacs.",
"Richard Stallman doesn't use web browsers. He sends a link to a daemon that uses wget to fetch the page and sends it back to him.",
"You like to release non-free software around Richard Stallman? I too like to live dangerously...",
"Richard Stallman pipes the Emacs binaries to /dev/dsp before he goes to sleep.",
"Richard Stallman wrote the first version of Emacs on a typewriter.",
"Richard Stallman's beard is made of parentheses.",
"Richard Stallman can chown anything! stallman@stallman~$ chown stallman:stallman Earth (for example)",
"When Richard Stallman's computer gets a virus, he simply applies a GPL license to it which converts the whole botnet to Linux. I mean, GNU/Linux.",
"Richard Stallman's flute only plays free music.",
"Richard Stallman can wiretap the NSA.",
"Richard Stallman doesn't use zip drives; he just squeezes the hard drive.",
"Richard Stallman doesn't like neither PCs-Intel nor Burger King... He prefers e-Macs...",
"Rather than being birthed like a normal child, Richard Stallman instead instantiated himself polymorphically. Shortly thereafter he grew a beard.",
"\"They can take our lives, but they can never take our freedom.\" -- William Wallace after a little talk with Richard Stallman.",
"Richard Stallman's beard contains Richard Stallman, whose beard contains Richard Stallman....",
"Richard Stallman's uptime is over 53 years. And counting up.",
"Richard Stallman is in fact also a little sad that Steve Jobs is gone because it has diminished the size of the loyal opposition.",
"When Richard Stallman makes a sudo command, he loses permissions.",
"Richard Stallman doesn't code; he dares the computer to not do his bidding.",
"Richard Stallman can parse HTML with regular expressions.",
"Richard Stallman is just a guy who has strong principles and decided to follow them.",
"Richard Stallman's computer has only two buttons. One is for guests.",
"Richard Stallman doesn't eat McDonald's because the machine that kills the cows uses proprietary software.",
"Richard Stallman doesn't sleep; he is compiling.",
"Richard Stallman never sleeps because he altered his own source to gain background garbage collection.",
"This is how Richard Stallman created Emacs: http://stallman.org/photos/rms-working/img_0631.jpg",
"Some people wear Linus Torvalds pyjamas to bed, Linus Torvalds wears Richard Stallman pyjamas.",
"Richard Stallman compiled the first version of gcc with an hexadecimal editor.",
"Richard Stallman's doctor can retrieve a blood sample via CVS.",
"Richard Stallman is my shephurd, and I am his GNU.",
"Richard Stallman proved P=NP, twice!",
"Richard Stallman called his operating system GNU because he created it before computers existed, when actual gnus were used for calculations.",
"When Richard Stallman gets angry he doesn't swear; he recurses.",
"There are no Windows in Richard Stallman's house... only Doors...",
"Richard Stallman does not compile; he closes his eyes, and sees energy lines created between bit blocks by the compiler optimizations.",
"Richard Stallman is so free that the primitive recursive function for computing his liberty causes a stack overflow.",
"Richard Stallman can write a context-free grammar for C.",
"Richard Stallman successfully compiled a kernel of popcorn.",
"When you make a Google search and it doesn't find the answer, Google gently consults Richard Stallman.",
"Chuck Norris had to shorten his beard in the presence of Richard Stallman because two beards that awesome, so close would segfault the universe.",
"When Richard Stallman reports a bug, the bug prefers to squash itself instead of facing Richard Stallman's wrath.",
"Richard Stallman wrote a program that divides by zero.",
"When Richard Stallman runs /bin/false, it returns \"true\".",
"Richard Stallman memorises all his documents. In binary. He just types everything in whenever he needs a document.",
"Richard Stallman's traceroute goes all the way through an infinite number of anonymous proxies back to the traffic's source.",
"Richard Stallman did not write GNU Emacs, he simply read the source code from /dev/null.",
"Richard Stallman's brain accepts UNIX commands.",
"Richard Stallman eats ethernet cables. That's why they invented wireless.",
"Richard Stallman knows the entire Wikipedia by heart, markup included.",
"Richard Stallman doesn't write programs; they write themselves out of reverence.",
"Richard Stallman's pinky finger is really a USB memory stick.",
"Richard Stallman doesn't need sudo. I will make him a sandwich anyway.",
"Richard Stallman doesn't wget, Richard Stallman wdemands!",
"Richard Stallman takes notes in binary.",
"Richard Stallman's laser pointer is a lightsaber.",
"Richard Stallman released his own DNA under GNU FDL.",
"Richard Stallman didn't write the GPL. He is the GPL.",
"Richard Stallman can walk on Windows!",
"Richard Stallman's portable music player can play ogg and WMA, but is too afraid to invoke Richard Stallman's wrath by playing WMA. Ogg it is, then.",
"Richard Stallman's first words were in binary. When they couldn't understand him, he wrote a parser.",
"For Richard Stallman, polynomial time is O(1).",
"Richard Stallman doesn't need a qwerty/dvorak keyboard only two buttons \"1\" and \"0\"",
"Richard Stallman can determine whether an arbitrary program will terminate.",
"Richard Stallman can fill up /dev/null.",
"When Richard Stallman counted his fingers as a kid, he always started with 0.",
"There is no chin under Richard Stallman's beard. There's only another beard. Recursively.",
"kill -9 invokes Richard Stallman's rage against a process.",
"Vendor lock-in is when vendors lock themselves inside of a building out of fear of Richard Stallman's wrath.",
"Richard Stallman can solve the halting problem... in polynomial time.",
"Richard Stallman will get Coca Cola to release their recipe under the GPL.",
"Behind Richard Stallman's beard there is another fist, to code faster.",
"Richard Stallman can make infinite loops end.",
"Richard Stallman's nervous system is completely wireless.",
"Richard Stallman found Waldo using grep in /dev/null",
"Richard Stallman doesn't need to buy a bigger hard drive. He can compress data infinitely.",
"If Richard Stallman has 1GB of RAM, and if you have 1GB of RAM, Richard Stallman has more RAM than you.",
"If Richard Stallman's beard were ever trimmed, the clippings would re-marshal into an exact copy of Richard Stallman.",
"Richard Stallman does not contribute to open source projects; open source projects contribute to Richard Stallman, and then call themselves free software projects.",
"Richard Stallman freed his beard so he can always check what's in it.",
"Richard Stallman's compiler is afraid to report errors.",
"Every day Richard Stallman finds at least fifteen things in the world to rage about. You can read his findings here: http://stallman.org/archives/polnotes.html",
"Richard Stallman can coerce meaningful data from /dev/null.",
"Richard Stallman can connect to any brain using an Emacs ssh client.",
"Richard Stallman never showers; he runs 'make clean'.",
"Richard Stallman once went out of scope for a while. The garbage collector never dared to touch him.",
"Richard Stallman doesn't use an editor; he sets the fundamental constants of the universe so that a magnetic platter with his code on it evolves itself.",
"Richard Stallman wrote the first version of Emacs using Emacs.",
"RMS means \"RMS means Stallman\"",
"Richard Stallman does not sleep. He yields.",
"Richard Stallman is pronounced \"GNU slash Stallman\"",
"Richard Stallman's beard is in fact not just a beard, but a microprinted hard copy of Emacs source code. New patches must be checked against new hair growth before being approved.",
"C is actually written in RMS.",
"Richard Stallman won a Sudoku that started with only one number in each line.",
"Richard Stallman's facial hair is \"free as in beard\"",
"If you execute Emacs backward it either undoes the industrial revolution or induces the rapture. But only Richard Stallman knows which.",
"There is no software development process, only a bunch of programs Richard Stallman allows to exist.",
"Richard Stallman does not actually write programs. He comes up with a length and digit index in pi.",
"RMS is Titanic.",
"Richard Stallman will never die, but may some day go to /dev/null.",
"Richard Stallman knows of an unfixed bug in TeX.",
"Richard Stallman once used GDB to reverse-engineer Windows 7 into a free operating system - able to run on GNU Emacs!",
"When Richard Stallman executes ps -e, you show up.",
"Richard Stallman can write an anti-virus program that cures HIV. Too bad he never writes anti-virus programs.",
"Richard Stallman can violate the GPL. In a vulgar display of power, he once did so with the Emacs source code, but he undid the violation before most people noticed.",
"I'll tell you a DNS joke but be advised, it could take up to 24 hours for everyone to get it.",
"I think there is a duck in my router. It always goes NAT, NAT, NAT.",
"Windows means \"Work is never done on Windows systems\".",
"Micro$oft broke Volkswagen's world record: Volkswagen only made 22 million bugs!",
"Have you reinstalled your Windows today?",
"Windows is true multitasking... it can bootup and crash at the same time! ",
"Macs are for those who don't want to know why their computer works.\n\
Linux is for those who want to know why their computer works.\n\
DOS is for those who want to know why their computer doesn't work.\n\
Windows is for those who don't want to know why their computer doesn't work.",
"Windows user's prayer\n\
\n\
Our Windows, who is on harddrives\n\
Wide open your ports\n\
You viruses come,\n\
On 95 as it is on XP\n\
\n\
Give us this day our daily ServicePacks\n\
and forgive our Linux partitions\n\
as we forgive those flaws from your drivers\n\
and lead us not into the blue screen\n\
but deliver us from software conflicts.\n\
\n\
Yours is the whole RAM and harddrive\n\
and all processor's Hertzs\n\
forever and ever CTRL+ALT+DELETE!",
"Fatal Error: Found Windows Vista System -> Repartitioning Disk for Linux...",
"If Operating Systems Ran The Airlines\n\
\n\
UNIX Airways\n\
Everyone brings one piece of the plane along when they come to the airport. They all go out on the runway and put the plane together piece by piece, arguing non-stop about what kind of plane they are supposed to be building.\n\
\n\
Air DOS\n\
\n\
Everybody pushes the airplane until it glides, then they jump on and let the plane coast until it hits the ground again. Then they push again, jump on again, and so on ...\n\
\n\
Mac Airlines\n\
\n\
All the stewards, captains, baggage handlers, and ticket agents look and act exactly the same. Every time you ask questions about details, you are gently but firmly told that you don't need to know, don't want to know, and everything will be done for you without your ever having to know, so just shut up.\n\
\n\
Windows Air\n\
\n\
The terminal is pretty and colorful, with friendly stewards, easy baggage check and boarding, and a smooth take-off. After about 10 minutes in the air, the plane explodes with no warning whatsoever.\n\
\n\
Windows NT Air\n\
\n\
Just like Windows Air, but costs more, uses much bigger planes, and takes out all the other aircraft within a 40-mile radius when it explodes.\n\
\n\
Linux Air\n\
\n\
Disgruntled employees of all the other OS airlines decide to start their own airline. They build the planes, ticket counters, and pave the runways themselves. They charge a small fee to cover the cost of printing the ticket, but you can also download and print the ticket yourself. When you board the plane, you are given a seat, four bolts, a wrench and a copy of the Seat-HOWTO.html. Once settled, the fully adjustable seat is very comfortable, the plane leaves and arrives on time without a single problem, the in-flight meal is wonderful. You try to tell customers of the other airlines about the great trip, but all they can say is, \"You had to do what with the seat?\"",
"If restaurants functioned like Microsoft:\n\
\n\
Patron: Waiter!\n\
Waiter: Hi, my name is Bill, and I'll be your Support Waiter. What seems to be the problem?\n\
Patron: There's a fly in my soup!\n\
Waiter: Try again, maybe the fly won't be there this time.\n\
Patron: No, it's still there.\n\
Waiter: Maybe it's the way you're using the soup; try eating it with a fork instead.\n\
Patron: Even when I use the fork, the fly is still there.\n\
Waiter: Maybe the soup is incompatible with the bowl; what kind of bowl are you using?\n\
Patron: A SOUP bowl!\n\
Waiter: Hmmm, that should work. Maybe it's a configuration problem; how was the bowl set up?\n\
Patron: You brought it to me on a saucer;what has that to do with the fly in my soup?!\n\
Waiter: Can you remember everything you did before you noticed the fly in your soup?\n\
Patron: I sat down and ordered the Soup of the Day!\n\
Waiter: Have you considered upgrading to the latest Soup of the Day?\n\
Patron: You have more than one Soup of the Day each day??\n\
Waiter: Yes, the Soup of the Day is changed every hour.\n\
Patron: Well, what is the Soup of the Day now?\n\
Waiter: The current Soup of the Day is tomato.\n\
Patron: Fine. Bring me the tomato soup, and the check. I'm running late now.\n\
\n\
[waiter leaves and returns with another bowl of soup and the check]\n\
\n\
Waiter: Here you are, Sir. The soup and your check.\n\
Patron: This is potato soup.\n\
Waiter: Yes, the tomato soup wasn't ready yet.\n\
Patron: Well, I'm so hungry now, I'll eat anything.\n\
[waiter leaves.]\n\
\n\
Patron: Waiter! There's a gnat in my soup!\n\
\n\
The check:\n\
\n\
Soup of the Day . . . . . . . . . . . . . . . . $5.00\n\
Upgrade to newer Soup of the Day. . . . . . . . $2.50\n\
Access to support . . . . . . . . . . . . . . . $1.00",
"Ubuntu is an ancient african word that means \"I can't install Debian\".",
"/dev/null is 98% full.",
"CIA – Computer Industry Acronyms\n\
CD-ROM: Consumer Device, Rendered Obsolete in Months\n\
PCMCIA: People Can't Memorize Computer Industry Acronyms\n\
ISDN: It Still Does Nothing\n\
SCSI: System Can't See It\n\
MIPS: Meaningless Indication of Processor Speed\n\
DOS: Defunct Operating System\n\
WINDOWS: Will Install Needless Data On Whole System\n\
OS/2: Obsolete Soon, Too\n\
PnP: Plug and Pray\n\
APPLE: Arrogance Produces Profit-Losing Entity\n\
IBM: I Blame Microsoft\n\
MICROSOFT: Most Intelligent Customers Realize Our Software Only Fools Teenagers\n\
COBOL: Completely Obsolete Business Oriented Language\n\
LISP: Lots of Insipid and Stupid Parentheses\n\
MACINTOSH: Most Applications Crash; If Not, The Operating System Hangs\n\
AAAAA: American Association Against Acronym Abuse.\n\
WYSIWYMGIYRRLAAGW: What You See Is What You Might Get If You're Really Really Lucky And All Goes Well.",
"Why doesn't C++ have a garbage collector?\n\
Because there would be nothing left!",
"Why are Assembly programmers always soaking wet? They work below C-level.",
"In theory, there ought to be no difference between theory and practice. In practice, there is.",
"Your mommas so fat that not even Dijkstra is able to find a shortest path around her.",
"99 little bugs in the code,\n\
99 bugs in the code,\n\
Fix one bug, compile again,\n\
107 little bugs in the code.\n\
107 little bugs in the code, ...",
"There's no place like 127.0.0.1",
"There's no place like ~",
".NET is called .NET so that it wouldn't show up in a Unix directory listing.",
"What do you mean, it needs comments!? If it was hard to write, it should be hard to understand--why do you think we call it code???",
"Hardware: The part of a computer that you can kick.",
"The programmer got stuck in the shower because the instructions on the shampoo bottle said, Lather, Rinse, Repeat.",
"An optimist will say that the glass is half-full.\n\
A pessimist will say that the glass is half-empty.\n\
A programmer will say that the glass is twice as large as necessary.",
"In C we had to code our own bugs. In C++ we can inherit them.",
"Knock, knock.\n\
- Who's there?\n\
very long pause….\n\
- Java.\n\
Knock, knock.\n\
- Who's there?\n\
- C++.\n\
Knock, knock.\n\
- Assembler.",
"Question: How long does it take to move a file?\n\
Windows Vista User Answer: I don't know, it's still calculating.\n\
Mac OSX User Answer: What's a file?",
"Q: Why did the chicken cross the Möbius strip?\n\
A: To get to the same side.",
"There are two types of people in this world: those who understand recursion and those who don't understand that there are two types of people in this world: ...",
"https://tools.ietf.org/html/rfc2324",
"A depressed programmer hung himself on a binary tree...",
"A computer programmer is a person who passes as an exacting expert on the basis of being able to turn out, after innumerable key punching, an infinite series of incomprehensible answers calculated with micro-metric precision from vague assumptions based on debatable figures taken from inconclusive sources and carried out on instruments of problematical accuracy by persons of dubious reliability and questionable mentality for the avowed purpose of annoying and confounding a hopelessly defenseless department that was unfortunate enough to ask for the information in the first place.",
"How to double your hard drive space: Delete Windows.",
"OS/2 VirusScan -- \"Windows found: Remove it? [Y,Y]\"",
"Wherever you go, there you are.",
"Keyboard missing, press F13 to continue.",
"Q: how many Apple programmers does it take to change a light bulb?\n\
A: none, they just make darkness a standard and tell everyone \"this behavior is by design\"",
"Your name is Bill Gates, so why are you selling us Windows??",
"There are 10 types of people:\n\
those who think they're being original posting jokes about bases\n\
those who are too lazy/stupid to notice that it has already been posted 10 times (in base whatever)\n\
those who are too young to shudder at the phrase \"digital manipulation\"\n\
those who think jokes about binary are funny\n\
those who are kept awake at night worrying how to accurately represent 1/5\n\
those who will slap you silly if you don't shut up about binary\n\
those who understand that 10 types of people understand recursion, they need a slap too\n\
those who understand octal",
"I cannot understand why people say it is so hard to plan a standard LISP dialect. This task is very easy, I have already planned a dozen ones.",
"The programmer's national anthem is 'AAAAAAAAHHHHHHHH'.",
"I eat URLs for breakfast.\n\
Q: How many?\n\
A: 200 OK",
"At a recent computer software engineering management course, the participants were given an awkward question to answer:\n\
\"If you had just boarded an airliner and discovered that your team of programmers had been responsible for the flight control software, how many of you would disembark immediately?\"\n\
Among the ensuing forest of raised hands only one man sat motionless. When asked what he would do, he replied that he would be quite content to stay aboard. With his team's software, he said, the plane was unlikely to even taxi as far as the runway, let alone take off.",
"If computer languages were cars:\n\
C is a racing car that goes incredibly fast but breaks down every fifty miles.\n\
C++ is a souped-up racing car with dozens of extra features that only breaks down every 250 miles, but when it does, nobody can figure out what went wrong.\n\
Java is a family station wagon. It's easy to drive, it's not too fast, and you can't hurt yourself.\n\
C# is a competing model of family station wagons. Once you use this, you're never allowed to use the competitors' products again.\n\
Lisp looks like a car, but with enough tweaking you can turn it into a pretty effective airplane or submarine.\n\
Perl is supposed to be a pretty cool car, but the driver's manual is incomprehensible. Also, even if you can figure out how to drive a perl car, you won't be able to drive anyone else's.\n\
Python is a great beginner's car; you can drive it without a license. Unless you want to drive really fast or on really treacherous terrain, you may never need another car.\n\
Ruby is a car that was formed when the Perl, Python and Smalltalk cars were involved in a three-way collision. A Japanese mechanic found the pieces and put together a car which many people think was better than the sum of the parts.\n\
Fortran is a pretty primitive car; it'll go very quickly as long as you are only going along roads that are perfectly straight. It is believed that learning to drive a Fortran car makes it impossible to learn to drive any other model.\n\
Cobol is reputed to be a car, but no self-respecting driver will ever admit having driven one.\n\
Assembly Language is a bare engine; you have to build the car yourself and manually supply it with gas while it's running, but if you're careful it can go like a bat out of hell."
]

VODKA_JOKE = "There once was a big rally, with many famous drivers. However, one driver came without a car, he just had a bottle of vodka. So the manager asked him, \"Where's your car?\". To this the driver replied, \"Vodkar?\""

@module.rule('^UtterlyUseless[,:] ?[Ss]hut [Uu]p!?$')
def shut_up(bot, trigger):
    bot.say("That's insulting!")
    bot.quit("You insulted me :-(")
@module.commands("whatever")
def joke(bot, trigger):
    for line in random.choice(JOKES).splitlines():
        bot.say(line, trigger.sender, 5)
"""
@module.rule('.')
def helloworld(bot, trigger):
    if trigger.nick in ["lumidify"]:
        bot.say("Wise words, lumidify!")
    else:
        bot.reply("Stop talking!")
"""
@module.rule('^~$')
def vodka(bot, trigger):
    if trigger.nick == "lumidify":
        bot.say("Vodka?")
    else:
        bot.reply("You're too young to drink vodka!")
@module.commands('vodkajoke')
def vodkajoke(bot, trigger):
    bot.say(VODKA_JOKE)
    bot.say("Licensed under the Creative Commons Attribution 4.0 International License")
@module.commands("fortune")
def fortune(bot, trigger):
    quote = subprocess.Popen("fortune", stdout=subprocess.PIPE).stdout
    for line in quote.read().splitlines():
        bot.say(line, trigger.sender, 5)
    quote.close()
@module.rule('^bob$')
def bob(bot, trigger):
    if trigger.nick == "lumidify":
        bot.say("Bob\t" * 100)
    else:
        bot.say("BOB says: You're not allowed to do that!")
@module.rule('^UtterlyUseless[,:] ?.')
def default(bot, trigger):
    bot.reply("Whatwhatwhatwhatwhatwhatwhat?")