Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Call level_up_rewards on exp changes/Some pep-8 #4896

Merged
merged 2 commits into from
Aug 29, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 30 additions & 48 deletions pokemongo_bot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,16 @@
from pokemongo_bot.datastore import _init_database, Datastore
from worker_result import WorkerResult
from tree_config_builder import ConfigException, MismatchTaskApiVersion, TreeConfigBuilder
from inventory import init_inventory
from inventory import init_inventory, player
from sys import platform as _platform
from pgoapi.protos.POGOProtos.Enums import BadgeType_pb2
import struct


class FileIOException(Exception):
pass


class PokemonGoBot(Datastore):
@property
def position(self):
Expand Down Expand Up @@ -121,7 +123,9 @@ def start(self):
self._setup_event_system()
self._setup_logging()
self.sleep_schedule = SleepSchedule(self, self.config.sleep_schedule) if self.config.sleep_schedule else None
if self.sleep_schedule: self.sleep_schedule.work()
if self.sleep_schedule:
self.sleep_schedule.work()

self._setup_api()
self._load_recent_forts()
init_inventory(self)
Expand Down Expand Up @@ -186,7 +190,7 @@ def _register_events(self):
self.event_manager.register_event('set_start_location')
self.event_manager.register_event('load_cached_location')
self.event_manager.register_event('location_cache_ignored')

self.event_manager.register_event('debug')

# ignore candy above threshold
Expand All @@ -198,11 +202,6 @@ def _register_events(self):
'threshold'
)
)





self.event_manager.register_event(
'position_update',
parameters=(
Expand All @@ -227,7 +226,6 @@ def _register_events(self):
)
)


self.event_manager.register_event('location_cache_error')

self.event_manager.register_event('bot_start')
Expand Down Expand Up @@ -601,9 +599,6 @@ def _register_events(self):
'move_to_map_pokemon',
parameters=('message')
)



# cached recent_forts
self.event_manager.register_event('loaded_cached_forts')
self.event_manager.register_event('cached_fort')
Expand Down Expand Up @@ -636,7 +631,8 @@ def tick(self):
self.health_record.heartbeat()
self.cell = self.get_meta_cell()

if self.sleep_schedule: self.sleep_schedule.work()
if self.sleep_schedule:
self.sleep_schedule.work()

now = time.time() * 1000

Expand Down Expand Up @@ -774,15 +770,15 @@ def _setup_logging(self):
if self.config.logging:
logging_format = '%(message)s'
logging_format_options = ''

if ('show_log_level' not in self.config.logging) or self.config.logging['show_log_level']:
logging_format = '[%(levelname)s] ' + logging_format
if ('show_process_name' not in self.config.logging) or self.config.logging['show_process_name']:
logging_format = '[%(name)10s] ' + logging_format
if ('show_datetime' not in self.config.logging) or self.config.logging['show_datetime']:
logging_format = '[%(asctime)s] ' + logging_format
logging_format_options = '%Y-%m-%d %H:%M:%S'

formatter = Formatter(logging_format,logging_format_options)
for handler in logging.root.handlers[:]:
handler.setFormatter(formatter)
Expand Down Expand Up @@ -828,7 +824,7 @@ def login(self):
formatted="Login procedure started."
)
lat, lng = self.position[0:2]
self.api.set_position(lat, lng, self.alt) # or should the alt kept to zero?
self.api.set_position(lat, lng, self.alt) # or should the alt kept to zero?

while not self.api.login(
self.config.auth_service,
Expand Down Expand Up @@ -1098,15 +1094,15 @@ def _set_starting_position(self):
level='debug',
formatted='Loading cached location...'
)

json_file = os.path.join(_base_dir, 'data', 'last-location-%s.json' % self.config.username)

try:
with open(json_file, "r") as infile:
location_json = json.load(infile)
except (IOError, ValueError):
# Unable to read json file.
# File may be corrupt. Create a new one.
# File may be corrupt. Create a new one.
location_json = []
except:
raise FileIOException("Unexpected error reading from {}".web_inventory)
Expand Down Expand Up @@ -1220,7 +1216,7 @@ def heartbeat(self):
responses = request.call()

