made slap use the new TextGenerator class
This commit is contained in:
parent
15e7825125
commit
2be0c46b89
6 changed files with 93 additions and 75 deletions
|
@ -5,14 +5,6 @@ with open("plugins/data/larts.txt") as f:
|
||||||
larts = [line.strip() for line in f.readlines()
|
larts = [line.strip() for line in f.readlines()
|
||||||
if not line.startswith("//")]
|
if not line.startswith("//")]
|
||||||
|
|
||||||
with open("plugins/data/slaps.txt") as f:
|
|
||||||
slaps = [line.strip() for line in f.readlines()
|
|
||||||
if not line.startswith("//")]
|
|
||||||
|
|
||||||
with open("plugins/data/slap_items.txt") as f:
|
|
||||||
items = [line.strip() for line in f.readlines()
|
|
||||||
if not line.startswith("//")]
|
|
||||||
|
|
||||||
with open("plugins/data/kills.txt") as f:
|
with open("plugins/data/kills.txt") as f:
|
||||||
kills = [line.strip() for line in f.readlines()
|
kills = [line.strip() for line in f.readlines()
|
||||||
if not line.startswith("//")]
|
if not line.startswith("//")]
|
||||||
|
@ -25,27 +17,6 @@ with open("plugins/data/flirts.txt") as f:
|
||||||
flirts = [line.strip() for line in f.readlines()
|
flirts = [line.strip() for line in f.readlines()
|
||||||
if not line.startswith("//")]
|
if not line.startswith("//")]
|
||||||
|
|
||||||
|
|
||||||
@hook.command
|
|
||||||
def slap(inp, me=None, nick=None, conn=None, notice=None):
|
|
||||||
"""slap <user> -- Makes the bot slap <user>."""
|
|
||||||
target = inp.strip()
|
|
||||||
|
|
||||||
if " " in target:
|
|
||||||
notice("Invalid username!")
|
|
||||||
return
|
|
||||||
|
|
||||||
# if the user is trying to make the bot slap itself, slap them
|
|
||||||
if target.lower() == conn.nick.lower() or target.lower() == "itself":
|
|
||||||
target = nick
|
|
||||||
|
|
||||||
values = {"item": random.choice(items), "user": target}
|
|
||||||
phrase = random.choice(slaps)
|
|
||||||
|
|
||||||
# act out the message
|
|
||||||
me(phrase.format(**values))
|
|
||||||
|
|
||||||
|
|
||||||
@hook.command
|
@hook.command
|
||||||
def lart(inp, me=None, nick=None, conn=None, notice=None):
|
def lart(inp, me=None, nick=None, conn=None, notice=None):
|
||||||
"""lart <user> -- LARTs <user>."""
|
"""lart <user> -- LARTs <user>."""
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
cast iron skillet
|
|
||||||
large trout
|
|
||||||
baseball bat
|
|
||||||
wooden cane
|
|
||||||
nail
|
|
||||||
printer
|
|
||||||
shovel
|
|
||||||
pair of trousers
|
|
||||||
CRT monitor
|
|
||||||
diamond sword
|
|
||||||
baguette
|
|
||||||
physics textbook
|
|
||||||
television
|
|
||||||
mau5head
|
|
||||||
five ton truck
|
|
||||||
roll of duct tape
|
|
||||||
book
|
|
||||||
laptop
|
|
||||||
old television
|
|
||||||
sack of rocks
|
|
||||||
rainbow trout
|
|
||||||
cobblestone block
|
|
||||||
lava bucket
|
|
||||||
rubber chicken
|
|
||||||
spiked bat
|
|
||||||
gold block
|
|
||||||
fire extinguisher
|
|
||||||
heavy rock
|
|
||||||
chunk of dirt
|
|
51
plugins/data/slaps.json
Normal file
51
plugins/data/slaps.json
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
"templates":[
|
||||||
|
"slaps {user} with a {item}.",
|
||||||
|
"slaps {user} around a bit with a {item}.",
|
||||||
|
"throws a {item} at {user}.",
|
||||||
|
"chucks a few {item}s at {user}.",
|
||||||
|
"grabs a {item} and throws it in {user}'s face.",
|
||||||
|
"launches a {item} in {user}'s general direction.",
|
||||||
|
"sits on {user}'s face while slamming a {item} into their crotch.",
|
||||||
|
"starts slapping {user} silly with a {item}.",
|
||||||
|
"holds {user} down and repeatedly whacks them with a {item}.",
|
||||||
|
"prods {user} with a flaming {item}.",
|
||||||
|
"picks up a {item} and whacks {user} with it.",
|
||||||
|
"ties {user} to a chair and throws a {item} at them.",
|
||||||
|
"hits {user} on the head with a {item}.",
|
||||||
|
"ties {user} to a pole and whips them with a {item}."
|
||||||
|
],
|
||||||
|
"parts":{
|
||||||
|
"item":[
|
||||||
|
"cast iron skillet",
|
||||||
|
"large trout",
|
||||||
|
"baseball bat",
|
||||||
|
"wooden cane",
|
||||||
|
"nail",
|
||||||
|
"printer",
|
||||||
|
"shovel",
|
||||||
|
"pair of trousers",
|
||||||
|
"CRT monitor",
|
||||||
|
"diamond sword",
|
||||||
|
"baguette",
|
||||||
|
"physics textbook",
|
||||||
|
"television",
|
||||||
|
"mau5head",
|
||||||
|
"five ton truck",
|
||||||
|
"roll of duct tape",
|
||||||
|
"book",
|
||||||
|
"laptop",
|
||||||
|
"old television",
|
||||||
|
"sack of rocks",
|
||||||
|
"rainbow trout",
|
||||||
|
"cobblestone block",
|
||||||
|
"lava bucket",
|
||||||
|
"rubber chicken",
|
||||||
|
"spiked bat",
|
||||||
|
"gold block",
|
||||||
|
"fire extinguisher",
|
||||||
|
"heavy rock",
|
||||||
|
"chunk of dirt"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +0,0 @@
|
||||||
slaps {user} with a {item}.
|
|
||||||
slaps {user} around a bit with a {item}.
|
|
||||||
throws a {item} at {user}.
|
|
||||||
chucks a few {item}s at {user}.
|
|
||||||
grabs a {item} and throws it in {user}'s face.
|
|
||||||
launches a {item} in {user}'s general direction.
|
|
||||||
sits on {user}'s face while slamming a {item} into their crotch.
|
|
||||||
starts slapping {user} silly with a {item}.
|
|
||||||
holds {user} down and repeatedly whacks them with a {item}.
|
|
||||||
prods {user} with a flaming {item}.
|
|
||||||
picks up a {item} and whacks {user} with it.
|
|
||||||
ties {user} to a chair and throws a {item} at them.
|
|
||||||
hits {user} on the head with a {item}.
|
|
||||||
ties {user} to a pole and whips them with a {item}.
|
|
32
plugins/slap.py
Normal file
32
plugins/slap.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
from util import hook, text, textgen
|
||||||
|
import json, os
|
||||||
|
|
||||||
|
|
||||||
|
def get_generator(_json, variables):
|
||||||
|
data = json.loads(_json)
|
||||||
|
return textgen.TextGenerator(data["templates"],
|
||||||
|
data["parts"], variables=variables)
|
||||||
|
|
||||||
|
|
||||||
|
@hook.command
|
||||||
|
def slap(inp, me=None, nick=None, conn=None, notice=None):
|
||||||
|
"""slap <user> -- Makes the bot slap <user>."""
|
||||||
|
target = inp.strip()
|
||||||
|
|
||||||
|
if " " in target:
|
||||||
|
notice("Invalid username!")
|
||||||
|
return
|
||||||
|
|
||||||
|
# if the user is trying to make the bot slap itself, slap them
|
||||||
|
if target.lower() == conn.nick.lower() or target.lower() == "itself":
|
||||||
|
target = nick
|
||||||
|
|
||||||
|
variables = {
|
||||||
|
"user": target
|
||||||
|
}
|
||||||
|
|
||||||
|
with open("plugins/data/slaps.json") as f:
|
||||||
|
generator = get_generator(f.read(), variables)
|
||||||
|
|
||||||
|
# act out the message
|
||||||
|
me(generator.generate_string())
|
|
@ -5,19 +5,26 @@ TEMPLATE_RE = re.compile(r"\{(.+?)\}")
|
||||||
|
|
||||||
|
|
||||||
class TextGenerator(object):
|
class TextGenerator(object):
|
||||||
def __init__(self, name, templates, default_templates, parts, variables=None):
|
def __init__(self, templates, parts, default_templates=None, variables=None):
|
||||||
self.name = name
|
|
||||||
self.templates = templates
|
self.templates = templates
|
||||||
self.default_templates = default_templates
|
self.default_templates = default_templates
|
||||||
self.parts = parts
|
self.parts = parts
|
||||||
self.variables = variables
|
self.variables = variables
|
||||||
|
print self.variables
|
||||||
|
|
||||||
def generate_string(self, template=None):
|
def generate_string(self, template=None):
|
||||||
"""
|
"""
|
||||||
Generates one string using the specified templates.
|
Generates one string using the specified templates.
|
||||||
If no templates are specified, use a random template from the default_templates list.
|
If no templates are specified, use a random template from the default_templates list.
|
||||||
"""
|
"""
|
||||||
|
if self.default_templates:
|
||||||
text = self.templates[template or random.choice(self.default_templates)]
|
text = self.templates[template or random.choice(self.default_templates)]
|
||||||
|
else:
|
||||||
|
text = random.choice(self.templates)
|
||||||
|
|
||||||
|
if self.variables:
|
||||||
|
for key, value in self.variables.items():
|
||||||
|
text = text.replace("{%s}" % key, value)
|
||||||
|
|
||||||
# get a list of all text parts we need
|
# get a list of all text parts we need
|
||||||
required_parts = TEMPLATE_RE.findall(text)
|
required_parts = TEMPLATE_RE.findall(text)
|
||||||
|
|
Reference in a new issue