Catch factoids in channel messages as '{!factoid <name>}' (factoids.py)

This commit is contained in:
jesopo 2018-11-18 10:31:44 +00:00
parent fd805a07db
commit c227f9a34f

View file

@ -1,6 +1,13 @@
import re
from src import ModuleManager, utils from src import ModuleManager, utils
REGEX_FACTOID = re.compile("{!factoid ([^}]+)}", re.I)
class Module(ModuleManager.BaseModule): 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) @utils.hook("received.command.factoid", min_args=1)
def factoid(self, event): def factoid(self, event):
""" """
@ -14,9 +21,17 @@ class Module(ModuleManager.BaseModule):
event["stdout"].write("Set factoid '%s'" % factoid) event["stdout"].write("Set factoid '%s'" % factoid)
else: else:
factoid = event["args"].lower().strip() name, value = self._get_factoid(event["server"], event["args"])
value = event["server"].get_setting("factoid-%s" % factoid, None)
if value == None: if value == None:
raise utils.EventError("Unknown factoid '%s'" % factoid) raise utils.EventError("Unknown factoid '%s'" % name)
event["stdout"].write("%s: %s" % (factoid, value)) 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))