if responses['responses']['GET_PLAYER']['success'] == True:
#we get the player_data anyway, might as well store it
# we get the player_data anyway, might as well store it
self._player = responses['responses']['GET_PLAYER']['player_data']
self.event_manager.emit(
'player_data',
Expand All @@ -1230,7 +1226,7 @@ def heartbeat(self):
data={'player_data': self._player}
)
if responses['responses']['CHECK_AWARDED_BADGES']['success'] == True:
#store awarded_badges reponse to be used in a task or part of heartbeat
# store awarded_badges reponse to be used in a task or part of heartbeat
self._awarded_badges = responses['responses']['CHECK_AWARDED_BADGES']

if self._awarded_badges.has_key('awarded_badges'):
Expand All @@ -1245,9 +1241,9 @@ def heartbeat(self):
level='info',
formatted='awarded badge: {badge}, lvl {level}',
data={'badge': badgename,
'level' : badgelevel }
'level': badgelevel}
)
human_behaviour.action_delay(3,10)
human_behaviour.action_delay(3, 10)

try:
self.web_update_queue.put_nowait(True) # do this outside of thread every tick
Expand All @@ -1260,34 +1256,21 @@ def update_web_location_worker(self):
self.update_web_location()

def display_player_info(self):
inventory_items = self.api.get_inventory()
inventory_items = inventory_items['responses']['GET_INVENTORY']['inventory_delta']['inventory_items']
player_stats = next((x["inventory_item_data"]["player_stats"]
for x in inventory_items
if x.get("inventory_item_data", {}).get("player_stats", {})),
None)
player_stats = player()

if player_stats:
nextlvlxp = (int(player_stats.next_level_xp) - int(player_stats.exp))
self.logger.info(
'Level: {}'.format(player_stats.level) +
' (Next Level: {} XP)'.format(nextlvlxp) +
' (Total: {} XP)'
''.format(player_stats.exp))

nextlvlxp = (int(player_stats.get('next_level_xp', 0)) - int(player_stats.get('experience', 0)))

if 'level' in player_stats and 'experience' in player_stats:
self.logger.info(
'Level: {level}'.format(
**player_stats) +
' (Next Level: {} XP)'.format(
nextlvlxp) +
' (Total: {experience} XP)'
''.format(**player_stats))

if 'pokemons_captured' in player_stats and 'poke_stop_visits' in player_stats:
self.logger.info(
'Pokemon Captured: '
'{pokemons_captured}'.format(
**player_stats) +
' | Pokestops Visited: '
'{poke_stop_visits}'.format(
**player_stats))
self.logger.info(
'Pokemon Captured: '
'{}'.format(player_stats.pokemons_captured) +
' | Pokestops Visited: '
'{}'.format(player_stats.poke_stop_visits))

def get_forts(self, order_by_distance=False):
forts = [fort
Expand Down Expand Up @@ -1322,7 +1305,6 @@ def _load_recent_forts(self):
if not self.config.forts_cache_recent_forts:
return


cached_forts_path = os.path.join(_base_dir, 'data', 'recent-forts-%s.json' % self.config.username)
try:
# load the cached recent forts
Expand Down
25 changes: 2 additions & 23 deletions pokemongo_bot/cell_workers/collect_level_up_reward.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ class CollectLevelUpReward(BaseTask):

def initialize(self):
self._process_config()
self.current_level = self._get_current_level()
self.current_level = inventory.player().level
self.previous_level = 0

def work(self):
if self._should_run():
self.current_level = self._get_current_level()
self.current_level = inventory.player().level

if self.collect_reward:
# let's check level reward on bot initialization
Expand Down Expand Up @@ -70,24 +70,3 @@ def _collect_level_reward(self):
'items': data
}
)

def _get_current_level(self):
level = 0
response_dict = self.bot.api.get_inventory()
data = (response_dict
.get('responses', {})
.get('GET_INVENTORY', {})
.get('inventory_delta', {})
.get('inventory_items', {}))

for item in data:
level = (item
.get('inventory_item_data', {})
.get('player_stats', {})
.get('level', 0))

# we found a level, no need to continue iterate
if level:
break

return level
Loading