#--depends-on commands
#--depends-on permissions

import time
from src import EventManager, ModuleManager, utils

SILENCE_TIME = 60*5 # 5 minutes

class Module(ModuleManager.BaseModule):
    def on_load(self):
        self.exports.add("is-silenced", self._is_silenced)

    def _is_silenced(self, target):
        silence_until = target.get_setting("silence-until", None)
        if silence_until and time.time()<silence_until:
            return True
        return False

    @utils.hook("received.command.silence", channel_only=True)
    def silence(self, event):
        """
        :help: Silence me for 5 minutes
        :require_mode: high
        :permission: silence
        """
        silence_until = time.time()+SILENCE_TIME
        event["target"].set_setting("silence-until", silence_until)
        event["stdout"].write("Ok, I'll be back")

    @utils.hook("preprocess.command", priority=EventManager.PRIORITY_HIGH)
    def preprocess_command(self, event):
        if event["is_channel"]:
            silence_until = event["target"].get_setting("silence-until", None)
            if silence_until:
                if self._is_silenced(event["target"]):
                    return utils.consts.PERMISSION_HARD_FAIL
                else:
                    event["target"].del_setting("silence-until")