allow channels to specify quotes should be per-channel

This commit is contained in:
jesopo 2019-09-25 15:12:52 +01:00
parent d8ad79c153
commit c2e48c858e

View file

@ -3,6 +3,8 @@
import random, time import random, time
from src import ModuleManager, utils from src import ModuleManager, utils
@utils.export("channelset", utils.BoolSetting("channel-quotes",
"Whether or not quotes added from this channel are kept in this channel"))
class Module(ModuleManager.BaseModule): class Module(ModuleManager.BaseModule):
def category_and_quote(self, s): def category_and_quote(self, s):
category, sep, quote = s.partition("=") category, sep, quote = s.partition("=")
@ -26,9 +28,15 @@ class Module(ModuleManager.BaseModule):
""" """
category, quote = self.category_and_quote(event["args"]) category, quote = self.category_and_quote(event["args"])
if category and quote: if category and quote:
quotes = self._get_quotes(event["server"], category) target = event["server"]
if event["is_channel"] and event["target"].get_setting(
"channel-quotes", False):
target = event["target"]
quotes = self._get_quotes(target, category)
quotes.append([event["user"].name, int(time.time()), quote]) quotes.append([event["user"].name, int(time.time()), quote])
self._set_quotes(event["server"], category, quotes) self._set_quotes(target, category, quotes)
event["stdout"].write("Quote added") event["stdout"].write("Quote added")
else: else:
event["stderr"].write("Please provide a category AND quote") event["stderr"].write("Please provide a category AND quote")
@ -78,6 +86,9 @@ class Module(ModuleManager.BaseModule):
""" """
category, search = self.category_and_quote(event["args"]) category, search = self.category_and_quote(event["args"])
quotes = event["server"].get_setting("quotes-%s" % category, []) quotes = event["server"].get_setting("quotes-%s" % category, [])
if event["is_channel"]:
quotes += self._get_quotes(event["target"], category)
if search: if search:
search_lower = search.lower() search_lower = search.lower()
quotes = [q for q in quotes if search_lower in q[-1].lower()] quotes = [q for q in quotes if search_lower in q[-1].lower()]
@ -99,14 +110,21 @@ class Module(ModuleManager.BaseModule):
def quote_grab(self, event): def quote_grab(self, event):
line = event["target"].buffer.find_from(event["args_split"][0]) line = event["target"].buffer.find_from(event["args_split"][0])
if line: if line:
quotes = self._get_quotes(event["server"], line.sender) target = event["server"]
if event["target"].get_setting("channel-quotes", False):
target = event["target"]
quotes = self._get_quotes(target, line.sender)
text = None text = None
if line.action: if line.action:
text = "* %s %s" % (line.sender, line.message) text = "* %s %s" % (line.sender, line.message)
else: else:
text = "<%s> %s" % (line.sender, line.message) text = "<%s> %s" % (line.sender, line.message)
quotes.append([event["user"].name, int(time.time()), text]) quotes.append([event["user"].name, int(time.time()), text])
self._set_quotes(event["server"], line.sender, quotes) self._set_quotes(target, line.sender, quotes)
event["stdout"].write("Quote added") event["stdout"].write("Quote added")
else: else:
event["stderr"].write("Nothing found to quote") event["stderr"].write("Nothing found to quote")