aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-09-20 17:18:39 +0100
committerGravatar jesopo2019-09-20 17:18:47 +0100
commit81cf1ab58f4f1cb385196ea4b61d5b95561833ea (patch)
tree9c72849f42166d2b55d2b02eec7b138ba97ce474 /modules
parent'_on_load' -> 'on_load' (diff)
signature
add a command to generate markov chains (!markov)
Diffstat (limited to 'modules')
-rw-r--r--modules/markov.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/modules/markov.py b/modules/markov.py
index 29aa1ab9..888768ef 100644
--- a/modules/markov.py
+++ b/modules/markov.py
@@ -43,7 +43,18 @@ class Module(ModuleManager.BaseModule):
words, frequencies = list(zip(*words))
return random.choices(words, weights=frequencies, k=1)[0]
- def generate(self, channel_id):
+ @utils.hook("received.command.markov")
+ @utils.kwarg("channel_only", True)
+ def generate(self, event):
+ if not event["target"].get_setting("markov", False):
+ raise utils.EventError("Markov chains not enabled in this channel")
+ out = self._generate(event["target"].id)
+ if not out == None:
+ event["stdout"].write(out)
+ else:
+ event["stderr"].write("Failed to generate markov chain")
+
+ def _generate(self, channel_id):
first_words = self.bot.database.execute_fetchall("""SELECT third_word,
frequency FROM markov WHERE channel_id=? AND first_word IS NULL AND
second_word IS NULL AND third_word NOT NULL""", [channel_id])