Best Python code snippet using lemoncheesecake
46085___init__.py
Source:46085___init__.py  
...187        if self.config.show_events:188            self.event_manager.event_report()189            sys.exit(1)190            # Registering event:191            # self.event_manager.register_event("location", parameters=['lat', 'lng'])192            #193            # Emitting event should be enough to add logging and send websocket194            # message: :195            # self.event_manager.emit('location', 'level'='info', data={'lat': 1, 'lng':1}),196    def _register_events(self):197        self.event_manager.register_event(198            'location_found',199            parameters=('position', 'location')200        )201        self.event_manager.register_event('api_error')202        self.event_manager.register_event('config_error')203        self.event_manager.register_event('captcha')204        self.event_manager.register_event('login_started')205        self.event_manager.register_event('login_failed')206        self.event_manager.register_event('login_successful')207        self.event_manager.register_event('niantic_warning')208        self.event_manager.register_event('set_start_location')209        self.event_manager.register_event('load_cached_location')210        self.event_manager.register_event('location_cache_ignored')211        self.event_manager.register_event('debug')212        self.event_manager.register_event('refuse_to_sit')213        self.event_manager.register_event('reset_destination')214        self.event_manager.register_event('new_destination')215        self.event_manager.register_event('moving_to_destination')216        self.event_manager.register_event('arrived_at_destination')217        self.event_manager.register_event('staying_at_destination')218        self.event_manager.register_event('buddy_pokemon', parameters=('pokemon', 'iv', 'cp'))219        self.event_manager.register_event('buddy_reward', parameters=('pokemon', 'family', 'candy_earned', 'candy'))220        self.event_manager.register_event('buddy_walked', parameters=('pokemon', 'distance_walked', 'distance_needed'))221        #  ignore candy above threshold222        self.event_manager.register_event(223            'ignore_candy_above_thresold',224            parameters=(225                'name',226                'amount',227                'threshold'228            )229        )230        self.event_manager.register_event('followpath_output_disabled')231        self.event_manager.register_event(232            'position_update',233            parameters=(234                'current_position',235                'last_position',236                'distance', # optional237                'distance_unit' # optional238            )239        )240        self.event_manager.register_event(241            'path_lap_update',242            parameters=(243                'number_lap',244                'number_lap_max'245            )246        )247        self.event_manager.register_event(248            'path_lap_end',249            parameters=(250                'duration',251                'resume'252            )253        )254        self.event_manager.register_event('location_cache_error')255        self.event_manager.register_event('security_check')256        self.event_manager.register_event('bot_start')257        self.event_manager.register_event('bot_exit')258        self.event_manager.register_event('bot_interrupted')259        # sleep stuff260        self.event_manager.register_event(261            'next_sleep',262            parameters=(263                'time',264                'duration'265            )266        )267        self.event_manager.register_event(268            'bot_sleep',269            parameters=(270                'time_hms',271                'wake'272            )273        )274        # random pause275        self.event_manager.register_event(276            'next_random_pause',277            parameters=(278                'time',279                'duration'280            )281        )282        self.event_manager.register_event(283            'bot_random_pause',284            parameters=(285                'time_hms',286                'resume'287            )288        )289        # recycle stuff290        self.event_manager.register_event(291            'next_force_recycle',292            parameters=(293                'time'294            )295        )296        self.event_manager.register_event('force_recycle')297        # random alive pause298        self.event_manager.register_event(299            'next_random_alive_pause',300            parameters=(301                'time',302                'duration'303            )304        )305        self.event_manager.register_event(306            'bot_random_alive_pause',307            parameters=(308                'time_hms',309                'resume'310            )311        )312        # fort stuff313        self.event_manager.register_event(314            'spun_fort',315            parameters=(316                'fort_id',317                'latitude',318                'longitude'319            )320        )321        self.event_manager.register_event(322            'lured_pokemon_found',323            parameters=(324                'fort_id',325                'fort_name',326                'encounter_id',327                'latitude',328                'longitude'329            )330        )331        self.event_manager.register_event(332            'moving_to_hunter_target',333            parameters=(334                'target_name',335                'distance'336            )337        )338        self.event_manager.register_event(339            'moving_to_fort',340            parameters=(341                'fort_name',342                'target_type',343                'distance'344            )345        )346        self.event_manager.register_event(347            'moving_to_lured_fort',348            parameters=(349                'fort_name',350                'target_type',351                'distance',352                'lure_distance'353            )354        )355        self.event_manager.register_event(356            'spun_pokestop',357            parameters=(358                'pokestop', 'exp', 'items', 'stop_kind', 'spin_amount_now'359            )360        )361        self.event_manager.register_event(362            'pokestop_empty',363            parameters=('pokestop',)364        )365        self.event_manager.register_event(366            'pokestop_out_of_range',367            parameters=('pokestop',)368        )369        self.event_manager.register_event(370            'pokestop_on_cooldown',371            parameters=('pokestop', 'minutes_left')372        )373        self.event_manager.register_event(374            'unknown_spin_result',375            parameters=('status_code',)376        )377        self.event_manager.register_event('pokestop_searching_too_often')378        self.event_manager.register_event('arrived_at_fort')379        # pokemon stuff380        self.event_manager.register_event(381            'catchable_pokemon',382            parameters=(383                'pokemon_id',384                'spawn_point_id',385                'encounter_id',386                'latitude',387                'longitude',388                'expiration_timestamp_ms',389                'pokemon_name'390            )391        )392        self.event_manager.register_event(393            'incensed_pokemon_found',394            parameters=(395                'pokemon_id',396                'encounter_id',397                'encounter_location',398                'latitude',399                'longitude'400            )401        )402        self.event_manager.register_event(403            'pokemon_appeared',404            parameters=(405                'pokemon',406                'ncp',407                'cp',408                'iv',409                'iv_display',410                'encounter_id',411                'latitude',412                'longitude',413                'pokemon_id',414                'shiny'415            )416        )417        self.event_manager.register_event('no_pokeballs')418        self.event_manager.register_event('enough_ultraballs')419        self.event_manager.register_event('lure_success')420        self.event_manager.register_event('lure_failed')421        self.event_manager.register_event('lure_not_enough')422        self.event_manager.register_event('lure_info')423        self.event_manager.register_event(424            'pokemon_catch_rate',425            parameters=(426                'catch_rate',427                'ball_name',428                'berry_name',429                'berry_count'430            )431        )432        self.event_manager.register_event(433            'threw_berry',434            parameters=(435                'berry_name',436                'ball_name',437                'new_catch_rate'438            )439        )440        self.event_manager.register_event(441            'threw_pokeball',442            parameters=(443                'throw_type',444                'spin_label',445                'ball_name',446                'success_percentage',447                'count_left'448            )449        )450        self.event_manager.register_event(451            'pokemon_capture_failed',452            parameters=('pokemon',)453        )454        self.event_manager.register_event(455            'pokemon_vanished',456            parameters=(457                'pokemon',458                'encounter_id',459                'latitude',460                'longitude',461                'pokemon_id'462            )463        )464        self.event_manager.register_event(465            'vanish_limit_reached',466            parameters=(467                'duration',468                'resume'469            )470        )471        self.event_manager.register_event('pokemon_not_in_range')472        self.event_manager.register_event('pokemon_inventory_full')473        self.event_manager.register_event(474            'pokemon_caught',475            parameters=(476                'pokemon',477                'ncp', 'cp', 'iv', 'iv_display', 'exp',478                'shiny',479                'stardust',480                'encounter_id',481                'latitude',482                'longitude',483                'pokemon_id',484                'daily_catch_limit',485                'caught_last_24_hour',486            )487        )488        self.event_manager.register_event(489            'pokemon_vip_caught',490            parameters=(491                'pokemon',492                'ncp', 'cp', 'iv', 'iv_display', 'exp',493                'shiny',494                'stardust',495                'encounter_id',496                'latitude',497                'longitude',498                'pokemon_id',499                'daily_catch_limit',500                'caught_last_24_hour',501            )502        )503        self.event_manager.register_event(504            'pokemon_evolved',505            parameters=('pokemon', 'new', 'iv', 'old_cp', 'cp', 'candy', 'xp')506        )507        self.event_manager.register_event(508            'pokemon_favored',509            parameters=('pokemon', 'iv', 'cp')510        )511        self.event_manager.register_event(512            'pokemon_unfavored',513            parameters=('pokemon', 'iv', 'cp')514        )515        self.event_manager.register_event(516            'pokemon_evolve_check',517            parameters=('has', 'needs')518        )519        self.event_manager.register_event(520            'pokemon_upgraded',521            parameters=('pokemon', 'iv', 'cp', 'new_cp', 'candy', 'stardust')522        )523        self.event_manager.register_event('skip_evolve')524        self.event_manager.register_event('threw_berry_failed', parameters=('status_code',))525        self.event_manager.register_event('vip_pokemon')526        self.event_manager.register_event('gained_candy', parameters=('gained_candy', 'quantity', 'type'))527        self.event_manager.register_event('catch_limit')528        self.event_manager.register_event('spin_limit')529        self.event_manager.register_event('show_best_pokemon', parameters=('pokemons'))530        self.event_manager.register_event('revived_pokemon')531        self.event_manager.register_event('healing_pokemon')532        # level up stuff533        self.event_manager.register_event(534            'level_up',535            parameters=(536                'previous_level',537                'current_level'538            )539        )540        self.event_manager.register_event(541            'level_up_reward',542            parameters=('items',)543        )544        # lucky egg545        self.event_manager.register_event(546            'used_lucky_egg',547            parameters=('amount_left',)548        )549        self.event_manager.register_event('lucky_egg_error')550        # softban551        self.event_manager.register_event('softban')552        self.event_manager.register_event('softban_fix')553        self.event_manager.register_event('softban_fix_done')554        # egg incubating555        self.event_manager.register_event(556            'incubate_try',557            parameters=(558                'incubator_id',559                'egg_id'560            )561        )562        self.event_manager.register_event(563            'incubate',564            parameters=('distance_in_km',)565        )566        self.event_manager.register_event(567            'next_egg_incubates',568            parameters=('eggs_left', 'eggs_inc', 'eggs')569        )570        self.event_manager.register_event('incubator_already_used')571        self.event_manager.register_event('egg_already_incubating')572        self.event_manager.register_event(573            'egg_hatched',574            parameters=(575                'name', 'cp', 'ncp', 'iv_ads', 'iv_pct', 'exp', 'stardust', 'candy'576            )577        )578        self.event_manager.register_event('egg_hatched_fail')579        # discard item580        self.event_manager.register_event(581            'item_discarded',582            parameters=(583                'amount', 'item', 'maximum'584            )585        )586        self.event_manager.register_event(587            'item_discard_skipped',588            parameters=('space',)589        )590        self.event_manager.register_event(591            'item_discard_fail',592            parameters=('item',)593        )594        # inventory595        self.event_manager.register_event('inventory_full')596        # release597        self.event_manager.register_event(598            'keep_best_release',599            parameters=(600                'amount', 'pokemon', 'criteria'601            )602        )603        self.event_manager.register_event(604            'future_pokemon_release',605            parameters=(606                'pokemon', 'cp', 'iv', 'ivcp', 'below_iv', 'below_cp', 'below_ivcp', 'cp_iv_logic'607            )608        )609        self.event_manager.register_event(610            'pokemon_release',611            parameters=('pokemon', 'iv', 'cp', 'ivcp', 'candy', 'candy_type')612        )613        self.event_manager.register_event(614            'pokemon_keep',615            parameters=('pokemon', 'iv', 'cp', 'ivcp')616        )617        # polyline walker618        self.event_manager.register_event(619            'polyline_request',620            parameters=('url',)621        )622        # cluster623        self.event_manager.register_event(624            'found_cluster',625            parameters=(626                'num_points', 'forts', 'radius', 'distance'627            )628        )629        self.event_manager.register_event(630            'arrived_at_cluster',631            parameters=(632                'num_points', 'forts', 'radius'633            )634        )635        # rename636        self.event_manager.register_event(637            'rename_pokemon',638            parameters=('old_name', 'current_name',)639        )640        self.event_manager.register_event(641            'pokemon_nickname_invalid',642            parameters=('nickname',)643        )644        self.event_manager.register_event(645            'unset_pokemon_nickname',646            parameters=('old_name',)647        )648        # Move To map pokemon649        self.event_manager.register_event(650            'move_to_map_pokemon_fail',651            parameters=('message',)652        )653        self.event_manager.register_event(654            'move_to_map_pokemon_updated_map',655            parameters=('lat', 'lon')656        )657        self.event_manager.register_event(658            'move_to_map_pokemon_teleport_to',659            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',660                        'disappears_in')661        )662        self.event_manager.register_event(663            'move_to_map_pokemon_encounter',664            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',665                        'disappears_in')666        )667        self.event_manager.register_event(668            'move_to_map_pokemon_move_towards',669            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',670                        'disappears_in')671        )672        self.event_manager.register_event(673            'move_to_map_pokemon_teleport_back',674            parameters=('last_lat', 'last_lon')675        )676        self.event_manager.register_event(677            'moving_to_pokemon_throught_fort',678            parameters=('fort_name', 'distance','poke_name','poke_dist')679        )680        self.event_manager.register_event(681            'move_to_map_pokemon',682            parameters=('message')683        )684        # cached recent_forts685        self.event_manager.register_event('loaded_cached_forts')686        self.event_manager.register_event('cached_fort')687        self.event_manager.register_event(688            'no_cached_forts',689            parameters=('path', )690        )691        self.event_manager.register_event(692            'error_caching_forts',693            parameters=('path', )694        )695        # database shit696        self.event_manager.register_event('catch_log')697        self.event_manager.register_event('vanish_log')698        self.event_manager.register_event('evolve_log')699        self.event_manager.register_event('login_log')700        self.event_manager.register_event('transfer_log')701        self.event_manager.register_event('pokestop_log')702        self.event_manager.register_event('softban_log')703        self.event_manager.register_event('eggs_hatched_log')704        self.event_manager.register_event(705            'badges',706            parameters=('badge', 'level')707        )708        self.event_manager.register_event(709            'player_data',710            parameters=('player_data', )711        )712        self.event_manager.register_event(713            'forts_found',714            parameters=('json')715        )716        # UseIncense717        self.event_manager.register_event(718            'use_incense',719            parameters=('type', 'incense_count')720        )721        # BuddyPokemon722        self.event_manager.register_event(723            'buddy_update',724            parameters=('name')725        )726        self.event_manager.register_event(727            'buddy_update_fail',728            parameters=('name', 'error')729        )730        self.event_manager.register_event(731            'buddy_candy_earned',732            parameters=('candy', 'family', 'quantity', 'candy_earned', 'candy_limit')733        )734        self.event_manager.register_event('buddy_candy_fail')735        self.event_manager.register_event(736            'buddy_next_reward',737            parameters=('name', 'km_walked', 'km_total')738        )739        self.event_manager.register_event('buddy_keep_active')740        self.event_manager.register_event(741            'buddy_not_available',742            parameters=('name')743        )744        # Sniper745        self.event_manager.register_event('sniper_log', parameters=('message', 'message'))746        self.event_manager.register_event('sniper_error', parameters=('message', 'message'))747        self.event_manager.register_event('sniper_teleporting', parameters=('latitude', 'longitude', 'name'))748        # Catch-limiter749        self.event_manager.register_event('catch_limit_on')750        self.event_manager.register_event('catch_limit_off')751        self.event_manager.register_event(752            'pokemon_knock_out_gym',753            parameters=('pokemon', 'gym_name', 'notification_date', 'awarded_coins', 'awarded_coins_today')754        )755        self.event_manager.register_event(756            'pokemon_hungy',757            parameters=('pokemon', 'gym_name', 'notification_date')758        )759    def tick(self):760        self.health_record.heartbeat()761        self.cell = self.get_meta_cell()762        if self.sleep_schedule:763            self.sleep_schedule.work()764        now = time.time() * 1000765        for fort in self.cell["forts"]:766            timeout = fort.get("cooldown_complete_timestamp_ms", 0)767            if timeout >= now:768                self.fort_timeouts[fort["id"]] = timeout769        self._refresh_inventory()...__init__.py
Source:__init__.py  
...150        if self.config.show_events:151            self.event_manager.event_report()152            sys.exit(1)153            # Registering event:154            # self.event_manager.register_event("location", parameters=['lat', 'lng'])155            #156            # Emitting event should be enough to add logging and send websocket157            # message: :158            # self.event_manager.emit('location', 'level'='info', data={'lat': 1, 'lng':1}),159    def _register_events(self):160        self.event_manager.register_event(161            'location_found',162            parameters=('position', 'location')163        )164        self.event_manager.register_event('api_error')165        self.event_manager.register_event('config_error')166        self.event_manager.register_event('login_started')167        self.event_manager.register_event('login_failed')168        self.event_manager.register_event('login_successful')169        self.event_manager.register_event('set_start_location')170        self.event_manager.register_event('load_cached_location')171        self.event_manager.register_event('location_cache_ignored')172        self.event_manager.register_event('debug')173        self.event_manager.register_event('refuse_to_sit')174        self.event_manager.register_event('reset_destination')175        self.event_manager.register_event('new_destination')176        self.event_manager.register_event('moving_to_destination')177        self.event_manager.register_event('arrived_at_destination')178        self.event_manager.register_event('staying_at_destination')179        self.event_manager.register_event('buddy_pokemon', parameters=('pokemon', 'iv', 'cp'))180        self.event_manager.register_event('buddy_reward', parameters=('pokemon', 'family', 'candy_earned', 'candy'))181        self.event_manager.register_event('buddy_walked', parameters=('pokemon', 'distance_walked', 'distance_needed'))182        #  ignore candy above threshold183        self.event_manager.register_event(184            'ignore_candy_above_thresold',185            parameters=(186                'name',187                'amount',188                'threshold'189            )190        )191        self.event_manager.register_event(192            'position_update',193            parameters=(194                'current_position',195                'last_position',196                'distance', # optional197                'distance_unit' # optional198            )199        )200        self.event_manager.register_event(201            'path_lap_update',202            parameters=(203                'number_lap',204                'number_lap_max'205            )206        )207        self.event_manager.register_event(208            'path_lap_end',209            parameters=(210                'duration',211                'resume'212            )213        )214        self.event_manager.register_event('location_cache_error')215        self.event_manager.register_event('bot_start')216        self.event_manager.register_event('bot_exit')217        self.event_manager.register_event('bot_interrupted')218        # sleep stuff219        self.event_manager.register_event(220            'next_sleep',221            parameters=(222                'time',223                'duration'224            )225        )226        self.event_manager.register_event(227            'bot_sleep',228            parameters=(229                'time_hms',230                'wake'231            )232        )233        # random pause234        self.event_manager.register_event(235            'next_random_pause',236            parameters=(237                'time',238                'duration'239            )240        )241        self.event_manager.register_event(242            'bot_random_pause',243            parameters=(244                'time_hms',245                'resume'246            )247        )248        # recycle stuff249        self.event_manager.register_event(250            'next_force_recycle',251            parameters=(252                'time'253            )254        )255        self.event_manager.register_event('force_recycle')256        # random alive pause257        self.event_manager.register_event(258            'next_random_alive_pause',259            parameters=(260                'time',261                'duration'262            )263        )264        self.event_manager.register_event(265            'bot_random_alive_pause',266            parameters=(267                'time_hms',268                'resume'269            )270        )271        # fort stuff272        self.event_manager.register_event(273            'spun_fort',274            parameters=(275                'fort_id',276                'latitude',277                'longitude'278            )279        )280        self.event_manager.register_event(281            'lured_pokemon_found',282            parameters=(283                'fort_id',284                'fort_name',285                'encounter_id',286                'latitude',287                'longitude'288            )289        )290        self.event_manager.register_event(291            'moving_to_fort',292            parameters=(293                'fort_name',294                'distance'295            )296        )297        self.event_manager.register_event(298            'moving_to_lured_fort',299            parameters=(300                'fort_name',301                'distance',302                'lure_distance'303            )304        )305        self.event_manager.register_event(306            'spun_pokestop',307            parameters=(308                'pokestop', 'exp', 'items'309            )310        )311        self.event_manager.register_event(312            'pokestop_empty',313            parameters=('pokestop',)314        )315        self.event_manager.register_event(316            'pokestop_out_of_range',317            parameters=('pokestop',)318        )319        self.event_manager.register_event(320            'pokestop_on_cooldown',321            parameters=('pokestop', 'minutes_left')322        )323        self.event_manager.register_event(324            'unknown_spin_result',325            parameters=('status_code',)326        )327        self.event_manager.register_event('pokestop_searching_too_often')328        self.event_manager.register_event('arrived_at_fort')329        # pokemon stuff330        self.event_manager.register_event(331            'catchable_pokemon',332            parameters=(333                'pokemon_id',334                'spawn_point_id',335                'encounter_id',336                'latitude',337                'longitude',338                'expiration_timestamp_ms',339                'pokemon_name'340            )341        )342        self.event_manager.register_event(343            'incensed_pokemon_found',344            parameters=(345                'pokemon_id',346                'encounter_id',347                'encounter_location',348                'latitude',349                'longitude'350            )351        )352        self.event_manager.register_event(353            'pokemon_appeared',354            parameters=(355                'pokemon',356                'ncp',357                'cp',358                'iv',359                'iv_display',360                'encounter_id',361                'latitude',362                'longitude',363                'pokemon_id'364            )365        )366        self.event_manager.register_event('no_pokeballs')367        self.event_manager.register_event('enough_ultraballs')368        self.event_manager.register_event(369            'pokemon_catch_rate',370            parameters=(371                'catch_rate',372                'ball_name',373                'berry_name',374                'berry_count'375            )376        )377        self.event_manager.register_event(378            'threw_berry',379            parameters=(380                'berry_name',381                'ball_name',382                'new_catch_rate'383            )384        )385        self.event_manager.register_event(386            'threw_pokeball',387            parameters=(388                'throw_type',389                'spin_label',390                'ball_name',391                'success_percentage',392                'count_left'393            )394        )395        self.event_manager.register_event(396            'pokemon_capture_failed',397            parameters=('pokemon',)398        )399        self.event_manager.register_event(400            'pokemon_vanished',401            parameters=(402                'pokemon',403                'encounter_id',404                'latitude',405                'longitude',406                'pokemon_id'407            )408        )409        self.event_manager.register_event(410            'vanish_limit_reached',411            parameters=(412                'duration',413                'resume'414            )415        )416        self.event_manager.register_event('pokemon_not_in_range')417        self.event_manager.register_event('pokemon_inventory_full')418        self.event_manager.register_event(419            'pokemon_caught',420            parameters=(421                'pokemon',422                'ncp', 'cp', 'iv', 'iv_display', 'exp',423                'stardust',424                'encounter_id',425                'latitude',426                'longitude',427                'pokemon_id',428                'daily_catch_limit',429                'caught_last_24_hour',430            )431        )432        self.event_manager.register_event(433            'pokemon_vip_caught',434            parameters=(435                'pokemon',436                'ncp', 'cp', 'iv', 'iv_display', 'exp',437                'stardust',438                'encounter_id',439                'latitude',440                'longitude',441                'pokemon_id',442                'daily_catch_limit',443                'caught_last_24_hour',444            )445        )446        self.event_manager.register_event(447            'pokemon_evolved',448            parameters=('pokemon', 'iv', 'cp', 'candy', 'xp')449        )450        self.event_manager.register_event(451            'pokemon_evolve_check',452            parameters=('has', 'needs')453        )454        self.event_manager.register_event(455            'pokemon_upgraded',456            parameters=('pokemon', 'iv', 'cp', 'candy', 'stardust')457        )458        self.event_manager.register_event('skip_evolve')459        self.event_manager.register_event('threw_berry_failed', parameters=('status_code',))460        self.event_manager.register_event('vip_pokemon')461        self.event_manager.register_event('gained_candy', parameters=('quantity', 'type'))462        self.event_manager.register_event('catch_limit')463        self.event_manager.register_event('spin_limit')464        self.event_manager.register_event('show_best_pokemon', parameters=('pokemons'))465        # level up stuff466        self.event_manager.register_event(467            'level_up',468            parameters=(469                'previous_level',470                'current_level'471            )472        )473        self.event_manager.register_event(474            'level_up_reward',475            parameters=('items',)476        )477        # lucky egg478        self.event_manager.register_event(479            'used_lucky_egg',480            parameters=('amount_left',)481        )482        self.event_manager.register_event('lucky_egg_error')483        # softban484        self.event_manager.register_event('softban')485        self.event_manager.register_event('softban_fix')486        self.event_manager.register_event('softban_fix_done')487        # egg incubating488        self.event_manager.register_event(489            'incubate_try',490            parameters=(491                'incubator_id',492                'egg_id'493            )494        )495        self.event_manager.register_event(496            'incubate',497            parameters=('distance_in_km',)498        )499        self.event_manager.register_event(500            'next_egg_incubates',501            parameters=('eggs_left', 'eggs_inc', 'eggs')502        )503        self.event_manager.register_event('incubator_already_used')504        self.event_manager.register_event('egg_already_incubating')505        self.event_manager.register_event(506            'egg_hatched',507            parameters=(508                'name', 'cp', 'ncp', 'iv_ads', 'iv_pct', 'exp', 'stardust', 'candy'509            )510        )511        self.event_manager.register_event('egg_hatched_fail')512        # discard item513        self.event_manager.register_event(514            'item_discarded',515            parameters=(516                'amount', 'item', 'maximum'517            )518        )519        self.event_manager.register_event(520            'item_discard_skipped',521            parameters=('space',)522        )523        self.event_manager.register_event(524            'item_discard_fail',525            parameters=('item',)526        )527        # inventory528        self.event_manager.register_event('inventory_full')529        # release530        self.event_manager.register_event(531            'keep_best_release',532            parameters=(533                'amount', 'pokemon', 'criteria'534            )535        )536        self.event_manager.register_event(537            'future_pokemon_release',538            parameters=(539                'pokemon', 'cp', 'iv', 'ivcp', 'below_iv', 'below_cp', 'below_ivcp', 'cp_iv_logic'540            )541        )542        self.event_manager.register_event(543            'pokemon_release',544            parameters=('pokemon', 'iv', 'cp', 'ivcp', 'candy', 'candy_type')545        )546        self.event_manager.register_event(547            'pokemon_keep',548            parameters=('pokemon', 'iv', 'cp', 'ivcp')549        )550        # polyline walker551        self.event_manager.register_event(552            'polyline_request',553            parameters=('url',)554        )555        # cluster556        self.event_manager.register_event(557            'found_cluster',558            parameters=(559                'num_points', 'forts', 'radius', 'distance'560            )561        )562        self.event_manager.register_event(563            'arrived_at_cluster',564            parameters=(565                'num_points', 'forts', 'radius'566            )567        )568        # rename569        self.event_manager.register_event(570            'rename_pokemon',571            parameters=('old_name', 'current_name',)572        )573        self.event_manager.register_event(574            'pokemon_nickname_invalid',575            parameters=('nickname',)576        )577        self.event_manager.register_event(578            'unset_pokemon_nickname',579            parameters=('old_name',)580        )581        # Move To map pokemon582        self.event_manager.register_event(583            'move_to_map_pokemon_fail',584            parameters=('message',)585        )586        self.event_manager.register_event(587            'move_to_map_pokemon_updated_map',588            parameters=('lat', 'lon')589        )590        self.event_manager.register_event(591            'move_to_map_pokemon_teleport_to',592            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',593                        'disappears_in')594        )595        self.event_manager.register_event(596            'move_to_map_pokemon_encounter',597            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',598                        'disappears_in')599        )600        self.event_manager.register_event(601            'move_to_map_pokemon_move_towards',602            parameters=('poke_name', 'poke_dist', 'poke_lat', 'poke_lon',603                        'disappears_in')604        )605        self.event_manager.register_event(606            'move_to_map_pokemon_teleport_back',607            parameters=('last_lat', 'last_lon')608        )609        self.event_manager.register_event(610            'moving_to_pokemon_throught_fort',611            parameters=('fort_name', 'distance','poke_name','poke_dist')612        )613        self.event_manager.register_event(614            'move_to_map_pokemon',615            parameters=('message')616        )617        # cached recent_forts618        self.event_manager.register_event('loaded_cached_forts')619        self.event_manager.register_event('cached_fort')620        self.event_manager.register_event(621            'no_cached_forts',622            parameters=('path', )623        )624        self.event_manager.register_event(625            'error_caching_forts',626            parameters=('path', )627        )628        # database shit629        self.event_manager.register_event('catch_log')630        self.event_manager.register_event('vanish_log')631        self.event_manager.register_event('evolve_log')632        self.event_manager.register_event('login_log')633        self.event_manager.register_event('transfer_log')634        self.event_manager.register_event('pokestop_log')635        self.event_manager.register_event('softban_log')636        self.event_manager.register_event('eggs_hatched_log')637        self.event_manager.register_event(638            'badges',639            parameters=('badge', 'level')640        )641        self.event_manager.register_event(642            'player_data',643            parameters=('player_data', )644        )645        self.event_manager.register_event(646            'forts_found',647            parameters=('json')648        )649        # UseIncense650        self.event_manager.register_event(651            'use_incense',652            parameters=('type', 'incense_count')653        )654        # BuddyPokemon655        self.event_manager.register_event(656            'buddy_update',657            parameters=('name')658        )659        self.event_manager.register_event(660            'buddy_update_fail',661            parameters=('name', 'error')662        )663        self.event_manager.register_event(664            'buddy_candy_earned',665            parameters=('candy', 'family', 'quantity', 'candy_earned', 'candy_limit')666        )667        self.event_manager.register_event('buddy_candy_fail')668        self.event_manager.register_event(669            'buddy_next_reward',670            parameters=('name', 'km_walked', 'km_total')671        )672        self.event_manager.register_event('buddy_keep_active')673        self.event_manager.register_event(674            'buddy_not_available',675            parameters=('name')676        )677        # Sniper678        self.event_manager.register_event('sniper_log', parameters=('message', 'message'))679        self.event_manager.register_event('sniper_error', parameters=('message', 'message'))680        self.event_manager.register_event('sniper_teleporting', parameters=('latitude', 'longitude', 'name'))681        # Catch-limiter682        self.event_manager.register_event('catch_limit_on')683        self.event_manager.register_event('catch_limit_off')684    def tick(self):685        self.health_record.heartbeat()686        self.cell = self.get_meta_cell()687        if self.sleep_schedule:688            self.sleep_schedule.work()689        now = time.time() * 1000690        for fort in self.cell["forts"]:691            timeout = fort.get("cooldown_complete_timestamp_ms", 0)692            if timeout >= now:693                self.fort_timeouts[fort["id"]] = timeout694        self._refresh_inventory()695        self.tick_count += 1696        # Check if session token has expired697        self.check_session(self.position)...26857_events.py
Source:26857_events.py  
...16    DateTimeField17)18from wechatpy.messages import BaseMessage19EVENT_TYPES = {}20def register_event(event_type):21    """22    Register the event class so that they can be accessed from EVENT_TYPES23    :param event_type: Event type24    """25    def register(cls):26        EVENT_TYPES[event_type] = cls27        return cls28    return register29class BaseEvent(BaseMessage):30    """Base class for all events"""31    type = 'event'32    event = ''33@register_event('subscribe')34class SubscribeEvent(BaseEvent):35    """36    ç¨æ·å
³æ³¨äºä»¶37    详æ
请åé
38    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html39    """40    event = 'subscribe'41    key = StringField('EventKey', '')42@register_event('unsubscribe')43class UnsubscribeEvent(BaseEvent):44    """45    ç¨æ·åæ¶å
³æ³¨äºä»¶46    详æ
请åé
47    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html48    """49    event = 'unsubscribe'50@register_event('subscribe_scan')51class SubscribeScanEvent(BaseEvent):52    """53    ç¨æ·æ«æäºç»´ç å
³æ³¨äºä»¶54    详æ
请åé
55    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html56    """57    event = 'subscribe_scan'58    scene_id = StringField('EventKey')59    ticket = StringField('Ticket')60@register_event('scan')61class ScanEvent(BaseEvent):62    """63    ç¨æ·æ«æäºç»´ç äºä»¶64    详æ
请åé
65    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html66    """67    event = 'scan'68    scene_id = StringField('EventKey')69    ticket = StringField('Ticket')70@register_event('location')71class LocationEvent(BaseEvent):72    """73    䏿¥å°çä½ç½®äºä»¶74    详æ
请åé
75    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html76    """77    event = 'location'78    latitude = FloatField('Latitude', 0.0)79    longitude = FloatField('Longitude', 0.0)80    precision = FloatField('Precision', 0.0)81@register_event('click')82class ClickEvent(BaseEvent):83    """84    ç¹å»èåæåæ¶æ¯äºä»¶85    详æ
请åé
86    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html87    """88    event = 'click'89    key = StringField('EventKey')90@register_event('view')91class ViewEvent(BaseEvent):92    """93    ç¹å»èåè·³è½¬é¾æ¥äºä»¶94    详æ
请åé
95    http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html96    """97    event = 'view'98    url = StringField('EventKey')99@register_event('masssendjobfinish')100class MassSendJobFinishEvent(BaseEvent):101    """102    ç¾¤åæ¶æ¯ä»»å¡å®æäºä»¶103    详æ
请åé
104    http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html105    """106    id = IntegerField('MsgID', 0)107    event = 'masssendjobfinish'108    status = StringField('Status')109    total_count = IntegerField('TotalCount', 0)110    filter_count = IntegerField('FilterCount', 0)111    sent_count = IntegerField('SentCount', 0)112    error_count = IntegerField('ErrorCount', 0)113@register_event('templatesendjobfinish')114class TemplateSendJobFinishEvent(BaseEvent):115    """116    æ¨¡æ¿æ¶æ¯ä»»å¡å®æäºä»¶117    详æ
请åé
118    http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html119    """120    id = IntegerField('MsgID')121    event = 'templatesendjobfinish'122    status = StringField('Status')123class BaseScanCodeEvent(BaseEvent):124    key = StringField('EventKey')125    scan_code_info = BaseField('ScanCodeInfo', {})126    @property127    def scan_type(self):128        return self.scan_code_info['ScanType']129    @property130    def scan_result(self):131        return self.scan_code_info['ScanResult']132@register_event('scancode_push')133class ScanCodePushEvent(BaseScanCodeEvent):134    """135    æ«ç æ¨äºä»¶136    详æ
请åé
137    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html138    """139    event = 'scancode_push'140@register_event('scancode_waitmsg')141class ScanCodeWaitMsgEvent(BaseScanCodeEvent):142    """143    æ«ç æ¨äºä»¶ä¸å¼¹åºâæ¶æ¯æ¥æ¶ä¸âæç¤ºæ¡çäºä»¶144    详æ
请åé
145    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html146    """147    event = 'scancode_waitmsg'148class BasePictureEvent(BaseEvent):149    key = StringField('EventKey')150    pictures_info = BaseField('SendPicsInfo', {})151    @property152    def count(self):153        return int(self.pictures_info['Count'])154    @property155    def pictures(self):156        if self.pictures_info['PicList']:157            items = self.pictures_info['PicList']['item']158            if self.count > 1:159                return items160            return [items]161        return []162@register_event('pic_sysphoto')163class PicSysPhotoEvent(BasePictureEvent):164    """165    å¼¹åºç³»ç»æç
§åå¾çäºä»¶166    详æ
请åé
167    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html168    """169    event = 'pic_sysphoto'170@register_event('pic_photo_or_album')171class PicPhotoOrAlbumEvent(BasePictureEvent):172    """173    å¼¹åºæç
§æè
ç¸ååå¾çäºä»¶174    详æ
请åé
175    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html176    """177    event = 'pic_photo_or_album'178@register_event('pic_weixin')179class PicWeChatEvent(BasePictureEvent):180    """181    å¼¹åºå¾®ä¿¡ç¸ååå¾å¨çäºä»¶182    详æ
请åé
183    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html184    """185    event = 'pic_weixin'186@register_event('location_select')187class LocationSelectEvent(BaseEvent):188    """189    å¼¹åºå°çä½ç½®éæ©å¨çäºä»¶190    详æ
请åé
191    http://mp.weixin.qq.com/wiki/9/981d772286d10d153a3dc4286c1ee5b5.html192    """193    event = 'location_select'194    key = StringField('EventKey')195    location_info = BaseField('SendLocationInfo', {})196    @property197    def location_x(self):198        return self.location_info['Location_X']199    @property200    def location_y(self):201        return self.location_info['Location_Y']202    @property203    def location(self):204        return self.location_x, self.location_y205    @property206    def scale(self):207        return self.location_info['Scale']208    @property209    def label(self):210        return self.location_info['Label']211    @property212    def poiname(self):213        return self.location_info['Poiname']214@register_event('card_pass_check')215class CardPassCheckEvent(BaseEvent):216    event = 'card_pass_check'217    card_id = StringField('CardId')218@register_event('card_not_pass_check')219class CardNotPassCheckEvent(BaseEvent):220    event = 'card_not_pass_check'221    card_id = StringField('CardId')222@register_event('user_get_card')223class UserGetCardEvent(BaseEvent):224    """225    é¢åäºä»¶æ¨é226    详æ
请åé
227    http://mp.weixin.qq.com/wiki/16/28b34ee91675a04cb24853768debded4.html#.E9.A2.86.E5.8F.96.E4.BA.8B.E4.BB.B6.E6.8E.A8.E9.80.81228    """229    event = 'user_get_card'230    card_id = StringField('CardId')231    is_given_by_friend = IntegerField('IsGiveByFriend')232    friend = StringField('FriendUserName')233    code = StringField('UserCardCode')234    old_code = StringField('OldUserCardCode')235    outer_id = StringField('OuterId')236@register_event('user_del_card')237class UserDeleteCardEvent(BaseEvent):238    """239    å¡å¸å é¤äºä»¶æ¨é240    详æ
请åé
241    http://mp.weixin.qq.com/wiki/16/28b34ee91675a04cb24853768debded4.html#.E5.88.A0.E9.99.A4.E4.BA.8B.E4.BB.B6.E6.8E.A8.E9.80.81242    """243    event = 'user_del_card'244    card_id = StringField('CardId')245    code = StringField('UserCardCode')246@register_event('user_consume_card')247class UserConsumeCardEvent(BaseEvent):248    """249    å¡å¸æ ¸éäºä»¶æ¨é250    详æ
请åé
251    http://mp.weixin.qq.com/wiki/16/28b34ee91675a04cb24853768debded4.html#.E6.A0.B8.E9.94.80.E4.BA.8B.E4.BB.B6.E6.8E.A8.E9.80.81252    """253    event = 'user_consume_card'254    card_id = StringField('CardId')255    code = StringField('UserCardCode')256    consume_source = StringField('ConsumeSource')257    location_id = StringField('LocationId')258    staff = StringField('StaffOpenId')259@register_event('merchant_order')260class MerchantOrderEvent(BaseEvent):261    event = 'merchant_order'262    order_id = StringField('OrderId')263    order_status = IntegerField('OrderStatus')264    product_id = StringField('ProductId')265    sku_info = StringField('SkuInfo')266@register_event('kf_create_session')267class KfCreateSessionEvent(BaseEvent):268    event = 'kf_create_session'269    account = StringField('KfAccount')270@register_event('kf_close_session')271class KfCloseSessionEvent(BaseEvent):272    event = 'kf_close_session'273    account = StringField('KfAccount')274@register_event('kf_switch_session')275class KfSwitchSessionEvent(BaseEvent):276    event = 'kf_switch_session'277    from_account = StringField('FromKfAccount')278    to_account = StringField('ToKfAccount')279@register_event('device_text')280class DeviceTextEvent(BaseEvent):281    event = 'device_text'282    device_type = StringField('DeviceType')283    device_id = StringField('DeviceID')284    session_id = StringField('SessionID')285    content = Base64DecodeField('Content')286    open_id = StringField('OpenID')287@register_event('device_bind')288class DeviceBindEvent(BaseEvent):289    event = 'device_bind'290    device_type = StringField('DeviceType')291    device_id = StringField('DeviceID')292    session_id = StringField('SessionID')293    content = Base64DecodeField('Content')294    open_id = StringField('OpenID')295@register_event('device_unbind')296class DeviceUnbindEvent(BaseEvent):297    event = 'device_unbind'298    device_type = StringField('DeviceType')299    device_id = StringField('DeviceID')300    session_id = StringField('SessionID')301    content = Base64DecodeField('Content')302    open_id = StringField('OpenID')303@register_event('device_subscribe_status')304class DeviceSubscribeStatusEvent(BaseEvent):305    event = 'device_subscribe_status'306    device_type = StringField('DeviceType')307    device_id = StringField('DeviceID')308    open_id = StringField('OpenID')309    op_type = IntegerField('OpType')310@register_event('device_unsubscribe_status')311class DeviceUnsubscribeStatusEvent(BaseEvent):312    event = 'device_unsubscribe_status'313    device_type = StringField('DeviceType')314    device_id = StringField('DeviceID')315    open_id = StringField('OpenID')316    op_type = IntegerField('OpType')317@register_event('shakearoundusershake')318class ShakearoundUserShakeEvent(BaseEvent):319    event = 'shakearound_user_shake'320    _chosen_beacon = BaseField('ChosenBeacon', {})321    _around_beacons = BaseField('AroundBeacons', {})322    @property323    def chosen_beacon(self):324        beacon = self._chosen_beacon325        if not beacon:326            return {}327        return {328            'uuid': beacon['Uuid'],329            'major': beacon['Major'],330            'minor': beacon['Minor'],331            'distance': float(beacon['Distance']),332        }333    @property334    def around_beacons(self):335        beacons = self._around_beacons336        if not beacons:337            return []338        ret = []339        for beacon in beacons['AroundBeacon']:340            ret.append({341                'uuid': beacon['Uuid'],342                'major': beacon['Major'],343                'minor': beacon['Minor'],344                'distance': float(beacon['Distance']),345            })346        return ret347@register_event('poi_check_notify')348class PoiCheckNotifyEvent(BaseEvent):349    event = 'poi_check_notify'350    poi_id = StringField('PoiId')351    uniq_id = StringField('UniqId')352    result = StringField('Result')353    message = StringField('Msg')354@register_event('wificonnected')355class WiFiConnectedEvent(BaseEvent):356    event = 'wificconnected'357    connect_time = IntegerField('ConnectTime')358    expire_time = IntegerField('ExpireTime')359    vendor_id = StringField('VendorId')360    shop_id = StringField('PlaceId')361    bssid = StringField('DeviceNo')362# ============================================================================363# 微信认è¯äºä»¶æ¨é364# ============================================================================365@register_event('qualification_verify_success')366class QualificationVerifySuccessEvent(BaseEvent):367    """368    èµè´¨è®¤è¯æåäºä»¶369    详æ
请åé
370    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html371    """372    event = 'qualification_verify_success'373    expired_time = DateTimeField('ExpiredTime')374@register_event('qualification_verify_fail')375class QualificationVerifyFailEvent(BaseEvent):376    """377    èµè´¨è®¤è¯å¤±è´¥äºä»¶378    详æ
请åé
379    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html380    """381    event = 'qualification_verify_fail'382    fail_time = DateTimeField('FailTime')383    fail_reason = StringField('FailReason')384@register_event('naming_verify_success')385class NamingVerifySuccessEvent(BaseEvent):386    """387    åç§°è®¤è¯æåäºä»¶388    详æ
请åé
389    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html390    """391    event = 'naming_verify_success'392    expired_time = DateTimeField('ExpiredTime')393@register_event('naming_verify_fail')394class NamingVerifyFailEvent(BaseEvent):395    """396    å称认è¯å¤±è´¥äºä»¶397    客æ·ç«¯ä¸æå¾ï¼ä½ä»ææ¥å£æéã详æ
请åé
398    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html399    """400    event = 'naming_verify_fail'401    fail_time = DateTimeField('FailTime')402    fail_reason = StringField('FailReason')403@register_event('annual_renew')404class AnnualRenewEvent(BaseEvent):405    """406    年审éç¥äºä»¶407    详æ
请åé
408    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html409    """410    event = 'annual_renew'411    expired_time = DateTimeField('ExpiredTime')412@register_event('verify_expired')413class VerifyExpiredEvent(BaseEvent):414    """415    认è¯è¿æå¤±æéç¥416    详æ
请åé
417    http://mp.weixin.qq.com/wiki/1/7f81dec16b801b34629091094c099439.html418    """419    event = 'verify_expired'420    expired_time = DateTimeField('ExpiredTime')421@register_event('user_scan_product')422class UserScanProductEvent(BaseEvent):423    """424    æå¼åå主页äºä»¶425    详æ
请åè426    http://mp.weixin.qq.com/wiki/15/f4109a5e44b4bfbc7eb1337eb739f3e3.html427    """428    event = 'user_scan_product'429    standard = StringField('KeyStandard')430    key = StringField('KeyStr')431    country = StringField('Country')432    province = StringField('Province')433    city = StringField('City')434    sex = IntegerField('Sex')435    scene = IntegerField('Scene')436@register_event('user_scan_product_enter_session')437class UserScanProductEnterSessionEvent(BaseEvent):438    """439    è¿å
¥å
¬ä¼å·äºä»¶440    详æ
请åè441    http://mp.weixin.qq.com/wiki/15/f4109a5e44b4bfbc7eb1337eb739f3e3.html442    """443    event = 'user_scan_product_enter_session'444    standard = StringField('KeyStandard')445    key = StringField('KeyStr')446@register_event('user_scan_product_async')447class UserScanProductAsyncEvent(BaseEvent):448    """449    å°çä½ç½®ä¿¡æ¯å¼æ¥æ¨éäºä»¶450    详æ
请åè451    http://mp.weixin.qq.com/wiki/15/f4109a5e44b4bfbc7eb1337eb739f3e3.html452    """453    event = 'user_scan_product_async'454    standard = StringField('KeyStandard')455    key = StringField('KeyStr')456    region_code = StringField('RegionCode')457@register_event('user_scan_product_verify_action')458class UserScanProductVerifyActionEvent(BaseEvent):459    """460    ååå®¡æ ¸ç»æäºä»¶461    详æ
请åè462    http://mp.weixin.qq.com/wiki/15/f4109a5e44b4bfbc7eb1337eb739f3e3.html463    """464    event = 'user_scan_product_verify_action'465    standard = StringField('KeyStandard')466    key = StringField('KeyStr')467    result = StringField('Result')468    reason = StringField('ReasonMsg')469@register_event('subscribe_scan_product')470class SubscribeScanProductEvent(BaseEvent):471    """472    ç¨æ·å¨åå主页ä¸å
³æ³¨å
¬ä¼å·äºä»¶473    详æ
请åè474    http://mp.weixin.qq.com/wiki/15/f4109a5e44b4bfbc7eb1337eb739f3e3.html475    """476    event = 'subscribe_scan_product'477    event_key = StringField('EventKey')478    @property479    def scene(self):480        return self.event_key.split('|', 1)[0]481    @property482    def standard(self):483        return self.event_key.split('|')[1]484    @property485    def key(self):486        return self.event_key.split('|')[2]487@register_event('user_authorize_invoice')488class UserAuthorizeInvoiceEvent(BaseEvent):489    """490    ç¨æ·ææå票äºä»¶491    ï¼ä¼å
å«ä¸ä¸ªè®¢åå·ï¼ä¸æå就失败ï¼492    详æ
请åè493    https://mp.weixin.qq.com/wiki?id=mp1497082828_r1cI2494    """495    event = 'user_authorize_invoice'496    success_order_id = StringField('SuccOrderId')  # æææåç订åå·497    fail_order_id = StringField('FailOrderId')  # ææå¤±è´¥ç订åå·498    app_id = StringField('AppId')  # ç¨äºæ¥æ¶äºä»¶æ¨éçå
¬ä¼å·çAppId499    auth_source = StringField('Source')  # æææ¥æºï¼web表示æ¥èªå¾®ä¿¡å
H5ï¼appæ è¯æ¥èªapp500@register_event('update_invoice_status')501class UpdateInvoiceStatusEvent(BaseEvent):502    """503    åç¥¨ç¶ææ´æ°äºä»¶504    详æ
请åè505    https://mp.weixin.qq.com/wiki?id=mp1497082828_r1cI2506    """507    event = 'update_invoice_status'508    status = StringField('Status')  # å票æ¥éç¶æ509    card_id = StringField('CardId')  # å票 Card ID510    code = StringField('Code')  # å票 Code511@register_event('submit_invoice_title')512class SubmitInvoiceTitleEvent(BaseEvent):513    """514    ç¨æ·æäº¤å票æ¬å¤´äºä»¶515    详æ
请åè516    https://mp.weixin.qq.com/wiki?id=mp1496554912_vfWU0517    """518    event = 'submit_invoice_title'519    title = StringField('title')  # æ¬å¤´520    phone = StringField('phone')  # èç³»æ¹å¼521    tax_no = StringField('tax_no')  # ç¨å·522    addr = StringField('addr')  # å°å523    bank_type = StringField('bank_type')  # é¶è¡ç±»å524    bank_no = StringField('bank_no')  # é¶è¡å·ç 525    attach = StringField('attach')  # éå å段...events.py
Source:events.py  
...16    DateTimeField17)18from wechatpy.messages import BaseMessage19EVENT_TYPES = {}20def register_event(event_type):21    """22    Register the event class so that they can be accessed from EVENT_TYPES23    :param event_type: Event type24    """25    def register(cls):26        EVENT_TYPES[event_type] = cls27        return cls28    return register29class BaseEvent(BaseMessage):30    """Base class for all events"""31    type = 'event'32    event = ''33@register_event('subscribe')34class SubscribeEvent(BaseEvent):35    """36    ç¨æ·å
³æ³¨äºä»¶37    详æ
请åé
38    https://mp.weixin.qq.com/wiki?id=mp142114045439    """40    event = 'subscribe'41    key = StringField('EventKey', '')42@register_event('unsubscribe')43class UnsubscribeEvent(BaseEvent):44    """45    ç¨æ·åæ¶å
³æ³¨äºä»¶46    详æ
请åé
47    https://mp.weixin.qq.com/wiki?id=mp142114045448    """49    event = 'unsubscribe'50@register_event('subscribe_scan')51class SubscribeScanEvent(BaseEvent):52    """53    ç¨æ·æ«æäºç»´ç å
³æ³¨äºä»¶54    详æ
请åé
55    https://mp.weixin.qq.com/wiki?id=mp142114045456    """57    event = 'subscribe_scan'58    scene_id = StringField('EventKey')59    ticket = StringField('Ticket')60@register_event('scan')61class ScanEvent(BaseEvent):62    """63    ç¨æ·æ«æäºç»´ç äºä»¶64    详æ
请åé
65    https://mp.weixin.qq.com/wiki?id=mp142114045466    """67    event = 'scan'68    scene_id = StringField('EventKey')69    ticket = StringField('Ticket')70@register_event('location')71class LocationEvent(BaseEvent):72    """73    䏿¥å°çä½ç½®äºä»¶74    详æ
请åé
75    https://mp.weixin.qq.com/wiki?id=mp142114045476    """77    event = 'location'78    latitude = FloatField('Latitude', 0.0)79    longitude = FloatField('Longitude', 0.0)80    precision = FloatField('Precision', 0.0)81@register_event('click')82class ClickEvent(BaseEvent):83    """84    ç¹å»èåæåæ¶æ¯äºä»¶85    详æ
请åé
86    https://mp.weixin.qq.com/wiki?id=mp142114045487    """88    event = 'click'89    key = StringField('EventKey')90@register_event('view')91class ViewEvent(BaseEvent):92    """93    ç¹å»èåè·³è½¬é¾æ¥äºä»¶94    详æ
请åé
95    https://mp.weixin.qq.com/wiki?id=mp142114045496    """97    event = 'view'98    url = StringField('EventKey')99@register_event('masssendjobfinish')100class MassSendJobFinishEvent(BaseEvent):101    """102    ç¾¤åæ¶æ¯ä»»å¡å®æäºä»¶103    详æ
请åé
104    https://mp.weixin.qq.com/wiki?id=mp1481187827_i0l21105    """106    id = IntegerField('MsgID', 0)107    event = 'masssendjobfinish'108    status = StringField('Status')109    total_count = IntegerField('TotalCount', 0)110    filter_count = IntegerField('FilterCount', 0)111    sent_count = IntegerField('SentCount', 0)112    error_count = IntegerField('ErrorCount', 0)113@register_event('templatesendjobfinish')114class TemplateSendJobFinishEvent(BaseEvent):115    """116    æ¨¡æ¿æ¶æ¯ä»»å¡å®æäºä»¶117    详æ
请åé
118    https://mp.weixin.qq.com/wiki?id=mp1433751277119    """120    id = IntegerField('MsgID')121    event = 'templatesendjobfinish'122    status = StringField('Status')123class BaseScanCodeEvent(BaseEvent):124    key = StringField('EventKey')125    scan_code_info = BaseField('ScanCodeInfo', {})126    @property127    def scan_type(self):128        return self.scan_code_info['ScanType']129    @property130    def scan_result(self):131        return self.scan_code_info['ScanResult']132@register_event('scancode_push')133class ScanCodePushEvent(BaseScanCodeEvent):134    """135    æ«ç æ¨äºä»¶136    详æ
请åé
137    https://mp.weixin.qq.com/wiki?id=mp1421141016138    """139    event = 'scancode_push'140@register_event('scancode_waitmsg')141class ScanCodeWaitMsgEvent(BaseScanCodeEvent):142    """143    æ«ç æ¨äºä»¶ä¸å¼¹åºâæ¶æ¯æ¥æ¶ä¸âæç¤ºæ¡çäºä»¶144    详æ
请åé
145    https://mp.weixin.qq.com/wiki?id=mp1421141016146    """147    event = 'scancode_waitmsg'148class BasePictureEvent(BaseEvent):149    key = StringField('EventKey')150    pictures_info = BaseField('SendPicsInfo', {})151    @property152    def count(self):153        return int(self.pictures_info['Count'])154    @property155    def pictures(self):156        if self.pictures_info['PicList']:157            items = self.pictures_info['PicList']['item']158            if self.count > 1:159                return items160            return [items]161        return []162@register_event('pic_sysphoto')163class PicSysPhotoEvent(BasePictureEvent):164    """165    å¼¹åºç³»ç»æç
§åå¾çäºä»¶166    详æ
请åé
167    https://mp.weixin.qq.com/wiki?id=mp1421141016168    """169    event = 'pic_sysphoto'170@register_event('pic_photo_or_album')171class PicPhotoOrAlbumEvent(BasePictureEvent):172    """173    å¼¹åºæç
§æè
ç¸ååå¾çäºä»¶174    详æ
请åé
175    https://mp.weixin.qq.com/wiki?id=mp1421141016176    """177    event = 'pic_photo_or_album'178@register_event('pic_weixin')179class PicWeChatEvent(BasePictureEvent):180    """181    å¼¹åºå¾®ä¿¡ç¸ååå¾å¨çäºä»¶182    详æ
请åé
183    https://mp.weixin.qq.com/wiki?id=mp1421141016184    """185    event = 'pic_weixin'186@register_event('location_select')187class LocationSelectEvent(BaseEvent):188    """189    å¼¹åºå°çä½ç½®éæ©å¨çäºä»¶190    详æ
请åé
191    https://mp.weixin.qq.com/wiki?id=mp1421141016192    """193    event = 'location_select'194    key = StringField('EventKey')195    location_info = BaseField('SendLocationInfo', {})196    @property197    def location_x(self):198        return self.location_info['Location_X']199    @property200    def location_y(self):201        return self.location_info['Location_Y']202    @property203    def location(self):204        return self.location_x, self.location_y205    @property206    def scale(self):207        return self.location_info['Scale']208    @property209    def label(self):210        return self.location_info['Label']211    @property212    def poiname(self):213        return self.location_info['Poiname']214@register_event('card_pass_check')215class CardPassCheckEvent(BaseEvent):216    event = 'card_pass_check'217    card_id = StringField('CardId')218@register_event('card_not_pass_check')219class CardNotPassCheckEvent(BaseEvent):220    event = 'card_not_pass_check'221    card_id = StringField('CardId')222@register_event('user_get_card')223class UserGetCardEvent(BaseEvent):224    """225    é¢åäºä»¶æ¨é226    详æ
请åé
227    https://mp.weixin.qq.com/wiki?id=mp1451025274228    """229    event = 'user_get_card'230    card_id = StringField('CardId')231    is_given_by_friend = IntegerField('IsGiveByFriend')232    friend = StringField('FriendUserName')233    code = StringField('UserCardCode')234    old_code = StringField('OldUserCardCode')235    outer_id = StringField('OuterId')236@register_event('user_del_card')237class UserDeleteCardEvent(BaseEvent):238    """239    å¡å¸å é¤äºä»¶æ¨é240    详æ
请åé
241    https://mp.weixin.qq.com/wiki?id=mp1451025274242    """243    event = 'user_del_card'244    card_id = StringField('CardId')245    code = StringField('UserCardCode')246@register_event('user_consume_card')247class UserConsumeCardEvent(BaseEvent):248    """249    å¡å¸æ ¸éäºä»¶æ¨é250    详æ
请åé
251    https://mp.weixin.qq.com/wiki?id=mp1451025274252    """253    event = 'user_consume_card'254    card_id = StringField('CardId')255    code = StringField('UserCardCode')256    consume_source = StringField('ConsumeSource')257    location_id = StringField('LocationId')258    staff = StringField('StaffOpenId')259@register_event('merchant_order')260class MerchantOrderEvent(BaseEvent):261    event = 'merchant_order'262    order_id = StringField('OrderId')263    order_status = IntegerField('OrderStatus')264    product_id = StringField('ProductId')265    sku_info = StringField('SkuInfo')266@register_event('kf_create_session')267class KfCreateSessionEvent(BaseEvent):268    event = 'kf_create_session'269    account = StringField('KfAccount')270@register_event('kf_close_session')271class KfCloseSessionEvent(BaseEvent):272    event = 'kf_close_session'273    account = StringField('KfAccount')274@register_event('kf_switch_session')275class KfSwitchSessionEvent(BaseEvent):276    event = 'kf_switch_session'277    from_account = StringField('FromKfAccount')278    to_account = StringField('ToKfAccount')279@register_event('device_text')280class DeviceTextEvent(BaseEvent):281    event = 'device_text'282    device_type = StringField('DeviceType')283    device_id = StringField('DeviceID')284    session_id = StringField('SessionID')285    content = Base64DecodeField('Content')286    open_id = StringField('OpenID')287@register_event('device_bind')288class DeviceBindEvent(BaseEvent):289    event = 'device_bind'290    device_type = StringField('DeviceType')291    device_id = StringField('DeviceID')292    session_id = StringField('SessionID')293    content = Base64DecodeField('Content')294    open_id = StringField('OpenID')295@register_event('device_unbind')296class DeviceUnbindEvent(BaseEvent):297    event = 'device_unbind'298    device_type = StringField('DeviceType')299    device_id = StringField('DeviceID')300    session_id = StringField('SessionID')301    content = Base64DecodeField('Content')302    open_id = StringField('OpenID')303@register_event('device_subscribe_status')304class DeviceSubscribeStatusEvent(BaseEvent):305    event = 'device_subscribe_status'306    device_type = StringField('DeviceType')307    device_id = StringField('DeviceID')308    open_id = StringField('OpenID')309    op_type = IntegerField('OpType')310@register_event('device_unsubscribe_status')311class DeviceUnsubscribeStatusEvent(BaseEvent):312    event = 'device_unsubscribe_status'313    device_type = StringField('DeviceType')314    device_id = StringField('DeviceID')315    open_id = StringField('OpenID')316    op_type = IntegerField('OpType')317@register_event('shakearoundusershake')318class ShakearoundUserShakeEvent(BaseEvent):319    event = 'shakearound_user_shake'320    _chosen_beacon = BaseField('ChosenBeacon', {})321    _around_beacons = BaseField('AroundBeacons', {})322    @property323    def chosen_beacon(self):324        beacon = self._chosen_beacon325        if not beacon:326            return {}327        return {328            'uuid': beacon['Uuid'],329            'major': beacon['Major'],330            'minor': beacon['Minor'],331            'distance': float(beacon['Distance']),332        }333    @property334    def around_beacons(self):335        beacons = self._around_beacons336        if not beacons:337            return []338        ret = []339        for beacon in beacons['AroundBeacon']:340            ret.append({341                'uuid': beacon['Uuid'],342                'major': beacon['Major'],343                'minor': beacon['Minor'],344                'distance': float(beacon['Distance']),345            })346        return ret347@register_event('poi_check_notify')348class PoiCheckNotifyEvent(BaseEvent):349    event = 'poi_check_notify'350    poi_id = StringField('PoiId')351    uniq_id = StringField('UniqId')352    result = StringField('Result')353    message = StringField('Msg')354@register_event('wificonnected')355class WiFiConnectedEvent(BaseEvent):356    event = 'wificconnected'357    connect_time = IntegerField('ConnectTime')358    expire_time = IntegerField('ExpireTime')359    vendor_id = StringField('VendorId')360    shop_id = StringField('PlaceId')361    bssid = StringField('DeviceNo')362# ============================================================================363# 微信认è¯äºä»¶æ¨é364# ============================================================================365@register_event('qualification_verify_success')366class QualificationVerifySuccessEvent(BaseEvent):367    """368    èµè´¨è®¤è¯æåäºä»¶369    详æ
请åé
370    https://mp.weixin.qq.com/wiki?id=mp1455785130371    """372    event = 'qualification_verify_success'373    expired_time = DateTimeField('ExpiredTime')374@register_event('qualification_verify_fail')375class QualificationVerifyFailEvent(BaseEvent):376    """377    èµè´¨è®¤è¯å¤±è´¥äºä»¶378    详æ
请åé
379    https://mp.weixin.qq.com/wiki?id=mp1455785130380    """381    event = 'qualification_verify_fail'382    fail_time = DateTimeField('FailTime')383    fail_reason = StringField('FailReason')384@register_event('naming_verify_success')385class NamingVerifySuccessEvent(BaseEvent):386    """387    åç§°è®¤è¯æåäºä»¶388    详æ
请åé
389    https://mp.weixin.qq.com/wiki?id=mp1455785130390    """391    event = 'naming_verify_success'392    expired_time = DateTimeField('ExpiredTime')393@register_event('naming_verify_fail')394class NamingVerifyFailEvent(BaseEvent):395    """396    å称认è¯å¤±è´¥äºä»¶397    客æ·ç«¯ä¸æå¾ï¼ä½ä»ææ¥å£æéã详æ
请åé
398    https://mp.weixin.qq.com/wiki?id=mp1455785130399    """400    event = 'naming_verify_fail'401    fail_time = DateTimeField('FailTime')402    fail_reason = StringField('FailReason')403@register_event('annual_renew')404class AnnualRenewEvent(BaseEvent):405    """406    年审éç¥äºä»¶407    详æ
请åé
408    https://mp.weixin.qq.com/wiki?id=mp1455785130409    """410    event = 'annual_renew'411    expired_time = DateTimeField('ExpiredTime')412@register_event('verify_expired')413class VerifyExpiredEvent(BaseEvent):414    """415    认è¯è¿æå¤±æéç¥416    详æ
请åé
417    https://mp.weixin.qq.com/wiki?id=mp1455785130418    """419    event = 'verify_expired'420    expired_time = DateTimeField('ExpiredTime')421@register_event('user_scan_product')422class UserScanProductEvent(BaseEvent):423    """424    æå¼åå主页äºä»¶425    详æ
请åè426    https://mp.weixin.qq.com/wiki?id=mp1455872179427    """428    event = 'user_scan_product'429    standard = StringField('KeyStandard')430    key = StringField('KeyStr')431    country = StringField('Country')432    province = StringField('Province')433    city = StringField('City')434    sex = IntegerField('Sex')435    scene = IntegerField('Scene')436@register_event('user_scan_product_enter_session')437class UserScanProductEnterSessionEvent(BaseEvent):438    """439    è¿å
¥å
¬ä¼å·äºä»¶440    详æ
请åè441    https://mp.weixin.qq.com/wiki?id=mp1455872179442    """443    event = 'user_scan_product_enter_session'444    standard = StringField('KeyStandard')445    key = StringField('KeyStr')446@register_event('user_scan_product_async')447class UserScanProductAsyncEvent(BaseEvent):448    """449    å°çä½ç½®ä¿¡æ¯å¼æ¥æ¨éäºä»¶450    详æ
请åè451    https://mp.weixin.qq.com/wiki?id=mp1455872179452    """453    event = 'user_scan_product_async'454    standard = StringField('KeyStandard')455    key = StringField('KeyStr')456    region_code = StringField('RegionCode')457@register_event('user_scan_product_verify_action')458class UserScanProductVerifyActionEvent(BaseEvent):459    """460    ååå®¡æ ¸ç»æäºä»¶461    详æ
请åè462    https://mp.weixin.qq.com/wiki?id=mp1455872179463    """464    event = 'user_scan_product_verify_action'465    standard = StringField('KeyStandard')466    key = StringField('KeyStr')467    result = StringField('Result')468    reason = StringField('ReasonMsg')469@register_event('subscribe_scan_product')470class SubscribeScanProductEvent(BaseEvent):471    """472    ç¨æ·å¨åå主页ä¸å
³æ³¨å
¬ä¼å·äºä»¶473    详æ
请åè474    https://mp.weixin.qq.com/wiki?id=mp1455872179475    """476    event = 'subscribe_scan_product'477    event_key = StringField('EventKey')478    @property479    def scene(self):480        return self.event_key.split('|', 1)[0]481    @property482    def standard(self):483        return self.event_key.split('|')[1]484    @property485    def key(self):486        return self.event_key.split('|')[2]487@register_event('user_authorize_invoice')488class UserAuthorizeInvoiceEvent(BaseEvent):489    """490    ç¨æ·ææå票äºä»¶491    ï¼ä¼å
å«ä¸ä¸ªè®¢åå·ï¼ä¸æå就失败ï¼492    详æ
请åè493    https://mp.weixin.qq.com/wiki?id=mp1497082828_r1cI2494    """495    event = 'user_authorize_invoice'496    success_order_id = StringField('SuccOrderId')  # æææåç订åå·497    fail_order_id = StringField('FailOrderId')  # ææå¤±è´¥ç订åå·498    app_id = StringField('AppId')  # ç¨äºæ¥æ¶äºä»¶æ¨éçå
¬ä¼å·çAppId499    auth_source = StringField('Source')  # æææ¥æºï¼web表示æ¥èªå¾®ä¿¡å
H5ï¼appæ è¯æ¥èªapp500@register_event('update_invoice_status')501class UpdateInvoiceStatusEvent(BaseEvent):502    """503    åç¥¨ç¶ææ´æ°äºä»¶504    详æ
请åè505    https://mp.weixin.qq.com/wiki?id=mp1497082828_r1cI2506    """507    event = 'update_invoice_status'508    status = StringField('Status')  # å票æ¥éç¶æ509    card_id = StringField('CardId')  # å票 Card ID510    code = StringField('Code')  # å票 Code511@register_event('submit_invoice_title')512class SubmitInvoiceTitleEvent(BaseEvent):513    """514    ç¨æ·æäº¤å票æ¬å¤´äºä»¶515    详æ
请åè516    https://mp.weixin.qq.com/wiki?id=mp1496554912_vfWU0517    """518    event = 'submit_invoice_title'519    title = StringField('title')  # æ¬å¤´520    phone = StringField('phone')  # èç³»æ¹å¼521    tax_no = StringField('tax_no')  # ç¨å·522    addr = StringField('addr')  # å°å523    bank_type = StringField('bank_type')  # é¶è¡ç±»å524    bank_no = StringField('bank_no')  # é¶è¡å·ç 525    attach = StringField('attach')  # éå å段526    title_type = StringField('title_type')  # æ¬å¤´ç±»åï¼ä¸ªäººInvoiceUserTitlePersonType, å
¬å¸InvoiceUserTitleBusinessType527@register_event('user_enter_tempsession')528class UserEnterTempSessionEvent(BaseEvent):529    """530    å°ç¨åºç¨æ·è¿å
¥å®¢ææ¶æ¯531    详æ
请åé
532    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/receive.html533    """534    event = 'user_enter_tempsession'535    session_from = StringField('SessionFrom')536@register_event('view_miniprogram')537class ViewMiniProgramEvent(BaseEvent):538    """539    ä»èåè¿å
¥å°ç¨åºäºä»¶540    """541    event = 'view_miniprogram'542    page_path = StringField('EventKey')  # å°ç¨åºè·¯å¾...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
