aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/evergreen/wonder_twins.py49
-rw-r--r--bot/resources/evergreen/wonder_twins.yaml99
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