One problem with some voting that is seeing what others are voting for influences one's own vote. Here's a concept that could work to remove this problem.
A vote would be started in the same way as other !vote commands, but instead of reaction a voter would type their selection, as in 1, 2, 3, etc. The bot would delete what the user has typed, and the vote would be recorded. If a user types a different value, the vote would be recast.
If you could get all that to actually work, the only drawback I'd see for this kind of vote is that only one could be held in a channel at one time.