2015-08-30 23:22:48 -07:00
|
|
|
#!/usr/bin/env python
|
|
|
|
"""
|
|
|
|
.. module::Triggered
|
|
|
|
:synopsis: Scream when tirggered
|
|
|
|
.. moduleauthor::Dave Pedu <git@davepedu.com>
|
|
|
|
"""
|
|
|
|
|
|
|
|
from threading import Thread
|
2017-01-01 14:59:01 -08:00
|
|
|
from time import sleep, time
|
2017-11-27 18:58:20 -08:00
|
|
|
from pyircbot.modulebase import ModuleBase, hook
|
2017-01-01 14:59:01 -08:00
|
|
|
from random import randrange, choice
|
|
|
|
|
2015-08-30 23:22:48 -07:00
|
|
|
|
|
|
|
class Triggered(ModuleBase):
|
|
|
|
def __init__(self, bot, moduleName):
|
|
|
|
ModuleBase.__init__(self, bot, moduleName)
|
|
|
|
self.quietuntil = time()
|
|
|
|
|
2017-11-27 18:58:20 -08:00
|
|
|
@hook("PRIVMSG")
|
|
|
|
def check(self, msg, cmd):
|
2015-08-30 23:22:48 -07:00
|
|
|
if time() < self.quietuntil:
|
|
|
|
return
|
2017-11-27 18:58:20 -08:00
|
|
|
if not msg.args[0].lower() in self.config["channels"]:
|
2015-08-30 23:22:48 -07:00
|
|
|
return
|
2017-01-01 14:59:01 -08:00
|
|
|
|
2017-11-27 18:58:20 -08:00
|
|
|
message = msg.trailing.lower()
|
2015-08-30 23:22:48 -07:00
|
|
|
triggered = False
|
|
|
|
for word in self.config["words"]:
|
|
|
|
if word.lower() in message:
|
|
|
|
triggered = True
|
|
|
|
break
|
2017-01-01 14:59:01 -08:00
|
|
|
|
2015-08-30 23:22:48 -07:00
|
|
|
if not triggered:
|
|
|
|
return
|
2017-01-01 14:59:01 -08:00
|
|
|
|
2017-11-27 18:58:20 -08:00
|
|
|
msg = Thread(target=self.scream, args=(msg.args[0],))
|
2015-08-30 23:22:48 -07:00
|
|
|
msg.daemon = True
|
|
|
|
msg.start()
|
2017-01-01 14:59:01 -08:00
|
|
|
|
2015-08-30 23:22:48 -07:00
|
|
|
self.quietuntil = time() + self.config["quiet"]
|
|
|
|
|
|
|
|
def scream(self, channel):
|
|
|
|
delay = randrange(self.config["mindelay"], self.config["maxdelay"])
|
2016-11-06 15:00:15 -08:00
|
|
|
self.log.info("Sleeping for %s seconds" % delay)
|
2015-08-30 23:22:48 -07:00
|
|
|
sleep(delay)
|
|
|
|
self.bot.act_PRIVMSG(channel, choice(self.config["responses"]))
|