err-myhero/myhero.py
2019-08-27 12:26:37 -04:00

217 lines
7.3 KiB
Python

import re
import random
from errbot import BotPlugin, botcmd, re_botcmd
CONFIG_TEMPLATE = {
'HERO_NAMES_GROUP_1': ['Beat',
'Big',
'Blast',
'Bold',
'Bolt',
'Brick',
'Buck',
'Buff',
'Butch',
'Dean',
'Crud',
'Crunch',
'Burt',
'Dirk',
'Fist',
'Flint',
'Fridge',
'Gristle',
'Grind',
'Hack',
'Colt',
'Major',
'Fury',
'Lump',
'Punch',
'Duke',
'Blaze',
'Blade',
'Red',
'Punt',
'Reef',
'Roll',
'Rip',
'Grim',
'Jab',
'Slab',
'Scream',
'Coal',
'Slate',
'Smash',
'Fire',
'Smoke',
'Flash',
'Steel',
'Captain',
'Splint',
'Stump',
'Rage',
'Thick',
'Touch',
'Trunk',
'Whip',
'Zap'],
'HERO_NAMES_GROUP_2': ['Punch',
'Large',
'Hard',
'Thick',
'Big',
'Vander',
'Crank',
'Plank',
'Drink',
'Doom',
'Dead',
'Pound',
'Knuckle',
'Bone',
'Savage',
'Butt',
'Fire',
'Razor',
'Rock',
'Iron',
'Grunt',
'Grim',
'Mad',
'Thorn',
'Blow',
'Beef',
'Wrestle',
'Terror',
'Side',
'Rubble',
'Speed',
'Lightning',
'Grit',
'Slap',
'Blast',
'Fizzle',
'Scar',
'Granite',
'Steak',
'Tazer',
'Snarl',
'Bulk',
'Dagger',
'Squat',
'SaberFist',
'Slab',
'Lamp',
'Cram',
'Cannon',
'Tussle',
'Man',
'Chest',
'Gut',
'Rumble',
'Fury',
'Chunk',
'Wreck',
'Nail',
'Run',
'Rust',
'Slam',
'Slag',
'Thunder',
'Hazzard'],
'HERO_NAMES_GROUP_3': ['Beef',
'Huge',
'Cheese',
'Neck',
'Flank',
'Meat',
'Delt',
'Abs',
'Heart',
'Chest',
'Roar',
'Lots',
'Back',
'Nail',
'Lift',
'Fury',
'Meal',
'Stalk',
'Steak',
'Pec',
'Bone',
'Stag',
'Body',
'Fist',
'Broth',
'Groin',
'Shot',
'Cake',
'Iron',
'Chunk',
'Face',
'Head',
'Thrust',
'Crunch',
'Rock',
'Wad',
'Jaw',
'Muscle',
'Hair',
'Knob',
'man',
'Fast',
'Rod',
'Stone',
'Cheek',
'Lash']
}
class MyHero(BotPlugin):
"""Generates lunky hunky hero names in the spirit of MST3k's running joke in their Space Mutiny episode"""
min_err_version = '3.0.0' # Optional, but recommended
HERO_NAMES_PREFIXES = ['Mc','von ']
def get_configuration_template(self):
return CONFIG_TEMPLATE
def configure(self, configuration):
if configuration is not None and configuration != {}:
config = dict(chain(CONFIG_TEMPLATE.items(),
configuration.items()))
else:
config = CONFIG_TEMPLATE
super(MyHero, self).configure(config)
def get_prefix(self):
if not (random.randrange(0, 7) == 0): return ""
return self.HERO_NAMES_PREFIXES[(random.randrange(0, 3) == 2)]
def get_hero_name(self):
# every once in a while, thrown one of these complete in-jokes
if (random.randrange(0,100) == 50): return "Bob Johnson"
if (random.randrange(0,250) == 50): return "Rowsdower"
return "{n1} {p}{n2}{n3}".format(
n1=random.choice(self.config['HERO_NAMES_GROUP_1']),
p=self.get_prefix(),
n2=random.choice(self.config['HERO_NAMES_GROUP_2']),
n3=random.choice(self.config['HERO_NAMES_GROUP_3'])
)
@botcmd()
def myhero(self, msg, args):
"""Generates a special hunky hero name for you"""
return self.get_hero_name()
# @re_botcmd(pattern=r"(^| )hero($| |\.)|(^| )heros($| |\.)|(^| )heroes($| |\.)", prefixed=False, flags=re.IGNORECASE)
@re_botcmd(pattern=r"(^| )(hero|heros|heroes)($| |\.|\!|\?)", prefixed=False, flags=re.IGNORECASE)
def listen_for_talk_of_heroes(self, msg, match):
"""Talk of heroes prompts a Space Hero Name..."""
return self.get_hero_name()
@re_botcmd(pattern=r"space mutiny", prefixed=False, flags=re.IGNORECASE)
def listen_for_talk_of_mutiny(self, msg, match):
"""Talk of mutiny prompts a Space Hero Name..."""
return self.get_hero_name()