I tried my hand at this bot. I attempted to create an optimal routing system by weighting the towers by how many books were in each, then creating full routes to and from the customer. This resulted in more than double the xp of shortest routing to the book and picking up books that were "close" on the path. However, ensuring that the solved state of the library and that routing logic remained in sync was a major pain in the ass. After solving that, issues still popped up depending on the exact layout of the library and how many books were held by the person as it tried to solve or recover from a misclick which could reset the solved state with the RL plugin logic.
If I were to just "try to get something to market", the bot would be far more reliable if I just implemented a direct path to the book and picked it up. If that failed, I'd have it route to a specific library section (say Southwest floor 1), and resolve. This should be fool proof but would be much lower xp and look a little "bot-like" for my tastes. Who cares? It's free xp.
As for usage, 3 people on Discord were very active in helping me with logs and I had 3 more reach out quickly after I hid mine. On the first day I had 10 hours of usage. I didn't check towards the end but it had to be 30+ hours. I'd guess this would probably be around 80-100 hours a day optimistically after it got some traction.
Just a little info for another author if they're interested in tackling this.
Xp without breaks (80 ish books/hr without graceful, 90-100 with):
Xp rates with breaks:
A lot more breaks (like 10-15 minutes an hour I think)