diff --git a/docs/api/modules/cardsagainsthumanity.rst b/docs/api/modules/cardsagainsthumanity.rst
new file mode 100644
index 0000000..40451e4
--- /dev/null
+++ b/docs/api/modules/cardsagainsthumanity.rst
@@ -0,0 +1,10 @@
+:mod:`CardsAgainstHumanity` --- CaH in IRC
+==========================================
+
+Class Reference
+---------------
+
+.. automodule:: pyircbot.modules.CardsAgainstHumanity
+ :members:
+ :undoc-members:
+ :show-inheritance:
diff --git a/examples/data/data/CardsAgainstHumanity/answers.txt b/examples/data/data/CardsAgainstHumanity/answers.txt
new file mode 100644
index 0000000..06425d5
--- /dev/null
+++ b/examples/data/data/CardsAgainstHumanity/answers.txt
@@ -0,0 +1,1048 @@
+Flying sex snakes.
+Michelle Obama's arms.
+German dungeon porn.
+White people.
+Getting so angry that you pop a boner.
+Tasteful sideboob.
+Praying the gay away.
+Two midgets shitting into a bucket.
+MechaHitler.
+Being a motherfucking sorcerer.
+A disappointing birthday party.
+Puppies!
+A windmill full of corpses.
+Guys who don't call.
+Racially-biased SAT questions.
+Dying.
+Steven Hawking talking dirty.
+Being on fire.
+A lifetime of sadness.
+An erection that lasts longer than four hours.
+AIDS
+Same-sex ice dancing.
+Glenn Beck catching his scrotum on a curtain hook.
+The Rapture.
+Pterodactyl eggs.
+Crippling debt.
+Eugenics.
+Exchanging pleasantries.
+Dying of dysentery.
+Roofies.
+Getting naked and watching Nickelodeon.
+The forbidden fruit.
+Republicans.
+The Big Bang.
+Anal beads.
+Amputees.
+Men.
+Surprise sex!
+Kim Jong-il.
+Concealing a boner
+Agriculture.
+Glenn Beck being harried by a swarm of buzzards.
+Making a pouty face.
+A salty surprise.
+The Jews.
+Charisma.
+YOU MUST CONSTRUCT ADDITIONAL PYLONS.
+Panda sex.
+Taking off your shirt.
+A drive-by shooting.
+Ronald Reagan.
+Morgan Freeman's voice.
+Breaking out into song and dance.
+Jewish fraternities.
+Dead babies.
+Masturbation.
+Hormone injections.
+All-you-can-eat shrimp for $4.99.
+Incest.
+Scalping.
+Soup that is too hot.
+The Übermensch.
+Nazis.
+Tom Cruise.
+Stifling a giggle at the mention of Hutus and Tutsis.
+Edible underpants.
+The Hustle.
+A Super Soaker™ full of cat pee.
+Figgy pudding.
+Object permanence.
+Consultants.
+Intelligent design.
+Nocturnal emissions.
+Uppercuts.
+Being marginalized.
+The profoundly handicapped.
+Obesity.
+Chutzpah.
+Unfathomable stupidity.
+Repression.
+Attitude.
+Passable transvestites.
+Party poopers.
+The American Dream
+Child beauty pageants.
+Puberty.
+Testicular torsion.
+The folly of man.
+Nickelback.
+Swooping.
+Goats eating cans.
+The KKK.
+Kamikaze pilots.
+Horrifying laser hair removal accidents.
+Adderall™.
+A look-see.
+Doing the right thing.
+The taint; the grundle; the fleshy fun-bridge.
+Lactation.
+Pabst Blue Ribbon.
+Powerful thighs.
+Saxophone solos.
+The gays.
+A middle-aged man on roller skates.
+A foul mouth.
+The thing that electrocutes your abs.
+Heteronormativity.
+Cuddling.
+Coat hanger abortions.
+A big hoopla about nothing.
+Boogers.
+A hot mess.
+Raptor attacks.
+My collection of high-tech sex toys.
+Fear itself.
+*Bees?*
+Getting drunk on mouthwash.
+Sniffing glue.
+Oversized lollipops.
+An icepick lobotomy.
+Being rich.
+Friends with benefits.
+Teaching a robot to love.
+Women's suffrage.
+Me time.
+The heart of a child.
+Smallpox blankets.
+The clitoris.
+John Wilkes Booth.
+The glass ceiling.
+Sarah Palin.
+Sexy pillow fights.
+Yeast.
+Full frontal nudity.
+Parting the Red Sea.
+A Bop It™.
+Michael Jackson.
+Team-building exercises.
+Harry Potter erotica.
+Authentic Mexican cuisine.
+Frolicking.
+Sexting.
+Grandma.
+Not giving a shit about the Third World.
+Licking things to claim them as your own.
+Genghis Khan.
+The hardworking Mexican.
+RoboCop.
+My relationship status.
+Scrubbing under the folds.
+Porn Stars.
+Horse meat.
+Sunshine and rainbows.
+Expecting a burp and vomiting on the floor.
+Barack Obama.
+Spontaneous human combustion.
+Natural selection.
+Mouth herpes.
+Flash flooding.
+Goblins.
+A monkey smoking a cigar.
+Spectacular abs.
+A good sniff.
+Wiping her butt.
+The Three-Fifths compromise.
+Pedophiles.
+Doin' it in the butt.
+Being fabulous.
+Mathletes.
+Wearing underwear inside-out to avoid doing laundry.
+Nipple blades.
+An M. Night Shyamalan plot twist.
+A bag of magic beans.
+Vigorous jazz hands.
+A defective condom.
+Skeletor.
+Vikings.
+Leaving an awkward voicemail.
+Teenage pregnancy.
+Dead parents.
+Hot cheese.
+My sex life.
+A mopey zoo lion.
+Assless chaps.
+Riding off into the sunset.
+Lance Armstrong's missing testicle.
+Sweet, sweet vengeance.
+Genital piercings.
+Keg stands.
+Darth Vader.
+Viagra©.
+Necrophilia.
+A really cool hat.
+Toni Morrison's vagina.
+An Oedipus complex.
+The Tempur-Pedic© Swedish Sleep System™.
+Preteens.
+Dick fingers.
+A cooler full of organs.
+Shapeshifters.
+The Care Bear Stare.
+Erectile dysfunction.
+Keanu Reeves.
+The Virginia Tech Massacre.
+The Underground Railroad.
+The chronic.
+Queefing.
+Heartwarming orphans.
+A thermonuclear detonation.
+Cheating in the Special Olympics.
+Tangled Slinkys.
+A moment of silence.
+Civilian casualties.
+Catapults.
+Sharing needles.
+Ethnic cleansing.
+Emotions.
+Children on leashes.
+Balls.
+Homeless people.
+Eating all of the cookies before the AIDS bake-sale.
+Old-people smell.
+Farting and walking away.
+The inevitable heat death of the universe.
+The violation of our most basic human rights.
+Fingering.
+The placenta.
+The Rev. Dr. Martin Luther King, Jr.
+Leprosy.
+Sperm whales.
+Multiple stab wounds.
+Flightless birds.
+Grave robbing.
+Home video of Oprah sobbing into a Lean Cuisine©.
+Oompa-Loompas.
+A murder most foul.
+Tentacle porn.
+Daddy issues.
+Bill Nye the Science Guy.
+Peeing a little bit.
+The miracle of childbirth.
+Tweeting.
+Another goddamn vampire movie.
+Britney Spears at 55.
+New Age music.
+The Make-A-Wish® Foundation.
+Firing a rifle into the air while balls deep in a squealing hog.
+Active listening.
+Nicolas Cage.
+72 virgins.
+Stranger danger.
+Hope.
+A gassy antelope.
+BATMAN!!!
+Chivalry.
+Passing a kidney stone.
+Black people.
+Natalie Portman.
+A mime having a stroke.
+Classist undertones.
+Sean Penn.
+A mating display.
+The Holy Bible.
+Hot Pockets©.
+A sad handjob.
+Pulling out.
+Serfdom.
+Pixelated bukkake.
+Dropping a chandelier on your enemies and riding the rope up.
+Jew-fros.
+Waiting 'til marriage.
+Euphoria™ by Calvin Klein.
+The World of Warcraft.
+Lunchables™.
+The Kool-Aid Man.
+The Trail of Tears.
+Self-loathing.
+A falcon with a cap on its head.
+Historically black colleges.
+Not reciprocating oral sex.
+Global warming.
+Ghosts.
+World peace.
+A can of whoop-ass.
+The Dance of the Sugar Plum Fairy.
+A zesty breakfast burrito.
+Switching to Geico®.
+Aaron Burr.
+Picking up girls at the abortion clinic.
+Land mines.
+Former President George W. Bush.
+Geese.
+Mutually-assured destruction.
+College.
+Date rape.
+Bling.
+A gentle caress of the inner thigh.
+A time travel paradox.
+Seppuku.
+Poor life choices.
+Waking up half-naked in a Denny's parking lot.
+Italians.
+GoGurt®.
+Finger painting.
+Robert Downey, Jr.
+My soul.
+Smegma.
+Embryonic stem cells.
+The South.
+Christopher Walken.
+Gloryholes.
+Pretending to care.
+Public ridicule.
+A tiny horse.
+Arnold Schwarzenegger.
+A stray pube.
+Jerking off into a pool of children's tears.
+Child abuse.
+Glenn Beck convulsively vomiting as a brood of crab spiders hatches in his brain and erupts from his tear ducts.
+Menstruation.
+A sassy black woman.
+Re-gifting.
+Penis envy.
+A sausage festival.
+Getting really high.
+Drinking alone.
+Too much hair gel.
+Hulk Hogan.
+Overcompensation.
+Foreskin.
+Free samples.
+Shaquille O'Neal's acting career.
+Five-Dollar Footlongs™.
+Whipping it out.
+A snapping turtle biting the tip of your penis.
+Muhammad (Praise Be Unto Him).
+Half-assed foreplay.
+Dental dams.
+Being a dick to children.
+Famine.
+Chainsaws for hands.
+A gypsy curse.
+AXE Body Spray.
+The Force.
+Explosions.
+Cybernetic enhancements.
+Customer service representatives.
+White privilege.
+Gandhi.
+Road head.
+God.
+Poorly-timed Holocaust jokes.
+8 oz. of sweet Mexican black-tar heroin.
+Judge Judy.
+The Little Engine That Could.
+Altar boys.
+Mr. Clean, right behind you.
+Vehicular manslaughter.
+Dwarf tossing.
+Friction.
+Lady Gaga.
+Scientology.
+Justin Bieber.
+A death ray.
+Vigilante justice.
+The Pope.
+A sea of troubles.
+Alcoholism.
+Poor people.
+A fetus.
+Women in yogurt commercials.
+Exactly what you'd expect.
+Flesh-eating bacteria.
+My genitals.
+A balanced breakfast.
+Dick Cheney.
+Lockjaw.
+Natural male enhancement.
+Take-backsies.
+Winking at old people.
+Opposable thumbs.
+Flying sex snakes.
+Passive-aggressive Post-it notes.
+Inappropriate yodeling.
+Golden showers.
+Racism.
+Copping a feel.
+Auschwitz.
+Elderly Japanese men.
+Raping and pillaging.
+Kids with ass cancer.
+Pictures of boobs.
+The homosexual agenda.
+A homoerotic volleyball montage.
+Sexual tension.
+Hurricane Katrina.
+Fiery poops.
+Science.
+Dry heaving.
+Cards Against Humanity.
+Fancy Feast©.
+A bleached asshole.
+Lumberjack fantasies.
+American Gladiators.
+Autocannibalism.
+Sean Connery.
+William Shatner.
+Domino's™ Oreo™ Dessert Pizza.
+An asymmetric boob job.
+Centaurs.
+A micropenis.
+Asians who aren't good at math.
+The milk man.
+Waterboarding.
+Wifely duties.
+Loose lips.
+The Blood of Christ.
+Actually taking candy from a baby.
+The token minority.
+Jibber-jabber.
+A brain tumor.
+Bingeing and purging.
+A clandestine butt scratch.
+The Chinese gymnastics team.
+Prancing.
+The Hamburglar.
+Police brutality.
+Man meat.
+Forgetting the Alamo.
+Eating the last known bison.
+Crystal meth.
+Booby-trapping the house to foil burglars.
+My inner demons.
+Third base.
+Soiling oneself.
+Laying an egg.
+Giving 110%.
+Hot people.
+Friendly fire.
+Count Chocula.
+Pac-Man uncontrollably guzzling cum.
+Estrogen.
+My vagina.
+Kanye West.
+A robust mongoloid.
+The Donald Trump Seal of Approval™.
+The true meaning of Christmas.
+Her Royal Highness, Queen Elizabeth II.
+An honest cop with nothing left to lose.
+Feeding Rosie O'Donnell.
+The Amish.
+The terrorists.
+When you fart and a little bit comes out.
+Pooping back and forth. Forever.
+Friends who eat all the snacks.
+Cockfights.
+Bitches.
+Seduction.
+A big black dick.
+A beached whale.
+A bloody pacifier.
+A crappy little hand.
+A low standard of living.
+A nuanced critique.
+Panty raids.
+A passionate Latino lover.
+A rival dojo.
+A web of lies.
+A woman scorned.
+Clams.
+Apologizing.
+A plunger to the face.
+Neil Patrick Harris.
+Beating your wives.
+Being a dinosaur.
+Shaft.
+Bosnian chicken farmers.
+Nubile slave boys.
+Carnies.
+Coughing into a vagina.
+Suicidal thoughts.
+The ooze.
+Deflowering the princess.
+Dorito breath.
+Eating an albino.
+Enormous Scandinavian women.
+Fabricating statistics.
+Finding a skeleton.
+Gandalf.
+Genetically engineered super-soldiers.
+George Clooney's musk.
+Getting abducted by Peter Pan.
+Getting in her pants, politely.
+Gladiatorial combat.
+Clenched butt cheeks.
+Hipsters.
+Historical revisionism.
+Insatiable bloodlust.
+Jafar.
+Jean-Claude Van Damme.
+Just the tip.
+Mad hacky-sack skills.
+Leveling up.
+Literally eating shit.
+Making the penises kiss.
+24-hour media coverage.
+Medieval Times© Dinner & Tournament.
+Moral ambiguity.
+My machete.
+One thousand Slim Jims.
+Ominous background music.
+Overpowering your father.
+Stockholm Syndrome.
+Quiche.
+Quivering jowls.
+Revenge fucking.
+Ripping into a man's chest and pulling out his still-beating heart.
+Ryan Gosling riding in on a white horse.
+Santa Claus.
+Scrotum tickling.
+Sexual humiliation.
+Sexy Siamese twins.
+Saliva.
+Space muffins.
+Statistically validated stereotypes.
+Sudden Poop Explosion Disease.
+The boners of the elderly.
+The economy.
+Syphilitic insanity.
+The Gulags.
+The harsh light of day.
+The hiccups.
+The shambling corpse of Larry King.
+The four arms of Vishnu.
+Being a busy adult with many important things to do.
+Tripping balls.
+Words, words, words.
+Zeus's sexual appetites.
+A bigger, blacker dick.
+The mere concept of Applebee's®.
+A sad fat dragon with no friends.
+Catastrophic urethral trauma.
+Hillary Clinton's death stare.
+Existing.
+A pinata full of scorpions.
+Mooing.
+Swiftly achieving orgasm.
+Daddy's belt.
+Double penetration.
+Weapons-grade plutonium.
+Some really fucked-up shit.
+Subduing a grizzly bear and making her your wife.
+Rising from the grave.
+The mixing of the races.
+Taking a man's eyes and balls out and putting his eyes where his balls go and then his balls in the eye holes.
+Scrotal frostbite.
+All of this blood.
+Loki, the trickster god.
+Whining like a little bitch.
+Pumping out a baby every nine months.
+Tongue.
+Finding Waldo.
+Upgrading homeless people to mobile hotspots.
+Wearing an octopus for a hat.
+An unhinged ferris wheel rolling toward the sea.
+Living in a trashcan.
+The corporations.
+A magic hippie love cloud.
+Fuck Mountain.
+Survivor's guilt.
+Me.
+Getting hilariously gang-banged by the Blue Man Group.
+Jeff Goldblum.
+Making a friend.
+A soulful rendition of "Ol' Man River."
+Intimacy problems.
+A sweaty, panting leather daddy.
+Spring break!
+Being awesome at sex.
+Dining with cardboard cutouts of the cast of "Friends."
+Another shot of morphine.
+Beefin' over turf.
+A squadron of moles wearing aviator goggles.
+Bullshit.
+The Google.
+Pretty Pretty Princess Dress-Up Board Game®.
+The new Radiohead album.
+An army of skeletons.
+A man in yoga pants with a ponytail and feather earrings.
+Mild autism.
+Nunchuck moves.
+Whipping a disobedient slave.
+An ether-soaked rag.
+A sweet spaceship.
+A 55-gallon drum of lube.
+Special musical guest, Cher.
+The human body.
+Boris the Soviet Love Hammer.
+The grey nutrient broth that sustains Mitt Romney.
+Tiny nipples.
+Power.
+Oncoming traffic.
+A dollop of sour cream.
+A slightly shittier parallel universe.
+My first kill.
+Graphic violence, adult language, and some sexual content.
+Fetal alcohol syndrome.
+The day the birds attacked.
+One Ring to rule them all.
+Grandpa's ashes.
+Basic human decency.
+A Burmese tiger pit.
+Death by Steven Seagal
+Dragon boobs.
+Verisimilitude.
+Dissociated mechanics.
+Rape.
+Storygames.
+Random chargen
+RPG.net.
+Dice inserted somewhere painful.
+FATAL.
+Ron Edwards' brain damage.
+Boob plate armor.
+Gamer chicks.
+GNS theory.
+Drizzt.
+The entire Palladium Books® Megaverse™
+BadWrongFun.
+Misogynerds.
+Cultural Marxism.
+Pissing on Gary Gygax's grave.
+Steve Jackson's beard.
+Natural 20.
+Rapenards.
+The Crisis of Treachery™.
+Game balance.
+Fishmalks.
+A kick to the dicebags.
+Bearded dwarven women.
+Owlbear's tears.
+Magic missile.
+THAC0.
+Bigby's Groping Hands.
+Drow blackface.
+Save or die.
+Swine.
+The Forge.
+Healing Surges.
+Gelatinous Cubes.
+Total Party Kill.
+Quoting Monty Python.
+Dumbed down shit for ADD WoW babies.
+Mike Mearls.
+Comeliness.
+Vampire: The Masquerade.
+Rifts™.
+The random prostitute table.
+Dildo of Enlightenment +2
+Grognards Against Humanity.
+Cthulhu.
+The naked succubus in the Monster Manual.
+Role-playing and roll-playing.
+Fun Tyrant.
+4rries.
+Martial dailies.
+Black Tokyo.
+Killfuck Soulshitter.
+Cheetoism.
+Grimdark.
+Kobolds.
+Oozemaster.
+Rocks fall, everyone dies.
+Mark Rein·Hagen.
+Maid RPG.
+Splugorth blind warrior women.
+Dying during chargen.
+Slaughtering innocent orc children.
+Lesbian stripper ninjas.
+Magical tea party.
+Grinding levels.
+Dice animism.
+White privilege.
+Githyanki therapy.
+Amber Diceless Roleplaying.
+A ratcatcher with a small but vicious dog.
+Bribing the GM with sexual favors.
+Eurocentric fantasy.
+Sacred cows.
+Gygaxian naturalism.
+Special snowflakes.
+Neckbeards.
+Gazebos.
+Lorraine Williams.
+Nude larping.
+Portable holes.
+Steampunk bullshit.
+Dump stats.
+Ale and whores.
+Japanese schoolgirl porn.
+Horny catgirls.
+Japanese people.
+Cimo.
+ZA WARUDO!
+40 gigs of lolicon.
+Goku's hair.
+Slashfic.
+Star Gentle Uterus
+Naruto headbands.
+Homestuck troll horns.
+Hayao Miyazaki.
+The tsunami.
+Death Note.
+Small breasts.
+Asians being racist against each other.
+Weeaboo bullshit.
+Tsundere.
+Body pillows.
+A lifelike silicone love doll.
+Anime figures drenched in jizz.
+Surprise sex.
+Yaoi.
+Girls with glasses.
+Bronies.
+Blue and white striped panties.
+4chan.
+Hello Kitty vibrator.
+Finishing attack.
+Keikaku* *(keikaku means plan).
+Hatsune Miku's screams.
+School swimsuits.
+Lovingly animated bouncing boobs.
+Dragon Balls.
+Zangief's chest hair.
+DeviantArt.
+Giant fucking robots.
+Crossplay.
+Moeblob.
+Carl Macek's rotting corpse.
+My waifu.
+Voice actress Megumi Hayashibara.
+Lynn Minmei.
+Panty shots.
+Love and Justice.
+Consensual tentacle rape.
+Gundam.
+Captain Bright slapping Amuro.
+The Wave Undulation Cannon.
+Having sex in the P.E. equipment shed.
+Tainted sushi.
+Shitty eurobeat music.
+Bad dubbing.
+Fangirls.
+Kawaii desu uguu.
+Futanari.
+Lesbian schoolgirls.
+Osamu Tezuka, rolling in his grave forever.
+FUNimation.
+Underage cosplayers in bondage gear.
+Jackie Chan.
+Exchanging Pocky for sexual favors.
+Shipping.
+Chiyo's father.
+Magikarp.
+Derpy.
+Nanoha and her special friend Fate.
+The marbles from Ramune bottles.
+Wideface.
+Spoilers.
+Man-Faye.
+Oppai mousepads.
+Another dimension.
+Homura sniffing Madoka's panties.
+Hadouken.
+Asian ball-jointed dolls.
+J-list.
+Childhood friends.
+Monkey D. Luffy's rubbery cock.
+Cloud's giant fucking Buster Swords.
+Taking a dump in Char's helmet.
+Hentai marathons.
+Gothic Lolita.
+Onaholes.
+Super Saiyan Level 2.
+Gaia Online.
+Santa's heavy sack.
+Clearing a bloody path through Walmart with a scimitar.
+Another shitty year.
+Whatever Kwanzaa is supposed to be about.
+A Christmas stocking full of coleslaw.
+Elf cum.
+The tiny, calloused hands of the Chinese children that made this card.
+Taking down Santa with a surface-to-air missile.
+Socks.
+Pretending to be happy.
+Krampus, the Austrian Christmas monster.
+The Star Wars Holiday Special.
+My hot cousin.
+Mall Santa.
+Several intertwining love stories featuring Hugh Grant.
+A Hungry-Man™ Frozen Christmas Dinner for one.
+Gift-wrapping a live hamster.
+Space Jam on VHS.
+Immaculate conception.
+Fucking up 'Silent Night' in front of 300 parents.
+A visually arresting turtleneck.
+A toxic family environment.
+Eating an entire snowman.
+Bumpses.
+A Vin Gerard H8 X 10.
+Harry Acropolis.
+Under the ring.
+Afa The Wild Samoan.
+Peanut Butter and Baby sandwiches.
+Yard Tards.
+Two girls, one cup.
+Ugly Mexican Hookers.
+Duct tape.
+Sodaj.
+Steve The Teacher.
+Jefferee.
+Autoerotic Asphyxiation.
+Sonic The Hedgehog.
+Lotto Money.
+Jailbait.
+Prison rape.
+Two And A Half Men.
+Anne Frank.
+Black Santa.
+Jesus Christ (our lord and saviour).
+Farting with your armpits.
+Poopsicles.
+Slaughtering innocent children.
+Sex with vegetables.
+My gay ex-husband.
+Accidentally sexting your mom.
+Tabasco in your pee-hole.
+Pee Wee Herman.
+A breath of fresh air.
+A great big floppy donkey dick.
+A pyramid scheme.
+A school bus surrounded by cop cars.
+A short walk in the desert with shovels.
+All the boys staring at your chest.
+An amorous stallion.
+Being so wet it just slides out of you.
+Being tarred and feathered.
+Catching 'em all.
+Chained to the bed and whipped to orgasmic bliss by a leather-clad woman.
+Child-bearing hips.
+Defenestration.
+Dungeons and/or dragons.
+Ecco the Dolphin.
+George Washington riding on a giant eagle.
+Getting abducted and probed by aliens.
+Going viral on YouTube.
+Gushing.
+Making the baby Jesus cry.
+More than you can chew.
+Napalm.
+Pancake bitches.
+Playing God with the power of lightning.
+Playing tonsil-hockey.
+Racing cheese wheels downhill.
+Riding the bomb.
+Settling arguments with dance-offs.
+Sheer spite.
+Sinister laughter.
+SS Girls.
+Stealing your sister's underwear.
+Stroking a cat the wrong way.
+Sucking and blowing.
+The bullet with your name on it.
+The entire rest of eternity, spent in fucking Bruges.
+The oceans rising to reclaim the land.
+A cocained-fuelled sex orgy heart attack.
+A cocktail umbrella
+A murder/suicide pact.
+A squirming mass of kittens.
+An angry mob with torches and pitchforks.
+Biting my girlfriend like a vampire during sex.
+Dropping your pants and saluting.
+Frankenstein's Monster
+Getting a blowjob in a theater.
+Going full retard.
+Going slob-slob-slob all over that knob.
+Leaking implants.
+Low-flying planes.
+Monkies flinging their own shit.
+My robot duplicate.
+Other people’s children.
+People who can't take a joke. Seriously.
+Popping a boner during Sex Ed class.
+Projectile vomiting.
+Pulling down panties with your teeth.
+Saying
+Shedding skin like a snake.
+Shooting Valley Girls for like, saying like all the time. Really.
+Slow seductive tentacle rape.
+Talking like a pirate, y’arr!
+Tenderly kissing a unicorn's horn.
+That bastard Jesus!
+The last shreads of dignity.
+The power of friendship.
+This card intentionally left blank.
+Throwing water on a braless woman in a white t-shirt
+Upskirts.
+Wasting all your money on hookers and booze.
+Winning.
+A foot fetish.
+A powerful gag reflex.
+A tight, Asian pussy.
+Explosive decompression.
+Extraordinary Rendition.
+Forgetting the safety word.
+Greeting Christmas carollers naked.
+Handcuffs, without the key.
+Having a drill for a penis.
+Hot Jailbait Ass.
+Liposuction gone horrible wrong.
+My harem of scantily clad women.
+Nazi Zombie Robot Ninjas.
+Redneck gypsies.
+Scissoring.
+A guy and two robots who won’t shut up.
+A shotgun wedding.
+Anne Frank's diary
+Autoerotic asphyxiation.
+Blow Up Bianca the Latex Lovedoll.
+Endlessly tumbling down an up escalator.
+Fun with nuns.
+Getting it all over the walls.
+Holiday Dinner by Jack Daniels.
+Nailgun fights.
+Teaching the bitch a lesson.
+Nazi super science.
+Making a human centipede.
+The primal, ball-slapping sex your parents are having right now.
+A cat video so cute that your eyes roll back and your spine slides out of your anus.
+Cock.
+A cop who is also a dog.
+Dying alone and in pain.
+Gay aliens.
+The way white people is.
+Reverse cowgirl.
+The Quesadilla Explosion Salad™ from Chili's©.
+Actually getting shot, for real.
+Not having sex.
+Vietnam flashbacks.
+Running naked through a mall, pissing and shitting everywhere.
+Nothing.
+Warm, velvety muppet sex.
+Self-flagellation.
+The systematic destruction of an entire people and their way of life.
+Samuel L. Jackson.
+A boo-boo.
+Going around punching people.
+The entire Internet.
+Some kind of bird-man.
+Chugging a lava lamp.
+Having sex on top of a pizza.
+Indescribable loneliness.
+An ass disaster.
+Shutting the fuck up.
+All my friends dying.
+Putting an entire peanut butter and jelly sandwich into the VCR.
+Spending lots of money.
+Some douche with an acoustic guitar.
+Flying robots that kill people.
+A greased-up Matthew McConaughey.
+An unstoppable wave of fire ants.
+Not contributing to society in any meaningful way.
+An all-midget production of Shakespeare's Richard III.
+Screaming like a maniac.
+The moist, demanding chasm of his mouth.
+Filling every orifice with butterscotch pudding.
+Unlimited soup, salad, and breadsticks.
+Crying into the pages of Sylvia Plath.
+Velcro™.
+A PowerPoint presentation.
+A surprising amount of hair.
+Eating Tom Selleck's mustache to gain his powers.
+Roland the Farter, flatulist to the king.
+That ass.
+A pile of squirming bodies.
+Buying the right pants to be cool.
+Blood farts.
+Three months in the hole.
+A botched circumcision.
+The Land of Chocolate.
+Slapping a racist old lady.
+A lamprey swimming up the toilet and latching onto your taint.
+Jumping out at people.
+A black male in his early 20s, last seen wearing a hoodie.
+Mufasa's death scene.
+Bill Clinton, naked on a bearskin rug with a saxophone.
+Demonic possession.
+The Harlem Globetrotters.
+Vomiting mid-blowjob.
+My manservant, Claude.
+Having shotguns for legs.
+Letting everyone down.
+A spontaneous conga line.
+A vagina that leads to another dimension.
+Disco fever.
+Getting your dick stuck in a Chinese finger trap with another dick.
+Fisting.
+The thin veneer of situational causality that underlies porn.
+Girls that always be textin'.
+Blowing some dudes in an alley.
+Drinking ten 5-hour ENERGYs® to get fifty continuous hours of energy.
+Sneezing, farting, and coming at the same time.
+A freshly-filled diaper
+Glue
+An unusually-attractive transvestite
+Hand-me-down adult diapers
+A stillborn fetus
+A disgraced pelican
+Three buckets of urine, free for 2 nights, with no late fee
+My testicles
+A black woman's vagina
+My asshole
+A whale's blowhole
+2 Girls 1 Cup
+The Big Bang Theory (TV)
+Teen pregnancy
+Ass hair
+Vaginal warts
+Ellen Degeneres
+Jews Against Humanity
+Indy wrestling
+Cunt
+Beating a crowd of delightful parents to death with a steel dildo
+Beating a crowd of delightful parents to death with a steel dildo while dressed as Ru Paul's brother, Ron.
+A roll in the hay
+"Get 'em, Steve-Dave!"
+God Hates You
+Manboobs.
+Daniel Benoit
+Vomiting in the shower
+An intellectually superior overlord
+Dwight Schrute
+Casey Anthony
+Clubbin seals
+Stunt cock
+Anal lice
+Lightsaber Dildos
+
diff --git a/examples/data/data/CardsAgainstHumanity/questions.txt b/examples/data/data/CardsAgainstHumanity/questions.txt
new file mode 100644
index 0000000..557bb3f
--- /dev/null
+++ b/examples/data/data/CardsAgainstHumanity/questions.txt
@@ -0,0 +1,276 @@
+_? There's an app for that.
+Why can't I sleep at night?
+What's that smell?
+I got 99 problems but _ ain't one.
+Maybe she's born with it. Maybe it's _.
+What's the next Happy Meal© toy?
+Anthropologists have recently discovered a primitive tribe that worships _.
+It's a pity that kids these days are all getting involved with _.
+During Picasso's often-overlooked Brown Period, he produced hundreds of paintings of _.
+Alternative medicine is now embracing the curative powers of _.
+And the Academy Award for _ goes to _.
+What's that sound?
+What ended my last relationship?
+MTV's new reality show features eight washed-up celebrities living with _.
+I drink to forget _.
+I'm sorry professor, but I couldn't complete my homework because of _.
+What is Batman's guilty pleasure?
+This is the way the world ends
This is the way the world ends
Not with a bang but with _.
+What's a girl's best friend?
+TSA guidelines now prohibit _ on airplanes.
+_. That's how I want to die.
+For my next trick, I will pull _ out of _.
+In the new Disney Channel Original Movie, Hannah Montana struggles with _ for the first time.
+_ is a slippery slope that leads to _.
+What does Dick Cheney prefer?
+Dear Abby, I'm having some trouble with _ and would like your advice.
+Instead of coal, Santa now gives the bad children _.
+What's the most emo?
+In 1,000 years when paper money is but a distant memory, _ will be our currency.
+What's the next superhero/sidekick duo?
+In M. Night Shyamalan's new movie, Bruce Willis discovers that _ had really been _ all along.
+A romantic, candlelit dinner would be incomplete without _.
+_. Becha can't have just one!
+White people like _.
+_. High five, bro.
+Next from J.K. Rowling: Harry Potter and the Chamber of _.
+BILLY MAYS HERE FOR _.
+In a world ravaged by _, our only solace is _.
+War! What is it good for?
+During sex, I like to think about _.
+What are my parents hiding from me?
+What will always get you laid?
+In L.A. County Jail, word is you can trade 200 cigarettes for _.
+What did I bring back from Mexico?
+What don't you want to find in your Chinese food?
+What will I bring back in time to convince people that I am a powerful wizard?
+How am I maintaining my relationship status?
+_. It's a trap!
+Coming to Broadway this season, _: The Musical.
+While the United States raced the Soviet Union to the moon, the Mexican government funneled millions of pesos into research on _.
+After the earthquake, Sean Penn brought _ to the people of Haiti.
+Next on ESPN2, the World Series of _.
+Step 1: _. Step 2: _. Step 3: Profit.
+Rumor has it that Vladimir Putin's favorite dish is _ stuffed with _.
+But before I kill you, Mr. Bond, I must show you _.
+What gives me uncontrollable gas?
+What do old people smell like?
+The class field trip was completely ruined by _.
+When Pharaoh remained unmoved, Moses called down a Plague of _.
+What's my secret power?
+What's there a ton of in heaven?
+What would grandma find disturbing, yet oddly charming?
+I never truly understood _ until I encountered _.
+What did the U.S. airdrop to the children of Afghanistan?
+What helps Obama unwind?
+What did Vin Diesel eat for dinner?
+_: good to the last drop.
+Why am I sticky?
+What gets better with age?
+_: kid-tested, mother-approved.
+What's the crustiest?
+What's Teach for America using to inspire inner city students to succeed?
+Studies show that lab rats navigate mazes 50% faster after being exposed to _.
+Life for American Indians was forever changed when the White Man introduced them to _.
+Make a haiku.
+I do not know with what weapons World War III will be fought, but World War IV will be fought with _.
+Why do I hurt all over?
+What am I giving up for Lent?
+In Michael Jackson's final moments, he thought about _.
+In an attempt to reach a wider audience, the Smithsonian Museum of Natural History has opened an interactive exhibit on _.
+When I am President of the United States, I will create the Department of _.
+Lifetime© presents _, the story of _.
+When I am a billionaire, I shall erect a 50-foot statue to commemorate _.
+When I was tripping on acid, _ turned into _.
+That's right, I killed _. How, you ask? _.
+What's my anti-drug?
+_ + _ = _.
+What never fails to liven up the party?
+What's the new fad diet?
+Major League Baseball has banned _ for giving players an unfair advantage.
+My plan for world domination begins with _.
+The CIA now interrogates enemy agents by repeatedly subjecting them to _.
+Dear Sir or Madam, We regret to inform you that the Office of _ has denied your request for _
+In Rome, there are whisperings that the Vatican has a secret room devoted to _.
+Science will never explain _.
+When all else fails, I can always masturbate to _.
+I learned the hard way that you can't cheer up a grieving friend with _.
+In its new tourism campaign, Detroit proudly proclaims that it has finally eliminated _.
+An international tribunal has found _ guilty of _.
+The socialist governments of Scandinavia have declared that access to _ is a basic human right.
+In his new self-produced album, Kanye West raps over the sounds of _.
+What's the gift that keeps on giving?
+Next season on Man vs. Wild, Bear Grylls must survive in the depths of the Amazon with only _ and his wits.
+When I pooped, what came out of my butt?
+In the distant future, historians will agree that _ marked the beginning of America's decline.
+In a pinch, _ can be a suitable substitute for _.
+What has been making life difficult at the nudist colony?
+Michael Bay's new three-hour action epic pits _ against _.
+And I would have gotten away with it, too, if it hadn't been for _.
+What brought the orgy to a grinding halt?
+During his midlife crisis, my dad got really into _.
+_ would be woefully incomplete without _.
+My new favorite porn star is Joey "_" McGee.
+Before I run for president, I must destroy all evidence of my involvement with _.
+This is your captain speaking. Fasten your seatbelts and prepare for _.
+In his newest and most difficult stunt, David Blaine must escape from _.
+The Five Stages of Grief: denial, anger, bargaining, _, and acceptance.
+My mom freaked out when she looked at my browser history and found _.com/_.
+I went from _ to _, all thanks to _.
+Members of New York's social elite are paying thousands of dollars just to experience _.
+This month's Cosmo: "Spice up your sex life by bringing _ into the bedroom."
+Little Miss Muffet Sat on a tuffet, Eating her curds and _.
+If God didn't want us to enjoy _, he wouldn't have given us _.
+My country, 'tis of thee, sweet land of _.
+After months of debate, the Occupy Wall Street General Assembly could only agree on "More _!"
+I spent my whole life working toward _, only to have it ruined by _.
+Next time on Dr. Phil: How to talk to your child about _.
+Only two things in life are certain: death and _.
+Everyone down on the ground! We don't want to hurt anyone. We're just here for _.
+The healing process began when I joined a support group for victims of _.
+The votes are in, and the new high school mascot is _.
+Charades was ruined for me forever when my mom had to act out _.
+Before _, all we had was _.
+Tonight on 20/20: What you don't know about _ could kill you.
+You haven't truly lived until you've experienced _ and _ at the same time.
+D&D 4.0 isn't real D&D because of the _.
+It's a D&D retroclone with _ added.
+Storygames aren't RPGs because of the _.
+The Slayer's Guide to _.
+Worst character concept ever: _, but with _.
+Alightment: Chaotic _
+It's a D&D retroclone with _ added.
+What made the paladin fall? _
+The portal leads to the quasi-elemental plane of _.
+The Temple of Elemental _.
+Pathfinder is basically D&D _ Edition.
+_ : The Storytelling Game.
+People are wondering why Steve Jackson published GURPS _.
+Linear Fighter, Quadratic _.
+You start with 1d4 _ points.
+Back when I was 12 and I was just starting playing D&D, the game had _.
+Big Eyes, Small _.
+In the grim darkness of the future there is only _.
+My innovative new RPG has a stat for _.
+A true gamer has no problem with _.
+Elminster cast a potent _ spell and then had sex with _.
+The Deck of Many _.
+You are all at a tavern when _ approach you.
+For the convention I cosplayed as Sailor Moon, except with _.
+The worst part of Grave of the Fireflies is all the _.
+In the Evangelion remake, Shinji has to deal with _.
+Worst anime convention purchase ever? _.
+While powering up Vegeta screamed, _!
+You evaded my _ attack. Most impressive.
+I downloaded a doujin where _ got into _.
+The magical girl found out that the Power of Love is useless against _.
+The Japanese government has spent billions of yen researching _.
+In the dubbed version they changed _ into _.
+_ is Best Pony.
+The _ of Haruhi Suzumiya.
+The new thing in Akihabara is fetish cafes where you can see girls dressed up as _.
+Your drill can pierce _!
+Avatar: The Last _ bender.
+In the name of _ Sailor Moon will punish you!
+No harem anime is complete without _.
+My boyfriend's a _ now.
+The _ of _ has left me in despair!
+_.tumblr.com
+Somehow they made a cute mascot girl out of _.
+Haruko hit Naoto in the head with her bass guitar and _ came out.
+After blacking out during New year's Eve, I was awoken by _.
+This holiday season, Tim Allen must overcome his fear of _ to save Christmas.
+Jesus is _.
+Every Christmas, my uncle gets drunk and tells the story about _.
+What keeps me warm during the cold, cold, winter?
+On the third day of Christmas, my true love gave to me: three French hens, two turtle doves, and _.
+Wake up, America. Christmas is under attack by secular liberals and their _.
+We got the third rope, now where's the fourth?
+Tonights main event, _ vs. _.
+Tackle, Dropdown, _.
+Christopher Daniels is late on his _.
+Instead of booking _, they should have booked _.
+Genius is 10% inspiration, 90% _.
+They found _ in the dumpster behind _.
+The best thing I ever got for Christmas was _.
+There's no crying in _.
+Mastodon! Pterodactyl! Triceratops! Sabretooth Tiger! _!
+Don't eat the _.
+He did _ with the _!?!
+SOOOOO hot, want to touch the _.
+Stop looking at me _!
+I'm cuckoo for _ puffs.
+Silly rabbit, _ are for kids.
+Between love and madness lies _.
+Instead of chess, the Grim Reaper now gambles for your soul with a game of _.
+My father gave his life fighting to protect _ from _.
+Why is my throat sore?
+_ sparked a city-wide riot that only ended with _.
+I’m very sorry Mrs. Smith, but Little Billy has tested positive for _.
+Instead of beating them, Chris Brown now does _ to women.
+Instead of cutting, trendy young emo girls now engage in _.
+The definition of rock bottom is gambling away _.
+The Mayan prophecies really heralded the coming of _ in 2012.
+The next US election will be fought on the key issues of _ against _.
+When I was 10 I wrote to Santa wishing for _.
+Where or How I met my last signifigant other: _.
+_, Never leave home without it.
+_. This is my fetish.
+David Icke's newest conspiracy theory states that _ caused _.
+I did _ so you don't have to!
+I need your clothes, your bike, and _.
+In a new Cold War retro movie, the red menace tries to conquer the world through the cunning use of _.
+In college, our lecturer made us write a report comparing _ to _.
+In The Hangover part 3, those four guys have to deal with _, _, and _.
+My zombie survival kit includes food, water, and _.
+The way to a man's heart is through _.
+What was the theme of my second wedding?
+What's the newest Japanese craze to head West?
+Everybody loves _.
+I can only express myself through _.
+My new porn DVD was completely ruined by the inclusion of _
+My three wishes will be for _, _, and _.
+The latest horrifying school shooting was inspired by _.
+I got fired because of my not-so-secret obsession over _.
+My new favourite sexual position is _
+A successful job interview begins with a firm handshake and ends with _.
+Lovin' you is easy 'cause you're _.
+My life is ruled by a vicious cycle of _ and _.
+The blind date was going horribly until we discovered our shared interest in _.
+_. Awesome in theory, kind of a mess in practice.
+I'm not like the rest of you. I'm too rich and busy for _.
+In the seventh circle of Hell, sinners must endure _ for all eternity.
+_: Hours of fun. Easy to use. Perfect for _!
+What left this stain on my couch?
+Call the law offices of Goldstein & Goldstein, because no one should have to tolerate _ in the workplace.
+When you get right down to it, _ is just _.
+Turns out that _-Man was neither the hero we needed nor wanted.
+As part of his daily regimen, Anderson Cooper sets aside 15 minutes for _.
+Money can't buy me love, but it can buy me _.
+With enough time and pressure, _ will turn into _.
+And what did you bring for show and tell?
+During high school, I never really fit in until I found _ club.
+Hey, baby, come back to my place and I'll show you _.
+After months of practice with _, I think I'm finally ready for _.
+To prepare for his upcoming role, Daniel Day-Lewis immersed himself in the world of _.
+Finally! A service that delivers _ right to your door.
+My gym teacher got fired for adding _ to the obstacle course.
+Having problems with _? Try _!
+As part of his contract, Prince won't perform without _ in his dressing room.
+Listen, son. If you want to get involved with _, I won't stop you. Just steer clear of _.
+I just met you and this is crazy, but here's _, so _ maybe
+It's only _ if you get caught!
+_: The Next Generation
+Terminator 4: _
+Disney presents _ on ice!
+_. The other white meat.
+A _ a day keeps the _ away.
+I'm sweating like a _ at a _.
+I love the smell of _ in the morning.
+You're not gonna believe this, but _.
+_. All the cool kids are doing it.
+So I was _ in my cubicle at work, and suddenly _!
+Baskin Robbins just added a 32nd flavor: _!
+I can drive and ____ at the same time.
+_ ain't nothin' to fuck wit'!
+
diff --git a/pyircbot/modules/CardsAgainstHumanity.py b/pyircbot/modules/CardsAgainstHumanity.py
new file mode 100644
index 0000000..b6df955
--- /dev/null
+++ b/pyircbot/modules/CardsAgainstHumanity.py
@@ -0,0 +1,256 @@
+#!/usr/bin/env python
+"""
+.. module::CardsAgainstHumanity
+ :synopsis: Cards against Humanity, in IRC. Cards against IRC?
+.. moduleauthor:: Nick Krichevsky
+
+"""
+from pyircbot.modulebase import ModuleBase,ModuleHook
+import yaml
+import os
+import time
+from threading import Timer
+from operator import itemgetter
+from random import choice
+
+class CardsAgainstHumanity(ModuleBase):
+ def __init__(self, bot, moduleName):
+ # init the base module
+ ModuleBase.__init__(self, bot, moduleName);
+ self.hooks=[ModuleHook("PRIVMSG", self.scramble)]
+ self.loadConfig()
+
+ # Dictionary
+ self.whitesFile = open(self.getFilePath("answers.txt"),'r')
+ self.blacksFile = open(self.getFilePath("questions.txt"),'r')
+ self.whites = [line.rstrip() for line in self.whitesFile]
+ self.blacks = [line.rstrip() for line in self.blacksFile]
+ self.currentBlack = ""
+ self.whitesFile.close()
+ self.blacksFile.close()
+ self.log.info("CAH: Loaded."+str(len(self.whites))+" White Cards "+str(len(self.blacks))+" Black Cards")
+ # Per channel games
+ self.games = {}
+
+
+ def scramble(self, args, prefix, trailing):
+ channel = args[0]
+ if channel[0] == "#":
+ if not channel in self.games:
+ self.games[channel]=cardsGame(self, channel,self.whites,self.blacks)
+ self.games[channel].stuff(args, prefix, trailing)
+
+
+ def ondisable(self):
+ self.log.info("CAH: Unload requested, ending games...")
+ # for game in self.games:
+ # self.games[game].gameover()
+
+class cardsGame:
+ def __init__(self, master, channel,whites,blacks):
+ self.master = master
+ self.channel = channel
+ # Running?
+ self.running = False
+ # Current word
+ # self.message = 'xmopxshell has downs'
+ self.players = {}
+ self.timers = {}
+ self.whites = whites
+ self.blacks = blacks
+ self.lastCzar = -1
+ self.czar = ""
+ self.started = False
+ self.active = False
+ self.allowPick = 0
+ self.choices = {}
+ self.czarTimer = None
+ def stuff(self, args, prefix, trailing):
+ prefix = self.master.bot.decodePrefix(prefix)
+ sender = prefix.nick
+ if self.master.bot.messageHasCommand(".joinGame", trailing):
+ self.join(sender)
+ elif self.master.bot.messageHasCommand(".ready",trailing):
+ result = self.markReady(sender)
+ if result:
+ self.started = True
+ self.master.bot.act_PRIVMSG(self.channel,"All players are ready!")
+ for player in self.players:
+ self.master.bot.act_PRIVMSG(player,"ITS TIME TO D-D-D-D-D-DUEL!")
+ self.players[player]=[]
+ for player in self.players:
+ self.deal(player)
+ self.sendCards(player)
+ self.active = True
+ self.makeTurn()
+ elif self.master.bot.messageHasCommand(".pick",trailing):
+ if self.active:
+ if sender != self.czar:
+ print(sender,self.czar)
+ print(sender != self.czar)
+ if self.allowPick > 0:
+ if sender in self.players:
+ cards = trailing.split(' ')[1:]
+ if len(cards)==self.allowPick:
+ if self.checkBounds(cards):
+ if sender not in self.choices:
+ cardChoices = [self.players[sender][int(index)] for index in cards]
+ print(cardChoices)
+ self.choices[sender] = cardChoices
+ self.removeAndReplenishCards(sender, cardChoices)
+ self.sendCards(sender)
+ del self.choices[sender]
+ if sender in timers:
+ self.timers[sender].cancel()
+ if self.allDrawn():
+ self.readChoices()
+ self.master.bot.act_PRIVMSG(self.channel,self.czar+"! Please choose the winner!")
+ czarTimer = Timer(180,self.kick,(self.czar,"taking too long to pick a choice. The next turn iwll be made."))
+ self.makeTurn()
+
+ else:
+ self.master.bot.act_PRIVMSG(self.channel,sender+", you picked a card that was out of the range. Please don't do that.")
+ else:
+ self.master.bot.act_PRIVMSG(self.channel,sender+", you picked "+str(len(cards))+" cards. You were supposed to pick "+str(self.allowPick))
+ elif self.master.bot.messageHasCommand(".choose",trailing):
+ if sender==self.czar:
+ choice = trailing.split()[1:]
+ if len(choice)==1:
+ if self.checkChoiceBounds(int(choice[0])):
+ self.master.bot.act_PRIVMSG(self.channel,list(self.choices.keys())[int(choice[0])]+", you won the round!")
+ if self.czarTimer!=None:
+ self.czarTimer.cancel()
+ self.makeTurn()
+ else:
+ self.master.bot.act_PRIVMSG(self.channel,sender+", your choice was out of the range. Please don't do that.")
+ else:
+ self.master.bot.act_PRIVMSG(self.channel,sender+", you picked "+str(len(choice))+" "+" winners. You were only supposed to pick 1.")
+ elif self.master.bot.messageHasCommand('.leave',trailing):
+ if sender in self.players:
+ self.kick(sender,'choosing to leave the game you dolt')
+ if sender is self.czar:
+ self.makeTurn()
+
+ def join(self,nick):
+ if not self.started:
+ if nick not in self.players:
+ self.players[nick]=False
+ self.master.bot.act_PRIVMSG(self.channel, nick+" has joined the game! | The players currently are "+str(self.players))
+ else:
+ print("the game has already started!")
+ self.master.bot.act_PRIVMSG(self.channel,"The game has already started!")
+ def markReady(self,nick):
+ if not self.started:
+ if nick in self.players:
+ self.players[nick]=True
+ for player in self.players:
+ print(player)
+ if not self.players[player]:
+ print (player+" not ready")
+ return False
+ return True
+ else:
+ self.master.bot.act_PRIVMSG(self.channel, "You are not in the game! Type .joinGame!")
+ else:
+ print("game has already started!")
+ self.master.bot.act_PRIVMSG(self.channel,"The game has already started!")
+ def deal(self,nick):
+ self.players[nick] = [self.pickWhite() for i in range (7)]
+ def pickWhite(self):
+ card = choice(self.whites)
+ self.whites.remove(card)
+ return card
+ def pickBlack(self):
+ card = choice(self.blacks)
+ self.blacks.remove(card)
+ return card
+ def sendCards(self,nick):
+ cards = ""
+ for card in self.players[nick]:
+ cards+=str(self.players[nick].index(card))+". "
+ cards+=card+" "
+ self.master.bot.act_PRIVMSG(nick,"Your cards are "+cards)
+ def readCard(self,card):
+ count = card.count('_')
+ if count == 0:
+ if 'haiku' in card:
+ count = 3
+ else:
+ count = 1
+ self.master.bot.act_PRIVMSG(self.channel,"The black card is \""+card+"\" Pick "+str(count))
+ return count
+ def pickCzar(self):
+ index = self.lastCzar+1
+ if index < len(self.players):
+ self.lastCzar = index
+ return index
+ else:
+ self.lastCzar = 0
+ return 0
+ def announceCzar(self):
+ self.master.bot.act_PRIVMSG(self.channel,"The Czar is "+self.czar+"!")
+ def checkBounds(self,cards):
+ for item in cards:
+ if int(item)>6 or int(item)<0:
+ return False
+ return True
+ def checkChoiceBounds(self,choice):
+ if choice<0 or choice>len(self.choices)-1:
+ return False
+ return True
+ def makeTurn(self):
+ self.choices.clear()
+ card = self.pickBlack()
+ self.timers.clear()
+ self.currentBlack = card
+ self.allowPick = self.readCard(card)
+ self.lastCzar = self.pickCzar()
+ self.czar = list(self.players.keys())[self.lastCzar]
+ print (self.lastCzar,self.czar)
+ for player in self.players:
+ if player!=self.czar:
+ self.timers[player] = Timer(180,self.kick,(player,"taking more than 180 seconds for their turn."))
+ self.timers[player].start()
+ self.announceCzar()
+ def kick(self,nick,reason):
+ del self.players[nick]
+ if nick in self.timers:
+ self.timers[nick].cancel()
+ del self.timers[nick]
+ self.master.bot.act_PRIVMSG(self.channel,nick+" has been kicked due to "+reason)
+ if len(self.players)<=1:
+ self.master.bot.act_PRIVMSG(self.channel,"The game is being shut down due to having <=1 players")
+ self.started = False
+ self.active = False
+ for timer in self.timers:
+ timer.cancel()
+ self.timers.clear()
+ self.players.clear()
+ def removeAndReplenishCards(self,nick,cards):
+ for card in cards:
+ self.players[nick].remove(card)
+ self.players[nick].append(self.pickWhite())
+ def readChoices(self):
+ if '_' in self.currentBlack:
+ for player in list(self.choices.keys()):
+ cardInstance = str(list(self.choices.keys()).index(player))+". "+self.currentBlack
+ cardInstance = list(cardInstance) #do this as opposed to space to preserve spaces
+ for choice in self.choices[player]:
+ for char in cardInstance:
+ if char=='_':
+ print(char)
+ choice = choice.replace('.','')
+ cardInstance[cardInstance.index(char)] = choice
+ break
+ self.master.bot.act_PRIVMSG(self.channel,''.join(cardInstance))
+ else:
+ for player in self.choices:
+ self.master.bot.act_PRIVMSG(self.channel,self.currentBlack+' '+' '.join(self.choices[player]))
+
+ def allDrawn(self):
+ for player in self.players:
+ if player not in self.choices:
+ if player != self.czar:
+ return False
+ return True
+