class Trivia: """ Trivia class, has a timer in a separate thread that initiates a new round every 'trivia-interval' seconds. """ def __init__(self): self.questions = self.load_trivia() self.current = "" self.trivia_time = LoopTimeThread(config.get('trivia-interval'), self) self.trivia_time.start() self.f = f.WHITE + "[" + f.PURPLE + "Trivia" + f.WHITE + "] " self.disabled = False log("Trivia initialized.", m_type="STARTUP", colour=Fore.CYAN) def load_trivia(self): with open('trivia.yml', 'r') as triv: c = yaml.load(triv) return c def get_question(self): return random.choice(self.questions.keys()) def get_answer(self): for k, v in self.questions.iteritems(): if k == self.current: return str(v).lower() def guess(self, guess, nick): if self.check(guess): c.say(f.GREEN + self.f + nick + f.WHITE + " got the answer! " + f.ORANGE + "+" + str(config.get('trivia-points')) + " points!") self.current = "" score.add(nick, config.get('trivia-points')) else: c.msg(self.f + "Incorrect!", nick) return True def check(self, guess): g = str(" ".join(guess)) for k, v in self.questions.iteritems(): if k == self.current: if g.lower() == str(v).lower(): return True return False def disable(self): self.disabled = True def getinfo(self): n = 0 for k in self.questions: n += 1 int = config.get('trivia-interval') return (self.f + "Time interval: " + str(int) + " seconds (" + str(int/60) + " minutes), " + str(n) + " questions listed.") def _getdisabled(self): return self.disabled def _runnable(self): if not self.current == "": c.say(self.f + "Nobody got it! New round.") self.current = self.get_question() self.answer = self.get_answer() c.say(self.f + self.current + " (" + str(len(self.answer.split(" "))) + ")") c.say(self.f + "Use ?a [answer] to answer")
class Trivia: """ Trivia class, has a timer in a separate thread that initiates a new round every 'trivia-interval' seconds. """ def __init__(self): self.questions = self.load_trivia() self.current = "" self.trivia_time = LoopTimeThread(config.get('trivia-interval'), self) self.trivia_time.start() self.f = f.WHITE + "[" + f.PURPLE + "Trivia" + f.WHITE + "] " self.disabled = False log("Trivia initialized.", m_type="STARTUP", colour=Fore.CYAN) def load_trivia(self): with open('trivia.yml', 'r') as triv: c = yaml.load(triv) return c def get_question(self): return random.choice(self.questions.keys()) def get_answer(self): for k, v in self.questions.iteritems(): if k == self.current: return str(v).lower() def guess(self, guess, nick): if self.check(guess): c.say(f.GREEN + self.f + nick + f.WHITE + " got the answer! " + f.ORANGE + "+" + str(config.get('trivia-points')) + " points!") self.current = "" score.add(nick, config.get('trivia-points')) else: c.msg(self.f + "Incorrect!", nick) return True def check(self, guess): g = str(" ".join(guess)) for k, v in self.questions.iteritems(): if k == self.current: if g.lower() == str(v).lower(): return True return False def disable(self): self.disabled = True def getinfo(self): n = 0 for k in self.questions: n += 1 int = config.get('trivia-interval') return (self.f + "Time interval: " + str(int) + " seconds (" + str(int / 60) + " minutes), " + str(n) + " questions listed.") def _getdisabled(self): return self.disabled def _runnable(self): if not self.current == "": c.say(self.f + "Nobody got it! New round.") self.current = self.get_question() self.answer = self.get_answer() c.say(self.f + self.current + " (" + str(len(self.answer.split(" "))) + ")") c.say(self.f + "Use ?a [answer] to answer")
class Handler: def __init__(self): self.FLOOD = {} self.last_msg = "" self.thread = LoopTimeThread(config.get("interval"), self) self.thread.start() self.disabled = False def _runnable(self): self.decrement() def _getdisabled(self): return self.disabled def disable(self): self.disabled = True # Add one to nick's flood amount def increment(self, nick, msg): if "esper.net" in nick: return False if not self.FLOOD.has_key(nick): self.FLOOD[nick] = 1 elif msg == self.last_msg: self.FLOOD[nick] += 2 else: self.FLOOD[nick] += 1 self.handle(nick, self.FLOOD[nick]) return True def clear_empties(self): for nick, val in self.FLOOD: if val == 0: del self.FLOOD[nick] def clear(self): self.FLOOD = {} def decrement(self): try: keys = self.FLOOD.keys() for nick in keys: self.FLOOD[nick] -= 1 if self.FLOOD[nick] == 0: del self.FLOOD[nick] say = False for nick, val in self.FLOOD.iteritems(): log(nick + ": " + str(val), m_type="SPAMHANDLR") # ACTION_LOG.info(Style.BRIGHT + Fore.BLUE + 'SPAMHDLR ' + Fore.RESET + nick + ': ' + str(val)) say = True if say: log("Decremented FLOOD dict", m_type="SPAMHANDLR") # ACTION_LOG.info(Style.BRIGHT + Fore.BLUE + 'SPAMHDLR ' + Fore.RESET + ' Decremented FLOOD dict') except: traceback.print_exc() def handle(self, nick, val): if val > config.get("kick"): connect.kick(nick, "Spamming") connect.say(f.YELLOW + "User " + f.RED + nick + f.YELLOW + " was kicked for spamming.") log("User: "******" was kicked for spamming", m_type="SPAMHANDLR", reset=False) # ACTION_LOG.info(Fore.RED + 'KCK' + Fore.RESET + ' User: '******' was kicked for spamming') del self.FLOOD[nick] elif val > config.get("warn"): connect.msg(f.YELLOW + "Please slow down with your messages, or else you'll be kicked.", nick)
class Handler: def __init__(self): self.FLOOD = {} self.last_msg = "" self.thread = LoopTimeThread(config.get('interval'), self) self.thread.start() self.disabled = False def _runnable(self): self.decrement() def _getdisabled(self): return self.disabled def disable(self): self.disabled = True # Add one to nick's flood amount def increment(self, nick, msg): if 'esper.net' in nick: return False if not self.FLOOD.has_key(nick): self.FLOOD[nick] = 1 elif msg == self.last_msg: self.FLOOD[nick] += 2 else: self.FLOOD[nick] += 1 self.handle(nick, self.FLOOD[nick]) return True def clear_empties(self): for nick, val in self.FLOOD: if val == 0: del self.FLOOD[nick] def clear(self): self.FLOOD = {} def decrement(self): try: keys = self.FLOOD.keys() for nick in keys: self.FLOOD[nick] -= 1 if self.FLOOD[nick] == 0: del self.FLOOD[nick] say = False for nick, val in self.FLOOD.iteritems(): log(nick + ': ' + str(val), m_type='SPAMHANDLR') #ACTION_LOG.info(Style.BRIGHT + Fore.BLUE + 'SPAMHDLR ' + Fore.RESET + nick + ': ' + str(val)) say = True if say: log('Decremented FLOOD dict', m_type='SPAMHANDLR') #ACTION_LOG.info(Style.BRIGHT + Fore.BLUE + 'SPAMHDLR ' + Fore.RESET + ' Decremented FLOOD dict') except: traceback.print_exc() def handle(self, nick, val): if val > config.get('kick'): connect.kick(nick, "Spamming") connect.say(f.YELLOW + 'User ' + f.RED + nick + f.YELLOW + ' was kicked for spamming.') log('User: '******' was kicked for spamming', m_type='SPAMHANDLR', reset=False) #ACTION_LOG.info(Fore.RED + 'KCK' + Fore.RESET + ' User: '******' was kicked for spamming') del self.FLOOD[nick] elif val > config.get('warn'): connect.msg( f.YELLOW + 'Please slow down with your messages, or else you\'ll be kicked.', nick)