def _pokemon_event_data(self, pokemon): """Generates parameters used for the Bot's event manager. Args: pokemon: Pokemon object Returns: Dictionary with Pokemon's info. """ now = int(time.time()) return { 'poke_name': pokemon['name'], 'poke_dist': (format_dist(pokemon['dist'], self.unit)), 'poke_lat': pokemon['latitude'], 'poke_lon': pokemon['longitude'], 'disappears_in': (format_time(pokemon['disappear_time'] - now)) }
def work(self): # check for pokeballs (excluding masterball) pokeballs = self.bot.item_inventory_count(1) superballs = self.bot.item_inventory_count(2) ultraballs = self.bot.item_inventory_count(3) if (pokeballs + superballs + ultraballs) < 1: return WorkerResult.SUCCESS self.update_map_location() self.dump_caught_pokemon() pokemon_list = self.get_pokemon_from_map() pokemon_list.sort(key=lambda x: x['dist']) if self.config['mode'] == 'priority': pokemon_list.sort(key=lambda x: x['priority'], reverse=True) if self.config['prioritize_vips']: pokemon_list.sort(key=lambda x: x['is_vip'], reverse=True) if len(pokemon_list) < 1: return WorkerResult.SUCCESS pokemon = pokemon_list[0] # if we only have ultraballs and the target is not a vip don't snipe/walk if (pokeballs + superballs) < 1 and not pokemon['is_vip']: return WorkerResult.SUCCESS if self.config['snipe']: return self.snipe(pokemon) now = int(time.time()) logger.log('Moving towards {}, {} left ({})'.format(pokemon['name'], format_dist(pokemon['dist'], self.unit), format_time(pokemon['disappear_time'] - now))) step_walker = StepWalker( self.bot, self.bot.config.walk, pokemon['latitude'], pokemon['longitude'] ) if not step_walker.step(): return WorkerResult.RUNNING logger.log('Arrived at {}'.format(pokemon['name'])) self.add_caught(pokemon) return WorkerResult.SUCCESS