async def run_time(self, context): """ Get how long is left in the sprint :param context: :return: """ user = User(context.message.author.id, context.guild.id, context) sprint = Sprint(user.get_guild()) # If there is no active sprint, then just display an error if not sprint.exists(): return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:err:noexists', user.get_guild())) now = int(time.time()) # If the sprint has not yet started, display the time until it starts if not sprint.has_started(): left = lib.secs_to_mins(sprint.get_start() - now) return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:startsin', user.get_guild()).format(left['m'], left['s'])) # If it's currently still running, display how long is left elif not sprint.is_finished(): left = lib.secs_to_mins(sprint.get_end() - now) return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:timeleft', user.get_guild()).format(left['m'], left['s'])) # If it's finished but not yet marked as completed, we must be waiting for word counts elif sprint.is_finished(): return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:waitingforwc', user.get_guild()))
async def run_status(self, context): """ Get the user's status in this sprint :param context: :return: """ user = User(context.message.author.id, context.guild.id, context) sprint = Sprint(user.get_guild()) # If there is no active sprint, then just display an error if not sprint.exists(): return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:err:noexists', user.get_guild())) # If the user is not sprinting, then again, just display that error if not sprint.is_user_sprinting(user.get_id()): return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:err:notjoined', user.get_guild())) # If the sprint hasn't started yet, display error if not sprint.has_started(): return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:err:notstarted', user.get_guild())) # If they are sprinting, then display their current status. user_sprint = sprint.get_user_sprint(user.get_id()) # Build the variables to be passed into the status string now = int(time.time()) current = user_sprint['current_wc'] written = current - user_sprint['starting_wc'] seconds = now - user_sprint['timejoined'] elapsed = round(seconds / 60, 1) wpm = Sprint.calculate_wpm(written, seconds) left = round((sprint.get_end() - now) / 60, 1) return await context.send(user.get_mention() + ', ' + lib.get_string('sprint:status', user.get_guild()).format(current, written, elapsed, wpm, left))