You could deadass just have a time gating captcha that pops up when you’re in hub city / not in active combat ( this stops bots that are running through story, since you’d have to be out of combat for most of the npc interactions) that will pop up after a certain amount of time pops, 3-4 hours on the stricter side 6, or 8 hours on the lighter side. You fail the captcha in 3 tries and you get time gated out of the account and cannot log in ( work it like phone lockouts, 10 minutes for first failure just to enforce taking it seriously ( or yanno to weed out the dumb people), you fail the 5th time in a row it’s like a week ban from logging into the account etc). It works 2 prong to get bots out of the servers.
1 one way it works is to actually timegate bots out of the game if they cannot pass captcha
2 if a workaround is found which would prolly have to do with logging out and logging back in it frees up space in the server to get players in queue into the game and makes bots wait in queue staggering the timegated captcha even more.
Alternatively you could set up a captcha for interfacing with personal trading or marketplace functions as well! Say to greenlight all trading for the account for the day you’d have to pass a captcha that would give permissions to trade for the day. Consecutive fuck ups means that it really must be a bot say after 3-5 days of failing in a row, it would lengthen trading bans. This cuts the amount of gold that is gained by bots selling mats in t1 and t2. It also stops attempts at personal trading cutting gold profits when it gets traded to the RMT’ing player.
That would be very annoying for players and also wouldn’t prevent bots. There are catch-up solver services that can be used by bots.