diff --git a/redbot/cogs/trivia/session.py b/redbot/cogs/trivia/session.py index d7ca7aac7..9ec42c7f8 100644 --- a/redbot/cogs/trivia/session.py +++ b/redbot/cogs/trivia/session.py @@ -98,8 +98,26 @@ class TriviaSession: session = cls(ctx, question_list, settings) loop = ctx.bot.loop session._task = loop.create_task(session.run()) + session._task.add_done_callback(session._error_handler) return session + def _error_handler(self, fut): + """Catches errors in the session task.""" + try: + fut.result() + except asyncio.CancelledError: + pass + except Exception as exc: + LOG.error("A trivia session has encountered an error.\n", exc_info=exc) + asyncio.create_task( + self.ctx.send( + _( + "An unexpected error occurred in the trivia session.\nCheck your console or logs for details." + ) + ) + ) + self.stop() + async def run(self): """Run the trivia session.