diff options
| author | 2018-11-18 10:31:44 +0000 | |
|---|---|---|
| committer | 2018-11-18 10:31:44 +0000 | |
| commit | c227f9a34f3833ff146c93d4f9774e83171093f7 (patch) | |
| tree | 5a3899668aa6bb9f428a660708a6458ff6bb52f1 /modules/factoids.py | |
| parent | Make branch names blue AND bold! (github.py) (diff) | |
| signature | ||
Catch factoids in channel messages as '{!factoid <name>}' (factoids.py)
Diffstat (limited to 'modules/factoids.py')
| -rw-r--r-- | modules/factoids.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/modules/factoids.py b/modules/factoids.py index 7ac84dcd..ff7ac88a 100644 --- a/modules/factoids.py +++ b/modules/factoids.py @@ -1,6 +1,13 @@ +import re from src import ModuleManager, utils +REGEX_FACTOID = re.compile("{!factoid ([^}]+)}", re.I) + class Module(ModuleManager.BaseModule): + def _get_factoid(self, server, factoid): + name = factoid.lower().strip() + return name, server.get_setting("factoid-%s" % name, None) + @utils.hook("received.command.factoid", min_args=1) def factoid(self, event): """ @@ -14,9 +21,17 @@ class Module(ModuleManager.BaseModule): event["stdout"].write("Set factoid '%s'" % factoid) else: - factoid = event["args"].lower().strip() - value = event["server"].get_setting("factoid-%s" % factoid, None) - + name, value = self._get_factoid(event["server"], event["args"]) if value == None: - raise utils.EventError("Unknown factoid '%s'" % factoid) - event["stdout"].write("%s: %s" % (factoid, value)) + raise utils.EventError("Unknown factoid '%s'" % name) + event["stdout"].write("%s: %s" % (name, value)) + + @utils.hook("received.message.channel") + def channel_message(self, event): + match = REGEX_FACTOID.search(event["message"]) + if match: + name, value = self._get_factoid(event["server"], match.group(1)) + if not factoid == None: + self.events.on("send.stdout").call(target=event["channel"], + module_name="Factoids", server=event["server"], + message="%s: %s" % (name, value)) |
