So, it looks like I may have spoken too early about my understanding of what was going on with the plugin. We have a number of players who don't play every day, but do vote every day. Prior to now, I had an Excel document that pulled the API data from Ark-Servers via a timed refresh, and we manually tracked handing out rewards as an input. The Excel doc summed up the votes as a total, and subtracted the reward grants from it, indicating how many rewards were still owed. Below are some vote records from the server, starting from the morning where I rebooted to install the API and vote rewards tracker.
Date - Nickname - Claimed
April 10th, 2018 11:03 PM EST - Player A - 1
April 10th, 2018 10:21 PM EST - Player B - 0
April 10th, 2018 08:51 PM EST - Player C - 1
April 10th, 2018 07:09 PM EST - Player D - 0
April 10th, 2018 07:00 PM EST - Player A - 0
April 9th, 2018 04:27 PM EST - Player H - 1
April 9th, 2018 10:52 AM EST - Player C - 0
April 9th, 2018 08:46 AM EST - Player J - 0
My concern is around the fact that the plugin only seems to acknowledge a player's most recent vote. Take a look at Player C; he voted the first morning while he was out of town, voted again when he signed on the following day, and was immediately shown how to use /votereward to claim his reward. It only gave him a single quantity of reward item, and only marked the most recent vote as claimed.
I am aware of the limitation of the Ark-Servers Claim API, which is that you can only mark votes as claimed if they occur within the last 24 hours. To that end, I was curious if the API would hand out all votes within the valid time period. Above, Player C voted early one day and late the next, so marking the old vote as claimed is impossible. As a result, I tested it by voting twice within one full 24 hour period in two different ways.
April 10th, 2018 11:03 PM EST - Player A - 1
April 10th, 2018 10:21 PM EST - Player B - 0
April 10th, 2018 08:51 PM EST - Player C - 1
April 10th, 2018 07:09 PM EST - Player D - 0
In this test, I was Player D. I voted one evening and didn't claim it. The next morning, I signed in, claimed the reward, and immediately voted again, and claimed again. Two rewards, one per claim, exactly as expected. Both votes were marked properly.
Date Nickname Claimed
April 11th, 2018 07:36 AM EST - Player D - 1
April 10th, 2018 11:03 PM EST - Player A - 1
April 10th, 2018 10:21 PM EST - Player B - 0
April 10th, 2018 08:51 PM EST - Player C - 1
April 10th, 2018 07:09 PM EST - Player D - 1
I also had Player B vote as well. However, he voted yesterday, and again this morning, and only claimed his reward after the second vote. He received one reward only, and could not redeem again to get the second one from yesterday, even though it was within 24 hours. We end with a vote record like this:
April 11th, 2018 07:55 AM EST - Player B - 1
April 11th, 2018 07:36 AM EST - Player D - 1
April 10th, 2018 11:03 PM EST - Player A - 1
April 10th, 2018 10:21 PM EST - Player B - 0
April 10th, 2018 08:51 PM EST - Player C - 1
April 10th, 2018 07:09 PM EST - Player D - 1
I take it that the API is just reaching out, finding the most recent vote for that player, and either detecting it as acknowledged, or marking it as such and granting the reward. It doesn't do any deeper dives to see if there are other votes within the valid time period, or prior votes that it may not be able to acknowledge, but also won't grant votes for. In reality, it is what it is, but it should probably be made clear in the description that it only hands out the most recent vote reward.
I was hoping that the plugin would keep in regular contact with the Ark-Server database, acknowledge each new vote as claimed, while maintaining a local repository of the recorded votes plus what has been claimed, handing out the necessary reward amount automatically. For example, if I vote every day for three days, when I finally sign on the server on the 3rd day, I get 3 rewards. Obviously this would require some sort of tracker internally to both acknowledge votes remotely, and to record whether they've been claimed by the users or not, which will need to reside on the server somewhere.