support enabling kick-rejoin per channel
This commit is contained in:
parent
baa13d9e7f
commit
c083d4845a
1 changed files with 18 additions and 6 deletions
|
@ -4,15 +4,27 @@ from src import ModuleManager, utils
|
|||
|
||||
DELAY = 5
|
||||
|
||||
@utils.export("serverset", utils.BoolSetting("kick-rejoin",
|
||||
"Whether or not I should rejoin channels I get kicked from"))
|
||||
@utils.export("serverset", utils.IntSetting("kick-rejoin-delay",
|
||||
"Amount of seconds to wait before rejoining a channel"))
|
||||
rejoin_setting = utils.BoolSetting("kick-rejoin",
|
||||
"Whether or not I should rejoin channels I get kicked from")
|
||||
delay_setting = utils.IntSetting("kick-rejoin-delay",
|
||||
"Amount of seconds to wait before rejoining a channel")
|
||||
|
||||
@utils.export("serverset", rejoin_setting)
|
||||
@utils.export("serverset", delay_setting)
|
||||
@utils.export("channelset", rejoin_setting)
|
||||
@utils.export("channelset", delay_setting)
|
||||
class Module(ModuleManager.BaseModule):
|
||||
def _should_rejoin(self, server, channel):
|
||||
return channel.get_setting("kick-rejoin",
|
||||
server.get_setting("kick-rejoin", False))
|
||||
def _get_delay(self, server, channel):
|
||||
return channel.get_setting("kick-rejoin-delay",
|
||||
server.get_setting("kick-rejoin-delay", DELAY))
|
||||
|
||||
@utils.hook("self.kick")
|
||||
def on_kick(self, event):
|
||||
if event["server"].get_setting("kick-rejoin", False):
|
||||
delay = event["server"].get_setting("kick-rejoin-delay", DELAY)
|
||||
if self._should_rejoin(event["server"], event["channel"]):
|
||||
delay = self._get_delay(event["server"], event["channel"])
|
||||
self.timers.add("kick-rejoin", delay, server=event["server"],
|
||||
channel_name=event["channel"].name)
|
||||
|
||||
|
|
Loading…
Reference in a new issue