[V3 Trivia] Allow crediting the author of trivia lists (#1197)

* Credit author of trivia lists

* Use proper sentences

* Remove unwanted traceback print
This commit is contained in:
Tobotimus 2018-01-15 14:50:14 +11:00 committed by GitHub
parent 68800d28fc
commit fb0190f826
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 2 deletions

View File

@ -96,10 +96,13 @@ class TriviaSession():
In order for the trivia session to be stopped correctly, this should
only be called internally by `TriviaSession.start`.
"""
await self._send_startup_msg()
max_score = self.settings["max_score"]
delay = self.settings["delay"]
timeout = self.settings["timeout"]
for question, answers in self._iter_questions():
async with self.ctx.typing():
await asyncio.sleep(3)
self.count += 1
msg = "**Question number {}!**\n\n{}".format(self.count, question)
await self.ctx.send(msg)
@ -109,12 +112,30 @@ class TriviaSession():
if any(score >= max_score for score in self.scores.values()):
await self.end_game()
break
async with self.ctx.typing():
await asyncio.sleep(3)
else:
await self.ctx.send("There are no more questions!")
await self.end_game()
async def _send_startup_msg(self):
list_names = []
for idx, tup in enumerate(self.settings["lists"].items()):
name, author = tup
if author:
title = "{} (by {})".format(name, author)
else:
title = name
list_names.append(title)
num_lists = len(list_names)
if num_lists > 2:
# at least 3 lists, join all but last with comma
msg = ", ".join(list_names[:num_lists-1])
# join onto last with "and"
msg = " and ".join((msg, list_names[num_lists-1]))
else:
# either 1 or 2 lists, join together with "and"
msg = " and ".join(list_names)
await self.ctx.send("Starting Trivia: " + msg)
def _iter_questions(self):
"""Iterate over questions and answers for this session.

View File

@ -178,6 +178,7 @@ class Trivia:
"There is already an ongoing trivia session in this channel.")
return
trivia_dict = {}
authors = []
for category in reversed(categories):
# We reverse the categories so that the first list's config takes
# priority over the others.
@ -193,6 +194,7 @@ class Trivia:
" incorrectly.".format(category))
else:
trivia_dict.update(dict_)
authors.append(trivia_dict.pop("AUTHOR", None))
continue
return
if not trivia_dict:
@ -203,6 +205,7 @@ class Trivia:
config = trivia_dict.pop("CONFIG", None)
if config and settings["allow_override"]:
settings.update(config)
settings["lists"] = dict(zip(categories, reversed(authors)))
session = TriviaSession.start(ctx, trivia_dict, settings)
self.trivia_sessions.append(session)
LOG.debug("New trivia session; #%s in %d", ctx.channel, ctx.guild.id)