Ejemplo n.º 1
0
    async def parse_submission(self, daily_number: int, user_id: int,
                               args: list) -> str:
        """Attempt to parse args as a valid daily submission, and submits for the daily if sucessful.

        Returns
        -------
            A string whose content confirms parse, or the empty string if parse fails.
        """
        lv = level.LEVEL_NOS
        time = -1
        ret_str = ''
        if len(args) > 0:
            if args[0] == 'death':
                if len(args) == 2:
                    lv = level.from_str(args[1])
                    if not lv == level.LEVEL_NOS:
                        ret_str = 'died on {}'.format(args[1])
                else:
                    lv = level.LEVEL_UNKNOWN_DEATH
                    ret_str = 'died'
            else:
                time = racetime.from_str(args[0])
                if not time == -1:
                    lv = level.LEVEL_FINISHED
                    ret_str = 'finished in {}'.format(racetime.to_str(time))

        if not lv == level.LEVEL_NOS:  # parse succeeded
            await self.submit_to_daily(daily_number, user_id, lv, time)
            return ret_str
        else:
            return ''
Ejemplo n.º 2
0
    async def _do_execute(self, cmd):
        if self.bot_channel.last_begun_race is None:
            return

        if len(cmd.args) == 1:
            igt = racetime.from_str(cmd.args[0])
            await self.bot_channel.last_begun_race.set_igt_for_member(cmd.author, igt)
Ejemplo n.º 3
0
def convert_to_score(category_keyword: str, score: str) -> Optional[int]:
    time_categories = ['story-any', 'story-nobs', 'permadeath', 'doubletempo']
    if category_keyword in time_categories:
        ret = racetime.from_str(score)
        if ret == -1:
            return None
        else:
            return ret
    elif category_keyword == 'fixedbeat':
        try:
            return int(score)
        except ValueError:
            return None
    else:
        return None