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}\"' ) if not twitchUser.isPkmnEnabled(): return False splits = utils.getCleanedSplits(redemptionMessage) if not utils.hasItems(splits): await twitchUtils.safeSend( twitchChannel, f'⚠ Sorry @{userNameThatRedeemed}, you must specify the exact user name of the person you want to fight' ) return False opponentUserName = utils.removePreceedingAt(splits[0]) generalSettings = await self.__generalSettingsRepository.getAllAsync() actionCompleted = False if generalSettings.isFuntoonApiEnabled(): if await self.__funtoonRepository.pkmnBattle( userThatRedeemed=userNameThatRedeemed, userToBattle=opponentUserName, twitchChannel=twitchUser.getHandle()): actionCompleted = True if not actionCompleted and generalSettings.isFuntoonTwitchChatFallbackEnabled( ): await twitchUtils.safeSend( twitchChannel, f'!battle {userNameThatRedeemed} {opponentUserName}') actionCompleted = True self.__timber.log( 'PkmnBattleRedemption', f'Redeemed pkmn battle for {userNameThatRedeemed}:{userIdThatRedeemed} in {twitchUser.getHandle()}' ) return actionCompleted
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}\"' ) if not twitchUser.isPkmnEnabled(): return False generalSettings = await self.__generalSettingsRepository.getAllAsync() actionCompleted = False if generalSettings.isFuntoonApiEnabled(): if await self.__funtoonRepository.pkmnGiveShiny( userThatRedeemed=userNameThatRedeemed, twitchChannel=twitchUser.getHandle()): actionCompleted = True if not actionCompleted and generalSettings.isFuntoonTwitchChatFallbackEnabled( ): await twitchUtils.safeSend(twitchChannel, f'!freeshiny {userNameThatRedeemed}') actionCompleted = True self.__timber.log( 'PkmnShinyRedemption', f'Redeemed pkmn shiny for {userNameThatRedeemed}:{userIdThatRedeemed} in {twitchUser.getHandle()}' ) return actionCompleted
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}\"' ) if not twitchUser.isPkmnEnabled( ) or not twitchUser.hasPkmnCatchBoosterPacks(): return False pkmnCatchBoosterPack: PkmnCatchBoosterPack = None for pkbp in twitchUser.getPkmnCatchBoosterPacks(): if rewardId == pkbp.getRewardId(): pkmnCatchBoosterPack = pkbp break if pkmnCatchBoosterPack is None: return False funtoonPkmnCatchType: FuntoonPkmnCatchType = None if pkmnCatchBoosterPack.hasCatchType(): funtoonPkmnCatchType = self.__toFuntoonPkmnCatchType( pkmnCatchBoosterPack) generalSettings = await self.__generalSettingsRepository.getAllAsync() actionCompleted = False if generalSettings.isFuntoonApiEnabled(): if await self.__funtoonRepository.pkmnCatch( userThatRedeemed=userNameThatRedeemed, twitchChannel=twitchUser.getHandle(), funtoonPkmnCatchType=funtoonPkmnCatchType): actionCompleted = True if not actionCompleted and generalSettings.isFuntoonTwitchChatFallbackEnabled( ): await twitchUtils.safeSend(twitchChannel, f'!catch {userNameThatRedeemed}') actionCompleted = True self.__timber.log( 'PkmnCatchRedemption', f'Redeemed pkmn catch for {userNameThatRedeemed}:{userIdThatRedeemed} (catch type: {pkmnCatchBoosterPack.getCatchType()}) in {twitchUser.getHandle()}' ) return actionCompleted