module IrcBot.RandomFileFinder where import System.Directory import System.Random import Data.List import Control.Monad.IO.Class getRandomFile :: String -> IO String getRandomFile directoryName = do let fullDirectoryName = "./.warehouse/" ++ directoryName acceptedDirectoryNames <- (listDirectory "./.warehouse") >>= \x -> return x print acceptedDirectoryNames let directoryExist = elem directoryName acceptedDirectoryNames if directoryExist then do directoryItems <- getDirectoryContents fullDirectoryName let directoryItemCount = (length directoryItems) print "directory item count is: " if directoryItemCount > 2 then do -- . and .. basically makes 2 result <- randomRIO(2,(directoryItemCount-1)) :: IO Int -- 2 represents an index which is exludes 0,1 elements from file list (. and ..) let fileName = directoryItems !! result return $ ".warehouse/" ++ directoryName ++ "/" ++ fileName else return $ "" else return $ ""