Compare commits
2 commits
edbc35aa19
...
0d49fb1457
Author | SHA1 | Date | |
---|---|---|---|
dece | 0d49fb1457 | ||
dece | b6929c9453 |
|
@ -25,7 +25,8 @@
|
|||
"beers": {
|
||||
"commands": ["beer"],
|
||||
"beers": ["Paix-Dieu"],
|
||||
"opening_text": "/me cracks open a {beer} for {target}"
|
||||
"opening_text": "/me cracks open a {beer} for {target}",
|
||||
"target_word": "for"
|
||||
},
|
||||
"caretaker": {
|
||||
"warm_welcome": ["Hi {target}!"],
|
||||
|
|
|
@ -183,8 +183,8 @@ class Plugin:
|
|||
return True
|
||||
return False
|
||||
|
||||
def __save_question(self, question, match, preamble):
|
||||
content = question[len(match):].strip()
|
||||
def __save_question(self, question, matched, preamble):
|
||||
content = question[len(matched):].strip()
|
||||
content = content.rstrip("?").rstrip()
|
||||
question = Question(preamble, content)
|
||||
self.question = question
|
||||
|
@ -228,23 +228,23 @@ class Plugin:
|
|||
# If no_content is False (default), simply compare the parsed
|
||||
# identifier with available identifiers.
|
||||
if no_content:
|
||||
match = lambda pc, ai: (
|
||||
matches = lambda pc, ai: (
|
||||
pc.raw == ai or pc.raw.startswith(ai + " ")
|
||||
)
|
||||
else:
|
||||
match = lambda pc, ai: pc.ident == ai
|
||||
matches = lambda pc, ai: pc.ident == ai
|
||||
# First case: the command identifier has been used.
|
||||
if match(parsed_command, ident):
|
||||
if matches(parsed_command, ident):
|
||||
parsed_command.ident = ident
|
||||
parsed_command.match = ident
|
||||
parsed_command.matched = ident
|
||||
self.__save_command(parsed_command)
|
||||
return True
|
||||
# Second case: an alias of the identifier has been used.
|
||||
ident_aliases = aliases.get(ident, [])
|
||||
for alias in ident_aliases:
|
||||
if match(parsed_command, alias):
|
||||
if matches(parsed_command, alias):
|
||||
parsed_command.ident = ident
|
||||
parsed_command.match = alias
|
||||
parsed_command.matched = alias
|
||||
self.__save_command(parsed_command)
|
||||
return True
|
||||
return False
|
||||
|
@ -313,4 +313,4 @@ class Command:
|
|||
# Raw command content (minus name and suffix), always set.
|
||||
raw: str
|
||||
# Identifier matched, possibly an alias. Set only when matched.
|
||||
match: str = ""
|
||||
matched: str = ""
|
||||
|
|
|
@ -5,7 +5,7 @@ from edmond.plugin import Plugin
|
|||
|
||||
class BeersPlugin(Plugin):
|
||||
|
||||
REQUIRED_CONFIGS = ["commands", "beers", "opening_text"]
|
||||
REQUIRED_CONFIGS = ["commands", "beers", "opening_text", "target_word"]
|
||||
|
||||
def __init__(self, bot):
|
||||
super().__init__(bot)
|
||||
|
@ -13,10 +13,17 @@ class BeersPlugin(Plugin):
|
|||
def on_pubmsg(self, event):
|
||||
if not self.should_handle_command(event.arguments[0]):
|
||||
return False
|
||||
|
||||
target = event.source.nick
|
||||
if self.command.content:
|
||||
words = self.command.content.split(maxsplit=1)
|
||||
if len(words) == 2 and words[0] == self.config["target_word"]:
|
||||
target = words[1]
|
||||
|
||||
beer = random.choice(self.config["beers"])
|
||||
opening_text = self.config["opening_text"].format(
|
||||
beer=beer,
|
||||
target=event.source.nick
|
||||
target=target
|
||||
)
|
||||
self.bot.say(event.target, opening_text)
|
||||
return True
|
||||
|
|
|
@ -29,11 +29,11 @@ class CaptureGivePlugin(Plugin):
|
|||
|
||||
# "give" command.
|
||||
if self.command.ident == self.config["commands"][0]:
|
||||
content = self.command.raw[len(self.command.match):].strip()
|
||||
match = self.content_re.match(content)
|
||||
if not match:
|
||||
content = self.command.raw[len(self.command.matched):].strip()
|
||||
matched = self.content_re.matched(content)
|
||||
if not matched:
|
||||
return False
|
||||
groups = match.groupdict()
|
||||
groups = matched.groupdict()
|
||||
if any(k not in groups for k in ("thing", "person")):
|
||||
return False
|
||||
thing = groups["thing"]
|
||||
|
|
|
@ -32,11 +32,11 @@ class NotesPlugin(Plugin):
|
|||
|
||||
# "note down" command.
|
||||
if self.command.ident == self.config["commands"][0]:
|
||||
content = self.command.raw[len(self.command.match):].strip()
|
||||
match = self.content_re.match(content)
|
||||
if not match:
|
||||
content = self.command.raw[len(self.command.matched):].strip()
|
||||
matched = self.content_re.match(content)
|
||||
if not matched:
|
||||
return False
|
||||
groups = match.groupdict()
|
||||
groups = matched.groupdict()
|
||||
if any(k not in groups for k in ("target", "note")):
|
||||
return False
|
||||
target = groups["target"]
|
||||
|
|
|
@ -37,13 +37,13 @@ class YoutubeParserPlugin(Plugin):
|
|||
return False
|
||||
words = event.arguments[0].split()
|
||||
for word in words:
|
||||
match = self.VIDEO_URL_RE.match(word)
|
||||
if match:
|
||||
return self.handle_match(match, event.target)
|
||||
matched = self.VIDEO_URL_RE.match(word)
|
||||
if matched:
|
||||
return self.handle_match(matched, event.target)
|
||||
return False
|
||||
|
||||
def handle_match(self, match, target):
|
||||
groupdict = match.groupdict()
|
||||
def handle_match(self, matched, target):
|
||||
groupdict = matched.groupdict()
|
||||
code = groupdict.get("code1") or groupdict.get("code2")
|
||||
if not code:
|
||||
return False
|
||||
|
|
Loading…
Reference in a new issue