First, As many other members also mentioned, when under the preset of [always use lowest pokeball first] . The bot actually tries to use the highest ranked balls first, i.e. always use ultraballs first. I recommend fixing this so that the bot will always use the cheapest and lowest ranked pokeballs first instead of the most valuable ultraballs.
Second, when the bot tries to capture pokemons that are about to despawn from the map, we often get error log like below:
[12:55:25] Try to catch Pokemon (0) with Ultraball...
[12:55:26] Pokemon fled.
[12:55:53] Try to catch Pokemon (0) with Ultraball...
[12:55:54] Pokemon fled.
[12:56:03] Try to catch Pokemon (0) with Ultraball...
[12:56:04] Pokemon fled.
So in this case, I think the bot actually didnt find any pokemon bacause it despawned, but may be due to the delay in refreshing the pokemon position, the bot tries to catch Pokemon with no names and 0 CP which actually triggered the incorrect logic to use ultraball (because no pokemon would have 0 CP)
Third, Id like to offer a suggestion. I like this bot as i can see it has so much potential. But in terms of the transferring mechanism in the bot, you have a simple option of retaining the 3 with the highest CP, but more advanced player might want to retain a bit more. Some advanced players also not only focus on CP but also on Individual Value, could you actually try to measure the perfection value, a % ratio of the actual IV of a pokemon to its maximum possible IV, so that players can understand how good this pokemon really is when compared to pokemons with the same level.
Second, when the bot tries to capture pokemons that are about to despawn from the map, we often get error log like below:
[12:55:25] Try to catch Pokemon (0) with Ultraball...
[12:55:26] Pokemon fled.
[12:55:53] Try to catch Pokemon (0) with Ultraball...
[12:55:54] Pokemon fled.
[12:56:03] Try to catch Pokemon (0) with Ultraball...
[12:56:04] Pokemon fled.
So in this case, I think the bot actually didnt find any pokemon bacause it despawned, but may be due to the delay in refreshing the pokemon position, the bot tries to catch Pokemon with no names and 0 CP which actually triggered the incorrect logic to use ultraball (because no pokemon would have 0 CP)
Third, Id like to offer a suggestion. I like this bot as i can see it has so much potential. But in terms of the transferring mechanism in the bot, you have a simple option of retaining the 3 with the highest CP, but more advanced player might want to retain a bit more. Some advanced players also not only focus on CP but also on Individual Value, could you actually try to measure the perfection value, a % ratio of the actual IV of a pokemon to its maximum possible IV, so that players can understand how good this pokemon really is when compared to pokemons with the same level.