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