-- | Contains actions for voting on posts and comments. There are functions -- for upvoting ('upvotePost', 'upvoteComment'), downvoting ('downvotePost', -- 'downVoteComment') as well as removing votes that have already been cast -- ('unvotePost', 'unvoteComment'). -- -- Please note that automated voting (i.e. by a bot, as opposed to being -- specifically ordered to by a person) is strictly against the Reddit rules, -- and is a very effective way of getting your bot shadowbanned. module Reddit.Actions.Voting ( upvotePost , downvotePost , unvotePost , upvoteComment , downvoteComment , unvoteComment ) where import Reddit.Routes.Vote (VoteDirection(..)) import Reddit.Types import Reddit.Types.Empty import Reddit.Types.Reddit import qualified Reddit.Routes as Route vote :: (Monad m, Thing a) => VoteDirection -> a -> RedditT m () vote dir = nothing . runRoute . Route.vote dir -- | Upvote a post. upvotePost :: Monad m => PostID -> RedditT m () upvotePost = vote UpVote -- | Downvote a post. downvotePost :: Monad m => PostID -> RedditT m () downvotePost = vote DownVote -- | Remove a vote from a post. unvotePost :: Monad m => PostID -> RedditT m () unvotePost = vote RemoveVote -- | Upvote a comment. upvoteComment :: Monad m => CommentID -> RedditT m () upvoteComment = vote UpVote -- | Downvote a comment. downvoteComment :: Monad m => CommentID -> RedditT m () downvoteComment = vote RemoveVote -- | Remove a previously-cast vote from a comment. unvoteComment :: Monad m => CommentID -> RedditT m () unvoteComment = vote DownVote