-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
89b112c
commit b35260d
Showing
8 changed files
with
120 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
from pokemongo_bot import logger | ||
from pokemongo_bot.human_behaviour import sleep | ||
from pokemongo_bot.cell_workers.base_task import BaseTask | ||
|
||
class NicknamePokemon(BaseTask): | ||
def initialize(self): | ||
self.template = self.config.get('nickname_template','').lower().strip() | ||
if self.template == "{name}": | ||
self.template = "" | ||
|
||
def work(self): | ||
try: | ||
inventory = reduce(dict.__getitem__, ["responses", "GET_INVENTORY", "inventory_delta", "inventory_items"], self.bot.get_inventory()) | ||
except KeyError: | ||
pass | ||
else: | ||
pokemon_data = self._get_inventory_pokemon(inventory) | ||
for pokemon in pokemon_data: | ||
self._nickname_pokemon(pokemon) | ||
|
||
def _get_inventory_pokemon(self,inventory_dict): | ||
pokemon_data = [] | ||
for inv_data in inventory_dict: | ||
try: | ||
pokemon = reduce(dict.__getitem__,['inventory_item_data','pokemon_data'],inv_data) | ||
except KeyError: | ||
pass | ||
else: | ||
if not pokemon.get('is_egg',False): | ||
pokemon_data.append(pokemon) | ||
return pokemon_data | ||
|
||
def _nickname_pokemon(self,pokemon): | ||
"""This requies a pokemon object containing all the standard fields: id, ivs, cp, etc""" | ||
new_name = "" | ||
instance_id = pokemon.get('id',0) | ||
if not instance_id: | ||
logger.log("Pokemon instance id returned 0. Can't rename.",'red') | ||
return | ||
id = pokemon.get('pokemon_id',0)-1 | ||
name = self.bot.pokemon_list[id]['Name'] | ||
cp = pokemon.get('cp',0) | ||
iv_attack = pokemon.get('individual_attack',0) | ||
iv_defense = pokemon.get('individual_defense',0) | ||
iv_stamina = pokemon.get('individual_stamina',0) | ||
iv_list = [iv_attack,iv_defense,iv_stamina] | ||
iv_ads = "/".join(map(str,iv_list)) | ||
iv_sum = sum(iv_list) | ||
iv_pct = "{:0.0f}".format(100*iv_sum/45.0) | ||
log_color = 'red' | ||
try: | ||
new_name = self.template.format(name=name, | ||
id=id, | ||
cp=cp, | ||
iv_attack=iv_attack, | ||
iv_defense=iv_defense, | ||
iv_stamina=iv_stamina, | ||
iv_ads=iv_ads, | ||
iv_sum=iv_sum, | ||
iv_pct=iv_pct)[:12] | ||
except KeyError as bad_key: | ||
logger.log("Unable to nickname {} due to bad template ({})".format(name,bad_key),log_color) | ||
if pokemon.get('nickname', "") == new_name: | ||
return | ||
self.bot.api.nickname_pokemon(pokemon_id=instance_id,nickname=new_name) | ||
response = self.bot.api.call() | ||
sleep(1.2) | ||
try: | ||
result = reduce(dict.__getitem__, ["responses", "NICKNAME_POKEMON"], response) | ||
except KeyError: | ||
logger.log("Attempt to nickname received bad response from server.",log_color) | ||
if self.bot.config.debug: | ||
logger.log(response,log_color) | ||
return | ||
result = result['result'] | ||
if new_name == "": | ||
new_name = name | ||
output = { | ||
0: 'Nickname unset', | ||
1: 'Nickname set successfully! {} is now {}'.format(name,new_name), | ||
2: 'Invalid nickname! ({})'.format(new_name), | ||
3: 'Pokemon not found.', | ||
4: 'Pokemon is egg' | ||
}[result] | ||
if result==1: | ||
log_color='green' | ||
pokemon['nickname'] = new_name | ||
logger.log(output,log_color) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good feature. Why the nickname example is removed from config example later :(
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we cannot use this feature now?
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ChrisHaPunkt I think the code is not removed from python files. You can use it, but newcomers won't find it from the examples.
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We removed it from the examples because a non trivial amount of people copy and paste the example config and were upset when all of their pokemon were renamed (for good reason).
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a config's consolidation is required eg. Only 1 example config with all the options with comments about the functionality of each section, and where there are multiple options but the bot can only use 1 of them, explain that 1 of them needs to be chosen and the other 3 deleted.
Either that or somehow have those who aren't newcomers but don't check every commit, aware of the "new" options
b35260d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#2206