diff options
| author | 2019-10-08 13:49:43 +0100 | |
|---|---|---|
| committer | 2019-10-08 13:49:55 +0100 | |
| commit | 7a5edccb982a9aa3d1d1557d5928d03046bda29e (patch) | |
| tree | cfa252ad88198d0ff2f8fd593916818e373789b9 /modules | |
| parent | refactor 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.py | 14 | ||||
| -rw-r--r-- | modules/database_backup.py | 7 | ||||
| -rw-r--r-- | modules/kick-rejoin.py | 10 | ||||
| -rw-r--r-- | modules/nick_regain.py | 16 | ||||
| -rw-r--r-- | modules/rss.py | 10 |
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 = {} |
