示例#1
0
    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")
示例#2
0
    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])
示例#3
0
 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
示例#4
0
    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")
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
文件: in.py 项目: jesopo/bitbot
    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")