bitbot-3.11-fork/modules/silence.py

39 lines
1.3 KiB
Python
Raw Normal View History

#--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")