def in_command(self, event): """ :help: Set a reminder :usage: <time> <message> """ seconds = utils.from_pretty_time(event["args_split"][0]) message = " ".join(event["args_split"][1:]) if seconds: if seconds <= SECONDS_MAX: due_time = int(time.time()) + seconds self.timers.add_persistent("in", seconds, due_time=due_time, target=event["target"].name, server_id=event["server"].id, nickname=event["user"].nickname, message=message) event["stdout"].write("Saved") else: event["stderr"].write("The given time is above the max (%s)" % (SECONDS_MAX_DESCRIPTION)) else: event["stderr"].write( "Please provided a valid time above 0 seconds")
def _mute(self, event): add = event.name == "received.command.mute" target_name = event["args_split"][0] if not event["server"].has_user(target_name): raise utils.EventError("No such user") target_user = event["server"].get_user(target_name) if not event["target"].has_user(target_user): raise utils.EventError("No such user") mode, mask = self._mute_method(event["server"], target_user) if mode == None: raise utils.EventError("This network doesn't support mutes") if add and len(event["args_split"]) > 1: duration = utils.from_pretty_time(event["args_split"][1]) if duration == None: raise utils.EventError("Invalid duration") self.timers.add_persistent("unmute", duration, server_id=event["server"].id, channel_name=event["target"].name, mode=mode, mask=mask) mode_modifier = "+" if add else "-" event["target"].send_mode("%s%s" % (mode_modifier, mode), [mask])
def _parse_time(self, args, min_args): if args[0][0] == "+": if len(args[1:]) < min_args: raise utils.EventError("Not enough arguments") time = utils.from_pretty_time(args[0][1:]) if time == None: raise utils.EventError("Invalid timeframe") return time, args[1:] return None, args
def silence(self, event): duration = SILENCE_TIME if event["args"] and event["args_split"][0].startswith("+"): duration = utils.from_pretty_time(event["args_split"][0][1:]) if duration == None: raise utils.EventError("Invalid duration provided") silence_until = time.time() + duration event["target"].set_setting("silence-until", silence_until) event["stdout"].write("Ok, I'll be back")
def _temp_ban(self, event, accept_hostmask): timeout = utils.from_pretty_time(event["args_split"][1]) if not timeout: raise InvalidTimeoutException( "Please provided a valid time above 0 seconds") if accept_hostmask: hostmask = self._ban(event["server"], event["target"], True, event["args_split"][0]) else: hostmask = self._ban_user(event["target"], True, event["server"].get_user(event["args_split"][0])) self.timers.add_persistent("unban", timeout, server_id=event["server"].id, channel_name=event["target"].name, hostmask=hostmask)
def in_command(self, event): """ :help: Set a reminder :usage: <time> <message> """ seconds = utils.from_pretty_time(event["args_split"][0]) message = " ".join(event["args_split"][1:]) if seconds: if seconds <= SECONDS_MAX: due_time = int(time.time())+seconds self.timers.add_persistent("in", seconds, due_time=due_time, target=event["target"].name, server_id=event["server"].id, nickname=event["user"].nickname, message=message) event["stdout"].write("Saved") else: event["stderr"].write( "The given time is above the max (%s)" % ( SECONDS_MAX_DESCRIPTION)) else: event["stderr"].write( "Please provided a valid time above 0 seconds")