Markov: add support for requesting desired min/max size of a reply
note that since the min_size support is kind of crude at the moment, this only partially works
This commit is contained in:
parent
157f1bf361
commit
7b4b86dc0d
@ -54,7 +54,7 @@ class Markov(Module):
|
||||
# set up regexes, for replying to specific stuff
|
||||
trainpattern = '^!markov\s+train\s+(.*)$'
|
||||
learnpattern = '^!markov\s+learn\s+(.*)$'
|
||||
replypattern = '^!markov\s+reply(\s+(.*)$|$)'
|
||||
replypattern = '^!markov\s+reply(\s+min=(\d+))?(\s+max=(\d+))?(\s+(.*)$|$)'
|
||||
|
||||
self.trainre = re.compile(trainpattern)
|
||||
self.learnre = re.compile(learnpattern)
|
||||
@ -148,11 +148,19 @@ class Markov(Module):
|
||||
|
||||
match = self.replyre.search(what)
|
||||
if match:
|
||||
min_size = 15
|
||||
max_size = 100
|
||||
|
||||
if match.group(2):
|
||||
line = match.group(2)
|
||||
return self._reply_to_line(line)
|
||||
min_size = int(match.group(2))
|
||||
if match.group(4):
|
||||
max_size = int(match.group(4))
|
||||
|
||||
if match.group(5) != '':
|
||||
line = match.group(6)
|
||||
return self._reply_to_line(line, min_size=min_size, max_size=max_size)
|
||||
else:
|
||||
return self._reply()
|
||||
return self._reply(min_size=min_size, max_size=max_size)
|
||||
|
||||
def _learn_line(self, line):
|
||||
"""Create Markov chains from the provided line."""
|
||||
|
Loading…
Reference in New Issue
Block a user