This is a simple implementation of a discord bot that send GeoGuessr-challenge links on demand.
IF YOU ARE PLANNING TO HOST THIS BOT, PLEASE DO KEEP IN MIND THAT IT AGAINST GEOGUESSR'S TERMS OF SERVICE TO HOST A PUBLIC INSTANCE OF THIS BOT AND HOSTING ONE WILL MOST LIKELY GET YOUR GEOGUESSR ACCOUNT DISABLED
- Slash-commands
- Lightning-fast response times
- Minimal resources used
- 1 GeoGuessr pro account
DISCORD_TOKEN=YourBotsToken
APPLICATION_ID=YourBotsAppId
GEOGUESSR_AUTH_TOKEN=YourLoginCookies
RUST_LOG=infoRun the compiled binary (Remember to setup your .env)
./target/release/geoguessr-bot-rsThe bot works by calling the (undocumented) GeoGuessr-API with reverse-engineered http-request-calls.
This allows the bot to be lightning-fast and reliable even in multi-user applications.
As a side product, the bot is able to generate challenges that are not possible to be created with
the GeoGuessr-UI but that are still allowed by the API (such as challenges with massive/tiny per-round time limits).
The bot authenticates with cookies specified in the .env-file.
In discord, just start typing /geo on a channel on which the bot has access to and follow the suggested entries.
There are 3 main subcommands (modes) of the /geo slash-command.
Those are used to specify the gamemode. Available gamemodes at this point are streaks, classic and battle-royale.
These subcommands have their own suboptions that are specified as follows:
- Optional, defaults to
CountryStreak - Available
streaktypes areCountryStreakandUsStateStreak
- Optional, defaults to
Moving is allowed - Specifies whether moving will be allowed in the generated challenge.
- Available options for
movingareMoving is allowedandMoving is not allowed
- Optional, defaults to
Panning is allowed - Specifies whether panning will be allowed in the generated challenge
- Available options for
panningarePanning is allowedandPanning is not allowed
- Optional, defaults to
Zooming is allowed - Specifies whether zooming will be allowed in the generated challenge
- Available options for
zoomingareZooming is allowedandZooming is not allowed
- Optional, defaults to
0(No time limit) - Specifies the per-round time limit for the generated challenge in seconds
- Has to be an integer between
0and(2^31)-1(the maximum value2147483647being roughly equivelant to 24855 days)
- Required
- Specifies the name of the map for the generated challenge.
Internally the bot queries the GeoGuessr-API and chooses the 1st result. The results are the same that show up while using the search function on the GeoGuessr website.
- Optional, same as in
/geo mode streaks
- Optional, same as in
/geo mode streaks
- Optional, same as in
/geo mode streaks
- Optional, same as in
/geo mode streaks
- Optional
- Specifies the url to the the
lobbythat's game should be started.
If no lobby is specified all the other options will be ignored and a lobby will be created.
The url for the created lobby will then be returned as an answer to the slash-command.
- Optional, defaults to
Battle-Royale Countries - Specifies the type of the game that should be started.
- Available options are
Battle-Royale CountriesandBattle-Royale Distance. - Will be ignored if no
lobbyis specified.
- Optional, same as in
/geo mode streaks - Will be ignored if no
lobbyis specified
- Optional, same as in
/geo mode streaks - Will be ignored if no
lobbyis specified
- Optional, same as in
/geo mode streaks - Will be ignored if no
lobbyis specified
- Optional, same as in
/geo mode streaks - Will be ignored if no
lobbyis specified
- Optional, defaults to
The Spy-powerup is available - Specifies whether the Spy-powerup will be available in the started match
- Available options are
The Spy-powerup is availableandThe Spy-powerup is not available - Will be ignored if no
lobbyis specified
- Optional, defaults to
The 5050-powerup is available - Specifies whether the 5050-powerup will be available in the started match
- Available options are
The 5050-powerup is availableandThe 5050-powerup is not available - Will be ignored if no
lobbyis specified