MCPcopy
hub / github.com/PokemonGoF/PokemonGo-Bot / heartbeat

Method heartbeat

pokemongo_bot/__init__.py:1561–1679  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1559 return float(coords[0]), float(coords[1]), (float(coords[2]) if len(coords) == 3 else self.alt)
1560
1561 def heartbeat(self):
1562 # Remove forts that we can now spin again.
1563 now = time.time()
1564 self.fort_timeouts = {id: timeout for id, timeout
1565 in self.fort_timeouts.iteritems()
1566 if timeout >= now * 1000}
1567
1568 if now - self.last_heartbeat >= self.heartbeat_threshold and not self.hb_locked:
1569 previous_heartbeat = self.last_heartbeat
1570 self.last_heartbeat = now
1571 request = self.api.create_request()
1572 request.get_player()
1573 request.check_awarded_badges()
1574 request.get_inbox()
1575 responses = None
1576 try:
1577 responses = request.call()
1578 except NotLoggedInException:
1579 self.logger.warning('Unable to login, retying')
1580 self.empty_response = True
1581 except:
1582 self.logger.warning('Error occured in heatbeat, retying')
1583 self.empty_response = True
1584
1585 if not self.empty_response:
1586 if responses['responses']['GET_PLAYER']['success'] == True:
1587 # we get the player_data anyway, might as well store it
1588 self._player = responses['responses']['GET_PLAYER']['player_data']
1589 self.event_manager.emit(
1590 'player_data',
1591 sender=self,
1592 level='debug',
1593 formatted='player_data: {player_data}',
1594 data={'player_data': self._player}
1595 )
1596 if responses['responses']['GET_INBOX']['result'] == 1:
1597 self._inbox = responses['responses']['GET_INBOX']['inbox']
1598 # self.logger.info("Got inbox messages?")
1599 # self.logger.info("Inbox: %s" % responses['responses']['GET_INBOX'])
1600 if 'notifications' in self._inbox:
1601 for notification in self._inbox['notifications']:
1602 notification_date = datetime.datetime.fromtimestamp(int(notification['create_timestamp_ms']) / 1e3)
1603 if previous_heartbeat > (int(notification['create_timestamp_ms']) / 1e3):
1604 # Skipp old notifications!
1605 continue
1606
1607 if notification['category'] == 'pokemon_hungry':
1608 gym_name = pokemon = 'Unknown'
1609 for variable in notification['variables']:
1610 if variable['name'] == 'GYM_NAME':
1611 gym_name = variable['literal']
1612 if variable['name'] == 'POKEMON_NICKNAME':
1613 pokemon = variable['literal']
1614
1615 self.event_manager.emit(
1616 'pokemon_hungy',
1617 sender=self,
1618 level='info',

Callers 2

loginMethod · 0.95
tickMethod · 0.45

Calls 4

callMethod · 0.80
emitMethod · 0.80
create_requestMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected