The Pokemon Go Bot, baking with community.
Help Needed on Desktop Version
We use Slack as a web chat. Click here to join the chat!
You need modify config.json (config.json.example for example) then pokecli.py --config config.json Please clean up your old clone if you have issue, and following the install instruction.
Dev branch has the most up-to-date features, but be aware that there might be some broken changes. Your contribution and PR for fixes are warm welcome.
Master branch is the stable branch.
No PR on master branch to keep things easier.
- Project Chat
- Features
- TODO List
- Installation
- Develop PokemonGo-Bot
- Usage
- Docker Usage
- FAQ
- Credits
- Donation
- Search Fort (Spin Pokestop)
- Catch Pokemon
- Release low cp pokemon
- Walking as you
- Limit the step to farm specific area for pokestops
- Use the ball you have to catch, don't if you don't have
- Rudimentary IV Functionality filter
- Auto switch mode (Full of item then catch, no ball useable then farm)
- Ignore certain pokemon filter
- Use superior ball types when necessary
- When out of normal pokeballs, use the next type of ball unless there are less than 10 of that type, in which case switch to farm mode
- Drop items when bag is full (In Testing, Document contribute needed)
- Pokemon catch filter (In Testing, Document contribute needed)
- Google Map API key setup (Readme update needed)
- Show all objects on map (In Testing)
- Evolve pokemons (Code in, Need input, In Testing)
- Standalone Desktop APP
- Pokemon transfer filter ?? This already done, right?
- Hatch eggs
- Incubate eggs
- Use candy
- Fight Gym
- Python 2.7.x
- pip
- git
- virtualenv (Optional)
- docker (Optional)
- protobuf 3 (OS Dependent, see below)
- OS X:
brew update && brew install --devel protobuf
- Windows: Download protobuf 3.0: here and unzip
bin/protoc.exe
into a folder in your PATH. - Linux:
apt-get install python-protobuf
Please keep in mind that master is not always up-to-date whereas 'dev' is. In the installation note below change master
to dev
if you want to get and use the latest version.
(change master to dev for the latest version)
$ git clone -b master https://github.com/PokemonGoF/PokemonGo-Bot
$ cd PokemonGo-Bot
$ pip install -r requirements.txt
$ git submodule init
$ git submodule update
(change master to dev for the latest version)
$ git clone -b master https://github.com/PokemonGoF/PokemonGo-Bot
$ cd PokemonGo-Bot
$ virtualenv .
$ source bin/activate
$ pip install -r requirements.txt
$ git submodule init
$ git submodule update
(change master to dev for the latest version)
On Windows, you will need to install PyYaml through the installer and not through requirements.txt.
Go to : http://pyyaml.org/wiki/PyYAML , download the right version for your pc and install it
Go to this page and download: PyYAML-3.11-cp27-cp27m-win32.whl
(If running 64-bit python or if you get a 'not a supported wheel on this platform' error,
download the 64 bit version instead: PyYAML-3.11-cp27-cp27m-win_amd64.whl )
$ cd download-directory
$ pip install PyYAML-3.11-cp27-cp27m-win32.whl
// if you needed to download the 64-bit version)
// (replace PyYAML-3.11-cp27-cp27m-win32.whl with PyYAML-3.11-cp27-cp27m-win_amd64.whl
After this, just do:
$ git clone -b master https://github.com/PokemonGoF/PokemonGo-Bot
$ cd PokemonGo-Bot
$ pip install -r requirements.txt
$ git submodule init
$ git submodule update
$ git clone -b dev https://github.com/PokemonGoF/PokemonGo-Bot
$ cd PokemonGo-Bot
$ virtualenv .
$ source bin/activate
$ pip install -r requirements.txt
$ git submodule init
$ git submodule update
Google Maps API: a brief guide to your own key
This project uses Google Maps. There's one map coupled with the project, but as it gets more popular we'll definitely hit the rate-limit making the map unusable. That said, here's how you can get your own and replace ours:
- Navigate to this page
- Select 'Create a project' in the dropdown menu.
- Wait an eternity.
- Click 'Create' on the next page (optionally, fill out the info)
- Copy the API key that appears.
- After the code done, will update here how to replace.
If you encounter problems with the module ssl
and it's function _create_unverified_context
, just comment it. (Solution available in Python 2.7.11)
In order to comment out the function and the module, please follow the instructions below:
- edit
pokecli.py
- put
#
beforeif
(line 43) andssl
(line 44) - save it
Please keep in mind that this fix is only necessary if your python version don't have the _create_unverified_context
argument in the ssl module.
To update your project do: git pull
in the project folder
1/ copy `config.json.example` to `config.json` and `release_config.json.example` to `release_config.json`.
2/ Edit `config.json` and replace `auth_service`, `username`, `password`, `location` and `gmapkey` with your parameters (other keys are optional, check `Advance Configuration` below)
max_steps
:mode
:walk
:debug
: Let the default value here except if you are developpertest
: Let the default value here except if you are developperinitial_transfer
: Set this to 1 if you want to transfer pokemonlocation_cache
:distance_unit
:item_filter
:evolve_all
: Set to true to evolve pokemons if possible
By setting the `evolve_all` attribute in config.json, you can instruct the bot to automatically
evolve specified pokemons on startup. This is especially useful for batch-evolving after popping up
a lucky egg (currently this needs to be done manually).
The evolve all mechanism evolves only higher CP pokemons. It does this by first ordering them from high-to-low CP.
It will also automatically transfer the evolved pokemons based on the release configuration.
Examples on how to use (set in config.json):
1. "evolve_all": "all"
Will evolve ALL pokemons.
2. "evolve_all": "Pidgey,Weedle"
Will only evolve Pidgey and Weedle.
3. Not setting evolve_all or having any other string would not evolve any pokemons on startup.
The example is here
1. Check the type of your API request in POGOProtos For example: RECYCLE_INVENTORY_ITEM
2. Convert to the api call in pokemongo_bot/init.py, RECYCLE_INVENTORY_ITEM change to self.api.recycle_inventory_item
def drop_item(self,item_id,count): self.api.recycle_inventory_item(...............)
3. Where is the param list?
You need check this Requests/Messages/RecycleInventoryItemMessage.proto
4. Then our final api call is
def drop_item(self,item_id,count): self.api.recycle_inventory_item(item_id=item_id,count=count) inventory_req = self.api.call() print(inventory_req)
5. You can now debug on the log to see if get what you need
sudo apt-get update
sudo apt-get install nginx
Check if the webserver is running by using your browser and entering the IP address of your local machine/server. On a local machine this would be http://127.0.0.1. On AWS this is your public DNS if you havent configured an elastic IP.
sudo nano "/etc/nginx/sites-enabled/default"
Comment out following line: root /var/www/html;
and change it to the web folder of your PokemonGo-Bot: eg:
/home/user/dev/PokemonGo-Bot/web;
Here's the introduction
Not yet, still need a trainer to train the script param. But we are very close to.
It works, use -l "xx.yyyy,zz.ttttt" to set lat long for location. -- diordache
Try to generate an app password and set is as
-p "<your-app-password>"
This error mostly occurs for those who are using 2 factor authentication, but either way, for the purpose of security it would be nice to have a separate password for the bot app.
The status code "3" corresponds to "Flee" - meaning your Pokemon has ran away. {"responses": { "CATCH_POKEMON": { "status": 3 } }
Finish the tutorial on a smartphone. This will then allow everything to be visible.
Quick Tip: When using this script, use a Lucky egg to double the XP for 30 mins. You will level up much faster. A Lucky egg is obtained on level 9 and further on whilst leveling up. (from VipsForever via /r/pokemongodev)
You don't want to collect common pokemon once you hit a certain level. It will slow down leveling but you won't fill up either.
Create the following filter
./data/catch-ignore.yml
It's a yaml file with a list of names so make it look like
ignore:
- Pidgey
- Rattata
- Pidgeotto
- Spearow
- Ekans
- Zubat
You can either view the map via opening the html file, or by serving it with SimpleHTTPServer (runs on localhost:8000)
To use SimpleHTTPServer:
$ python -m SimpleHTTPServer [port]
The default port is 8080, you can change that by giving a port number.
Anything above port 1000 does not require root.
You will need to set your username(s) in the userdata.js file before opening:
Copy userdata.js.example to userdata.js and edit with your favorite text editor.
put your username in the quotes instead of "username"
If using multiple usernames format like this:
var users = ["username1","username2"];
- eggins -- The first pull request :)
- crack00r
- ethervoid
- Bashin
- tstumm
- TheGoldenXY
- Reaver01
- rarshonsky
- earthchie
- haykuro
- 05-032
- sinistance
- CapCap
- mzupan
- gnekic(GeXx)
- Shoh
- luizperes
- brantje
- VirtualSatai
- dmateusp
- jtdroste
- msoedov
- Grace
- Calcyfer
- asaf400
- guyz
- DavidK1m
- budi-khoirudin
- riberod07
- th3w4y
- Leaklessgfy
- tejado many thanks for the API
- Mila432 for the login secrets
- elliottcarlson for the Google Auth PR
- AeonLucid for improved protos
- AHAAAAAAA for parts of the s2sphere stuff
Bitcoin Address: 1PJMCx9NNQRasQYaa4MMff9yyNFffhHgLu