Exemplo n.º 1
0
    async def handlePointRedemption(self, twitchChannel: Channel,
                                    twitchUser: User, redemptionMessage: str,
                                    rewardId: str, userIdThatRedeemed: str,
                                    userNameThatRedeemed: str) -> bool:
        if twitchChannel is None:
            raise ValueError(
                f'twitchChannel argument is malformed: \"{twitchChannel}\"')
        elif twitchUser is None:
            raise ValueError(
                f'twitchUser argument is malformed: \"{twitchUser}\"')
        elif not utils.isValidStr(rewardId):
            raise ValueError(f'rewardId argument is malformed: \"{rewardId}\"')
        elif not utils.isValidStr(userIdThatRedeemed):
            raise ValueError(
                f'userIdThatRedeemed argument is malformed: \"{userIdThatRedeemed}\"'
            )
        elif not utils.isValidStr(userNameThatRedeemed):
            raise ValueError(
                f'userNameThatRedeemed argument is malformed: \"{userNameThatRedeemed}\"'
            )

        generalSettings = await self.__generalSettingsRepository.getAllAsync()

        if not generalSettings.isTriviaGameEnabled():
            return False
        elif not twitchUser.isTriviaGameEnabled():
            return False

        secondsToLive = generalSettings.getWaitForTriviaAnswerDelay()
        if twitchUser.hasWaitForTriviaAnswerDelay():
            secondsToLive = twitchUser.getWaitForTriviaAnswerDelay()

        points = generalSettings.getTriviaGamePoints()
        if twitchUser.hasTriviaGamePoints():
            points = twitchUser.getTriviaGamePoints()

        triviaFetchOptions = TriviaFetchOptions(
            twitchChannel=twitchUser.getHandle(),
            isJokeTriviaRepositoryEnabled=twitchUser.
            isJokeTriviaRepositoryEnabled(),
            questionAnswerTriviaConditions=QuestionAnswerTriviaConditions.
            NOT_ALLOWED)

        self.__triviaGameMachine.submitAction(
            StartNewTriviaGameAction(pointsForWinning=points,
                                     secondsToLive=secondsToLive,
                                     twitchChannel=twitchUser.getHandle(),
                                     userId=userIdThatRedeemed,
                                     userName=userNameThatRedeemed,
                                     triviaFetchOptions=triviaFetchOptions))

        self.__timber.log(
            'TriviaGameRedemption',
            f'Redeemed trivia game for {userNameThatRedeemed}:{userIdThatRedeemed} in {twitchUser.getHandle()}'
        )
        return True