diff options
Diffstat (limited to '')
| -rw-r--r-- | bot/exts/evergreen/wonder_twins.py | 49 | ||||
| -rw-r--r-- | bot/resources/evergreen/wonder_twins.yaml | 99 | 
2 files changed, 148 insertions, 0 deletions
| diff --git a/bot/exts/evergreen/wonder_twins.py b/bot/exts/evergreen/wonder_twins.py new file mode 100644 index 00000000..afc5346e --- /dev/null +++ b/bot/exts/evergreen/wonder_twins.py @@ -0,0 +1,49 @@ +import random +from pathlib import Path + +import yaml +from discord.ext.commands import Bot, Cog, Context, command + + +class WonderTwins(Cog): +    """Cog for a Wonder Twins inspired command.""" + +    def __init__(self, bot: Bot): +        self.bot = bot + +        with open(Path.cwd() / "bot" / "resources" / "evergreen" / "wonder_twins.yaml", "r", encoding="utf-8") as f: +            info = yaml.load(f, Loader=yaml.FullLoader) +            self.water_types = info["water_types"] +            self.objects = info["objects"] +            self.adjectives = info["adjectives"] + +    @staticmethod +    def append_onto(phrase: str, insert_word: str) -> str: +        """Appends one word onto the end of another phrase in order to format with the proper determiner.""" +        if insert_word.endswith("s"): +            phrase = phrase.split() +            del phrase[0] +            phrase = " ".join(phrase) + +        insert_word = insert_word.split()[-1] +        return " ".join([phrase, insert_word]) + +    def format_phrase(self) -> str: +        """Creates a transformation phrase from available words.""" +        adjective = random.choice((None, random.choice(self.adjectives))) +        object_name = random.choice(self.objects) +        water_type = random.choice(self.water_types) + +        if adjective: +            object_name = self.append_onto(adjective, object_name) +        return f"{object_name} of {water_type}" + +    @command(name="formof", aliases=["wondertwins", "wondertwin", "fo"]) +    async def form_of(self, ctx: Context) -> None: +        """Command to send a Wonder Twins inspired phrase to the user invoking the command.""" +        await ctx.send(f"Form of {self.format_phrase()}!") + + +def setup(bot: Bot) -> None: +    """Load the WonderTwins cog.""" +    bot.add_cog(WonderTwins(bot)) diff --git a/bot/resources/evergreen/wonder_twins.yaml b/bot/resources/evergreen/wonder_twins.yaml new file mode 100644 index 00000000..05e8d749 --- /dev/null +++ b/bot/resources/evergreen/wonder_twins.yaml @@ -0,0 +1,99 @@ +water_types: +  - ice +  - water +  - steam +  - snow + +objects: +  - a bucket +  - a spear +  - a wall +  - a lake +  - a ladder +  - a boat +  - a vial +  - a ski slope +  - a hand +  - a ramp +  - clippers +  - a bridge +  - a dam +  - a glacier +  - a crowbar +  - stilts +  - a pole +  - a hook +  - a wave +  - a cage +  - a basket +  - bolt cutters +  - a trapeze +  - a puddle +  - a toboggan +  - a gale +  - a cloud +  - a unicycle +  - a spout +  - a sheet +  - a gelatin dessert +  - a saw +  - a geyser +  - a jet +  - a ball +  - handcuffs +  - a door +  - a row +  - a gondola +  - a sled +  - a rocket +  - a swing +  - a blizzard +  - a saddle +  - cubes +  - a horse +  - a knight +  - a rocket pack +  - a slick +  - a drill +  - a shield +  - a crane +  - a reflector +  - a bowling ball +  - a turret +  - a catapault +  - a blanket +  - balls +  - a faucet +  - shears +  - a thunder cloud +  - a net +  - a yoyo +  - a block +  - a straight-jacket +  - a slingshot +  - a jack +  - a car +  - a club +  - a vault +  - a storm +  - a wrench +  - an anchor +  - a beast + +adjectives: +  - a large +  - a giant +  - a massive +  - a small +  - a tiny +  - a super cool +  - a frozen +  - a minuscule +  - a minute +  - a microscopic +  - a very small +  - a little +  - a huge +  - an enourmous +  - a gigantic +  - a great | 
