aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2018-08-28 14:55:08 +0100
committerGravatar jesopo2018-08-28 14:55:08 +0100
commitb699c120a0894e464d7b2ae972ce13adbfcc54b8 (patch)
tree3d93f3f1f841d641bc30994f69fd0261e4206b42
parentSwitch to time.monotonic for comparisons, only send data at most once every .5 (diff)
Change how specific events assure their hooks gets the event independant of
loading order
-rw-r--r--EventManager.py16
-rw-r--r--modules/auto_mode.py2
-rw-r--r--modules/channel_op.py16
-rw-r--r--modules/commands.py2
-rw-r--r--modules/karma.py2
-rw-r--r--modules/sed.py6
-rw-r--r--modules/youtube.py2
7 files changed, 26 insertions, 20 deletions
diff --git a/EventManager.py b/EventManager.py
index 23faba1b..33d4aa80 100644
--- a/EventManager.py
+++ b/EventManager.py
@@ -53,6 +53,9 @@ class EventHook(object):
self._call_notify = None
self._stored_events = []
+ def _make_event(self, kwargs):
+ return Event(self.bot, self.name, **kwargs)
+
def _get_path(self):
path = [self.name]
parent = self.parent
@@ -69,8 +72,8 @@ class EventHook(object):
self._hooks.sort(key=lambda x: x.priority)
if replay:
- for event in self._stored_events:
- callback.call(event)
+ for kwargs in self._stored_events:
+ callback.call(self._make_event(kwargs))
self._stored_events = None
def _unhook(self, hook):
@@ -95,17 +98,20 @@ class EventHook(object):
def call_for_result(self, default=None, max=None, **kwargs):
results = self.call(max=max, **kwargs)
return default if not len(results) else results[0]
+ def assure_call(self, **kwargs):
+ if not self._stored_events == None:
+ self._stored_events.append(kwargs)
+ else:
+ self.call(kwargs)
def call(self, max=None, **kwargs):
self.bot.log.debug("calling event: \"%s\" (params: %s)",
[self._get_path(), kwargs])
start = time.monotonic()
- event = Event(self.bot, self.name, **kwargs)
+ event = self._make_event(kwargs)
if self._call_notify:
self._call_notify(self, event)
- if not self._stored_events == None:
- self._stored_events.append(event)
called = 0
returns = []
for hook in self._hooks:
diff --git a/modules/auto_mode.py b/modules/auto_mode.py
index 4d0c3a0b..2c33f260 100644
--- a/modules/auto_mode.py
+++ b/modules/auto_mode.py
@@ -5,7 +5,7 @@ class Module(object):
self.bot = bot
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="automode",
+ "channelset").assure_call(setting="automode",
help="Disable/Enable automode",
validate=Utils.bool_or_none)
diff --git a/modules/channel_op.py b/modules/channel_op.py
index 43251609..4dc53b28 100644
--- a/modules/channel_op.py
+++ b/modules/channel_op.py
@@ -32,19 +32,19 @@ class Module(object):
bot.events.on("received").on("message").on("channel").hook(self.highlight_spam)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="highlight-spam-threshold",
- help="Set the number of nicknames in a message that qualifies as spam",
- validate=Utils.int_or_none)
+ "channelset").assure_call(setting="highlight-spam-threshold",
+ help="Set the number of nicknames in a message that "
+ "qualifies as spam", validate=Utils.int_or_none)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="highlight-spam-protection",
+ "channelset").assure_call(setting="highlight-spam-protection",
help="Enable/Disable highlight spam protection",
validate=Utils.bool_or_none)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="highlight-spam-ban",
- help="Enable/Disable banning highlight spammers instead of just kicking",
- validate=Utils.bool_or_none)
+ "channelset").assure_call(setting="highlight-spam-ban",
+ help="Enable/Disable banning highlight spammers "
+ "instead of just kicking", validate=Utils.bool_or_none)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="ban-format",
+ "channelset").assure_call(setting="ban-format",
help="Set ban format ($n = nick, $u = username, $h = hostname)")
def kick(self, event):
diff --git a/modules/commands.py b/modules/commands.py
index c0158287..e75ae4d1 100644
--- a/modules/commands.py
+++ b/modules/commands.py
@@ -60,7 +60,7 @@ class Module(object):
help="Get more output from the last command", skip_out=True)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="command-prefix",
+ "channelset").assure_call(setting="command-prefix",
help="Set the command prefix used in this channel")
bot.events.on("new").on("user", "channel").hook(self.new)
diff --git a/modules/karma.py b/modules/karma.py
index 887d98df..e92b2c60 100644
--- a/modules/karma.py
+++ b/modules/karma.py
@@ -19,7 +19,7 @@ class Module(object):
usage="<target>")
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="karma-verbose",
+ "channelset").assure_call(setting="karma-verbose",
help="Disable/Enable automatically responding to karma changes",
validate=Utils.bool_or_none)
diff --git a/modules/sed.py b/modules/sed.py
index ca75706c..7d64669d 100644
--- a/modules/sed.py
+++ b/modules/sed.py
@@ -11,12 +11,12 @@ class Module(object):
self.channel_message)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="sed",
+ "channelset").assure_call(setting="sed",
help="Disable/Enable sed in a channel",
validate=Utils.bool_or_none)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="sed-sender-only",
- help=
+ "channelset").assure_call(setting="sed-sender-only",
+ replayable=True, help=
"Disable/Enable sed only looking at the messages sent by the user",
validate=Utils.bool_or_none)
diff --git a/modules/youtube.py b/modules/youtube.py
index 51bcac38..df965ec0 100644
--- a/modules/youtube.py
+++ b/modules/youtube.py
@@ -26,7 +26,7 @@ class Module(object):
self.channel_message)
bot.events.on("postboot").on("configure").on(
- "channelset").call(setting="auto-youtube",
+ "channelset").assure_call(setting="auto-youtube",
help="Disable/Enable automatically getting info from youtube URLs",
validate=Utils.bool_or_none)