X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/662003f2c6a877b3628d3e95f1d9f385cbb27107..65947812762a66f73d7f145ef44a8b052e5f6baf:/modules/trivia.py diff --git a/modules/trivia.py b/modules/trivia.py index af0ff7f..b716a59 100644 --- a/modules/trivia.py +++ b/modules/trivia.py @@ -729,7 +729,7 @@ def findq(bot, user, chan, realtarget, *args): questions = state.questions pattern = re.escape(' '.join(args)) - bot.msg(user, _findq(questions, pattern)) + return _findq(questions, pattern) @lib.hook(glevel=1, needchan=False) @lib.help("[@] ", "finds a question (qid) given a regex") @@ -742,17 +742,31 @@ def findqre(bot, user, chan, realtarget, *args): else: questions = state.questions pattern = ' '.join(args) - bot.msg(user, _findq(questions, pattern)) + return _findq(questions, pattern) -def _findq(questions, pattern): +@lib.hook(glevel=1, needchan=False) +@lib.help("[@] ", "finds a question (qid) given a (partial) question or answer") +@lib.argsGE(1) +def findqa(bot, user, chan, realtarget, *args): + args = list(args) + if args[0].startswith("@"): + cat = args.pop(0)[1:].lower() + questions = state.db['questions'][cat] + else: + questions = state.questions + pattern = ' '.join(args) + return _findq(questions, pattern, True) + +def _findq(questions, pattern, check_answers=False): searcher = re.compile(pattern, re.IGNORECASE) - matches = [str(i) for i in range(len(questions)) if searcher.search(questions[i][0]) is not None] + matches = [i for i in range(len(questions)) if searcher.search(questions[i][0]) is not None or (check_answers and searcher.search(questions[i][1]) is not None)] if len(matches) > 25: return "Too many matches! (>25)" elif len(matches) > 1: - return "Multiple matches: %s" % (', '.join(matches)) + return "Multiple matches: %s" % (', '.join(str(x) for x in matches)) elif len(matches) == 1: - return "One match: %s" % (matches[0]) + i = matches[0] + return "One match: %s %s*%s" % (i, questions[i][0], questions[i][1]) else: return "No match."