aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-10-08 13:49:43 +0100
committerGravatar jesopo2019-10-08 13:49:55 +0100
commit7a5edccb982a9aa3d1d1557d5928d03046bda29e (patch)
treecfa252ad88198d0ff2f8fd593916818e373789b9 /modules
parentrefactor anything that effects event poll timeout in to PollHook objects (diff)
signature
transient timers shouldn't use the event system
Diffstat (limited to 'modules')
-rw-r--r--modules/coins.py14
-rw-r--r--modules/database_backup.py7
-rw-r--r--modules/kick-rejoin.py10
-rw-r--r--modules/nick_regain.py16
-rw-r--r--modules/rss.py10
5 files changed, 26 insertions, 31 deletions
diff --git a/modules/coins.py b/modules/coins.py
index 3bdf6fff..413714d2 100644
--- a/modules/coins.py
+++ b/modules/coins.py
@@ -41,9 +41,9 @@ class CoinParseException(Exception):
class Module(ModuleManager.BaseModule):
def on_load(self):
- self.timers.add("coin-interest", INTEREST_INTERVAL,
+ self.timers.add("coin-interest", self._interest, INTEREST_INTERVAL,
time.time()+self._until_next_hour())
- self.timers.add("coin-lottery", LOTTERY_INTERVAL,
+ self.timers.add("coin-lottery", self._lottery, LOTTERY_INTERVAL,
time.time()+self._until_next_6_hour())
def _until_next_hour(self, now=None):
@@ -440,8 +440,7 @@ class Module(ModuleManager.BaseModule):
"%s loses %s" % (choice, event["user"].nickname,
str(coin_losses)))
- @utils.hook("timer.coin-interest")
- def interest(self, event):
+ def _interest(self, timer):
for server in self.bot.servers.values():
if not server.get_setting("coin-interest", False):
continue
@@ -456,7 +455,7 @@ class Module(ModuleManager.BaseModule):
interest = round(coins*interest_rate, 2)
server.set_user_setting(nickname, "coins",
self._coin_str(coins+interest))
- event["timer"].redo()
+ timer.redo()
@utils.hook("received.command.lotterybuy", authenticated=True)
def lottery_buy(self, event):
@@ -539,8 +538,7 @@ class Module(ModuleManager.BaseModule):
else:
event["stderr"].write("There have been no lottery winners!")
- @utils.hook("timer.coin-lottery")
- def lottery(self, event):
+ def _lottery(self, timer):
for server in self.bot.servers.values():
lottery = server.get_setting("lottery", {})
if lottery:
@@ -561,4 +559,4 @@ class Module(ModuleManager.BaseModule):
server.set_setting("lottery-winner", user.nickname)
user.send_notice("You won %s in the lottery! you now have %s coins"
% (self._coin_str(winnings), self._coin_str(new_coins)))
- event["timer"].redo()
+ timer.redo()
diff --git a/modules/database_backup.py b/modules/database_backup.py
index 55f18a13..2166be1d 100644
--- a/modules/database_backup.py
+++ b/modules/database_backup.py
@@ -10,11 +10,10 @@ class Module(ModuleManager.BaseModule):
until_next_hour = 60-now.second
until_next_hour += ((60-(now.minute+1))*60)
- self.timers.add("database-backup", BACKUP_INTERVAL,
+ self.timers.add("database-backup", self._backup, BACKUP_INTERVAL,
time.time()+until_next_hour)
- @utils.hook("timer.database-backup")
- def backup(self, event):
+ def _backup(self, timer):
location = self.bot.database.location
files = glob.glob("%s.*" % location)
files = sorted(files)
@@ -26,4 +25,4 @@ class Module(ModuleManager.BaseModule):
backup_file = "%s.%s" % (location, suffix)
shutil.copy2(location, backup_file)
- event["timer"].redo()
+ timer.repo()
diff --git a/modules/kick-rejoin.py b/modules/kick-rejoin.py
index 1082f79f..b2d3d234 100644
--- a/modules/kick-rejoin.py
+++ b/modules/kick-rejoin.py
@@ -28,12 +28,12 @@ class Module(ModuleManager.BaseModule):
if delay == 0:
self._rejoin(event["server"], event["channel"].name)
else:
- self.timers.add("kick-rejoin", delay, server=event["server"],
- channel_name=event["channel"].name)
+ self.timers.add("kick-rejoin",
+ self._timer(event["server"], event["channel"].name),
+ delay)
- @utils.hook("timer.kick-rejoin")
- def timer(self, event):
- self._rejoin(event["server"], event["channel_name"])
+ def _timer(self, server, channel_name):
+ return lambda timer: self._rejoin(server, channel_name)
def _rejoin(self, server, channel_name):
server.send_join(channel_name)
diff --git a/modules/nick_regain.py b/modules/nick_regain.py
index 20602dbb..cf1dfa48 100644
--- a/modules/nick_regain.py
+++ b/modules/nick_regain.py
@@ -7,7 +7,8 @@ class Module(ModuleManager.BaseModule):
if "MONITOR" in server.isupport:
server.send_raw("MONITOR + %s" % target_nick)
else:
- self.timers.add("ison-check", 30, server=server)
+ self.timers.add("ison-check", self._ison_check, 30,
+ server=server)
@utils.hook("received.376")
def end_of_motd(self, event):
@@ -31,13 +32,12 @@ class Module(ModuleManager.BaseModule):
if event["server"].irc_lower(target_nick) in nicks:
event["server"].send_nick(target_nick)
- @utils.hook("timer.ison-check")
- def ison_check(self, event):
- target_nick = event["server"].connection_params.nickname
- if not event["server"].irc_equals(
- event["server"].nickname, target_nick):
- event["server"].send_raw("ISON %s" % target_nick)
- event["timer"].redo()
+ def _ison_check(self, timer):
+ server = timer.kwargs["server"]
+ target_nick = server.connection_params.nickname
+ if not server.irc_equals(server.nickname, target_nick):
+ server.send_raw("ISON %s" % target_nick)
+ timer.redo()
@utils.hook("received.303")
def ison_response(self, event):
diff --git a/modules/rss.py b/modules/rss.py
index 235d8bb3..e8e237da 100644
--- a/modules/rss.py
+++ b/modules/rss.py
@@ -14,8 +14,8 @@ RSS_INTERVAL = 60 # 1 minute
class Module(ModuleManager.BaseModule):
_name = "RSS"
def on_load(self):
- self.timers.add("rss", self.bot.get_setting("rss-interval",
- RSS_INTERVAL))
+ self.timers.add("rss-feeds", self._timer,
+ self.bot.get_setting("rss-interval", RSS_INTERVAL))
def _format_entry(self, server, feed_title, entry, shorten):
title = entry["title"]
@@ -32,13 +32,11 @@ class Module(ModuleManager.BaseModule):
return "%s%s%s%s" % (feed_title_str, title, author, link)
-
- @utils.hook("timer.rss")
- def timer(self, event):
+ def _timer(self, timer):
start_time = time.monotonic()
self.log.trace("Polling RSS feeds")
- event["timer"].redo()
+ timer.redo()
hook_settings = self.bot.database.channel_settings.find_by_setting(
"rss-hooks")
hooks = {}