aboutsummaryrefslogtreecommitdiff
path: root/modules/factoids.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-11-18 10:31:44 +0000
committerGravatar jesopo2018-11-18 10:31:44 +0000
commitc227f9a34f3833ff146c93d4f9774e83171093f7 (patch)
tree5a3899668aa6bb9f428a660708a6458ff6bb52f1 /modules/factoids.py
parentMake 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.py25
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))