I think to do this, you'd better hook "filter:post.upvote", check user's reputation, then return error info if not satisfied.
This hook source code is at file socket.io/posts/helpers.js.
See NodeBB how to do this for not-enough-reputation-to-downvote in src/posts/votes.js:
if (command === 'downvote' && parseInt(results.reputation) < parseInt(meta.config['privileges:downvote'], 10)) {
return callback(new Error('[[error:not-enough-reputation-to-downvote]]'));
}