modinfo = {
'author': 'Erebus Team',
'license': 'public domain',
- 'compatible': [1,2],
+ 'compatible': [2],
'depends': ['userinfo'],
'softdeps': ['help'],
}
else:
self.pointvote = None
- def __del__(self):
- self.closeshop()
+# def __del__(self):
+# self.closeshop()
def closeshop(self):
try:
self.steptimer.cancel()
if 'topicformat' in self.db and self.db['topicformat'] is not None:
self.getbot().conn.send("TOPIC %s" % (self.db['chan']))
- if isinstance(self.steptimer, threading._Timer):
+ if isinstance(self.steptimer, MyTimer):
self.steptimer.cancel()
- if isinstance(self.nextquestiontimer, threading._Timer):
+ if isinstance(self.nextquestiontimer, MyTimer):
self.nextquestiontimer.cancel()
self.nextquestiontimer = None
nextqid = random.randrange(0, len(self.questions))
nextq = self.questions[nextqid]
- if nextq[0][0] == "!":
+ if nextq[0].startswith("!"):
nextqid = None
nextq = specialQuestion(nextq)
bot.msg(chan, "\00312%s\003 got an extra point for getting it before the hints! New score: %d." % (user, state.addpoint(user)))
state.nextquestion()
-@lib.hook(glevel=1, needchan=False)
+@lib.hook(glevel=1, needchan=False, wantchan=True)
@lib.help(None, "saves the trivia database")
def save(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: replyto = chan
else: replyto = user
if state.savedb():
else:
bot.msg(replyto, "Save failed!")
-@lib.hook(needchan=False)
+@lib.hook(needchan=False, wantchan=True)
@lib.help("[<user>]", "shows how many points you or someone has")
def points(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: eplyto = chan
else: replyto = user
if len(args) != 0: who = args[0]
def skip(bot, user, chan, realtarget, *args):
state.nextquestion(qskipped=True, skipwait=True)
-@lib.hook(needchan=False)
+@lib.hook(needchan=False, wantchan=True)
@lib.help(None, "starts the trivia game")
def start(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: replyto = chan
else: replyto = user
if chan is not None and chan.name != state.db['chan']:
except:
bot.msg(user, "Failed!")
-@lib.hook(needchan=False)
+@lib.hook(needchan=False, wantchan=True)
@lib.help("[<user>]", "shows you or someone else's rank")
def rank(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: replyto = chan
else: replyto = user
if len(args) != 0: who = args[0]
@lib.help("<full question>", "finds a qid given a complete question")
def findq(bot, user, chan, realtarget, *args):
args = list(args)
- if args[0][0] == "@":
+ if args[0].startswith("@"):
cat = args.pop(0)[1:].lower()
questions = state.db['questions'][cat]
else:
@lib.help("[@<category>] <regex>", "finds a qid given a regex or partial question")
def findqre(bot, user, chan, realtarget, *args):
args = list(args)
- if args[0][0] == "@":
+ if args[0].startswith("@"):
cat = args.pop(0)[1:].lower()
questions = state.db['questions'][cat]
else:
@lib.help("[@<category>] <qid>", "displays the q*a for a qid", "category defaults to current")
def showq(bot, user, chan, realtarget, *args):
args = list(args)
- if args[0][0] == "@":
+ if args[0].startswith("@"):
cat = args.pop(0)[1:].lower()
questions = state.db['questions'][cat]
else:
@lib.help("[@<category>] <qid>", "removes a question from the database")
def delq(bot, user, chan, realtarget, *args):
args = list(args)
- if args[0][0] == "@":
+ if args[0].startswith("@"):
cat = args.pop(0)[1:].lower()
questions = state.db['questions'][cat]
else:
@lib.help("[@<category>] <q>*<a>", "adds a question")
def addq(bot, user, chan, realtarget, *args):
args = list(args)
- if args[0][0] == "@":
+ if args[0].startswith("@"):
cat = args.pop(0)[1:].lower()
questions = state.db['questions'][cat]
else:
questions.append([question, answer])
bot.msg(user, "Done. Question is #%s" % (len(questions)-1))
+@lib.hook(needchan=False)
+@lib.help(None, "show current category")
+def showcat(bot, user, chan, realtarget, *args):
+ bot.msg(user, "Current category: %s" % (state.db['category']))
+
@lib.hook(glevel=1, needchan=False)
@lib.help("<category>", "change category")
def setcat(bot, user, chan, realtarget, *args):
bot.msg(user, "That category doesn't exist.")
@lib.hook(needchan=False)
-@lib.help(None, "list categories")
+@lib.help(None, "list categories", "the current category will be marked with a *")
def listcats(bot, user, chan, realtarget, *args):
- cats = ["%s (%d)" % (c, len(state.db['questions'][c])) for c in state.db['questions'].keys()]
+ cats = ["%s%s (%d)" % ("*" if c == state.db['category'] else "", c, len(state.db['questions'][c])) for c in state.db['questions'].keys()]
bot.msg(user, "Categories: %s" % (', '.join(cats)))
@lib.hook(glevel=lib.STAFF, needchan=False)
'lastwinner': state.db['lastwinner'],
'lastwon': time.strftime("%b %d", time.gmtime(state.db['lastwon'])),
'target': state.db['target'],
+ 'category': state.db['category'],
}
if gottopic != formatted:
state.getbot().conn.send("TOPIC %s :%s" % (state.db['chan'], formatted))