25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
1.1KB

  1. module IrcBot.RandomFileFinder where
  2. import System.Directory
  3. import System.Random
  4. import Data.List
  5. import Control.Monad.IO.Class
  6. getRandomFile :: String -> IO String
  7. getRandomFile directoryName =
  8. do
  9. let fullDirectoryName = "./.warehouse/" ++ directoryName
  10. acceptedDirectoryNames <- (listDirectory "./.warehouse") >>= \x -> return x
  11. print acceptedDirectoryNames
  12. let directoryExist = elem directoryName acceptedDirectoryNames
  13. if directoryExist then do
  14. directoryItems <- getDirectoryContents fullDirectoryName
  15. let directoryItemCount = (length directoryItems)
  16. print "directory item count is: "
  17. if directoryItemCount > 2 then do -- . and .. basically makes 2
  18. result <- randomRIO(2,(directoryItemCount-1)) :: IO Int -- 2 represents an index which is exludes 0,1 elements from file list (. and ..)
  19. let fileName = directoryItems !! result
  20. return $ ".warehouse/" ++ directoryName ++ "/" ++ fileName
  21. else return $ ""
  22. else return $ ""