bitbot-3.11-fork/modules/factoids.py

40 lines
1.4 KiB
Python
Raw Normal View History

#--depends-on commands
import re
from src import ModuleManager, utils
2018-11-18 07:55:43 +00:00
REGEX_FACTOID = re.compile("{!factoid ([^}]+)}", re.I)
2018-11-18 07:55:43 +00:00
class Module(ModuleManager.BaseModule):
def _get_factoid(self, server, factoid):
name = factoid.lower().strip()
return name, server.get_setting("factoid-%s" % name, None)
2018-11-18 07:55:43 +00:00
@utils.hook("received.command.factoid", min_args=1)
def factoid(self, event):
2018-11-18 07:59:47 +00:00
"""
:help: Set/get a factoid
:usage: <key> [= value]
"""
2018-11-18 07:55:43 +00:00
if "=" in event["args"]:
key, _, value = event["args"].partition("=")
factoid = key.lower().strip()
event["server"].set_setting("factoid-%s" % factoid, value.strip())
2018-11-18 07:55:43 +00:00
event["stdout"].write("Set factoid '%s'" % factoid)
else:
name, value = self._get_factoid(event["server"], event["args"])
2018-11-18 07:55:43 +00:00
if value == None:
raise utils.EventError("Unknown factoid '%s'" % name)
event["stdout"].write("%s: %s" % (name, value))
@utils.hook("command.regex")
@utils.kwarg("ignore_action", False)
@utils.kwarg("command", "factoid")
@utils.kwarg("pattern", REGEX_FACTOID)
def channel_message(self, event):
name, value = self._get_factoid(event["server"],
event["match"].group(1))
if not value == None:
event["stdout"].write("%s: %s" % (name, value))