A Discord bot for sending GeoGuessr challenge links that uses the GeoGuessr API written in rust.

Overview

GeoGuessr-bot-rs

This is a simple implementation of a discord bot that send GeoGuessr-challenge links on demand.

Features:

  • Slash-commands
  • Lightning-fast response times
  • Minimal resources used

Requirements:

  • 1 GeoGuessr pro account

Setup:

An example of the .env file

DISCORD_TOKEN=YourBotsToken
APPLICATION_ID=YourBotsAppId

GEOGUESSR_AUTH_TOKEN=YourLoginCookies

RUST_LOG=info

Run the compiled binary (Remember to setup your .env)

./target/release/geoguessr-bot-rs

How the Bot works

The 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.

Usage

Basically:

In discord, just start typing /geo on a channel on which the bot has access to and follow the suggested entries.

Walkthrough of different subcommands and ther suboptions:

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:

/geo mode streaks

streaktype:
  • Optional, defaults to CountryStreak
  • Available streaktypes are CountryStreak and UsStateStreak
moving:
  • Optional, defaults to Moving is allowed
  • Specifies whether moving will be allowed in the generated challenge.
  • Available options for moving are Moving is allowed and Moving is not allowed
panning:
  • Optional, defaults to Panning is allowed
  • Specifies whether panning will be allowed in the generated challenge
  • Available options for panning are Panning is allowed and Panning is not allowed
zooming:
  • Optional, defaults to Zooming is allowed
  • Specifies whether zooming will be allowed in the generated challenge
  • Available options for zooming are Zooming is allowed and Zooming is not allowed
time:
  • 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 0 and (2^31)-1

I don't know if the GeoGuessr-API actually imposes any limitations for the time-limit, but in my code the value for it is stored in an i32 and therefore it can't be greated than 2147483647 ~ 24855 days

/geo mode classic

map:
  • 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.

moving:
  • Optional, same as in /geo mode streaks
panning:
  • Optional, same as in /geo mode streaks
zooming:
  • Optional, same as in /geo mode streaks
time:
  • Optional, same as in /geo mode streaks

/geo mode battle-royale

lobby:
  • Optional
  • Specifies the url to the the lobby that'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.

gametype:
  • Optional, defaults to Battle-Royale Countries
  • Specifies the type of the game that should be started.
  • Available options are Battle-Royale Countries and Battle-Royale Distance.
  • Will be ignored if no lobby is specified.
moving:
  • Optional, same as in /geo mode streaks
  • Will be ignored if no lobby is specified
panning:
  • Optional, same as in /geo mode streaks
  • Will be ignored if no lobby is specified
zooming:
  • Optional, same as in /geo mode streaks
  • Will be ignored if no lobby is specified
time:
  • Optional, same as in /geo mode streaks
  • Will be ignored if no lobby is specified
spy:
  • 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 available and The Spy-powerup is not available
  • Will be ignored if no lobby is specified
5050:
  • 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 available and The 5050-powerup is not available
  • Will be ignored if no lobby is specified
You might also like...
🦜 A hassle-free, highly performant, host it yourself Discord music bot built with Serenity in Rust. Powered by youtube-dl and Genius.

🦜 A hassle-free, highly performant and fast evolving Discord music bot built with Serenity in Rust. Deployment Usage Just create a bot account, copy

A discord bot that safely executes whatever rust you throw at it. Remote code execution as a service
A discord bot that safely executes whatever rust you throw at it. Remote code execution as a service

RustBot Bot is still under development and not ready for production use RustBot is a discord bot that executes whatever rust code you throw at it. In

Small Rust program for sending messages to Telegram channels.

tg-send: a small Rust program for sending Telegram messages Send messages to a group/channel via the Bot API from the command line; it's super simple

A simple bot for discord.

Rusky Um simples bot para o discord! 🚀 Executando ⚠️ Antes de tudo você precisa do Rust Instalado você pode instalar clicando aqui Preparando Primeir

A Discord bot for lichess and Rosen related things
A Discord bot for lichess and Rosen related things

liro Liro is a Discord bot that follows in the footsteps of Lichess-discord-bot, without necessarily aiming to replace it. The main pain point that th

Hi I'm Sophy, a discord bot in devlopment, soon I'll be available to help everyone (❁´◡`❁)

Sophy Bot Hi I'm Sophy, a discord bot in devlopment, soon I'll be available to help everyone (❁´◡`❁) Contribution Do you like me and want to help me?

🦴🤖 // A Discord bot about collecting all the Borpa

🦴 🤖 Borpa Bot Borpa Bot is a Discord bot about collecting all the Borpa possible. If you dont know what a Borpa is you can find it here Crate Descri

A scriptable discord bot (WIP)

Status This project is currently a VERY EARLY WORK IN PROGRESS. Contact me on discord for more details: Jonas747#0001 (105487308693757952) BotLoader (

The best discord bot to annoy @a3mat
The best discord bot to annoy @a3mat

A3mat v pomoyke The best discord bot to annoy @a3mat Usage: This command moves pinged users n times: move number [users...] This command moves ping

Comments
  • Battle Royale does not work at all

    Battle Royale does not work at all

    This is due to the frequent changes to the API implemented by GeoGuessr. I have no intentions to fix this, because I don't feel like reverse-engineering a new API once in a month. Feel free to contribute.

    bug wontfix 
    opened by lajp 0
Owner
Luukas Pörtfors
An 18-year-old nerd from Finland. My text editor is vim.
Luukas Pörtfors
A rust(serenity) based discord bot for the hacksquad discord server

A Discord Bot for Hacksquad How to Deploy? Requirements Docker Docker Compose Steps To Run Copy the docker-compose.yml and .env.example files to your

HackSquad 5 Jan 4, 2023
A Discord bot focused on addressing the inherent problems with Discord, to allow a more socialist/anarchist organization of servers.

ACABot A Discord bot focused on addressing the inherent problems with Discord, to allow a more socialist/anarchist organization of servers (or "guilds

null 4 May 3, 2022
Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers.

Arcadia Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers. Contributing Always run fmt.sh before making a Pull Request! MacOS

InfinityBotList 3 Dec 15, 2022
This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity.

bottom-bot This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity. Ever had this pro

Bottom Software Foundation 11 Dec 10, 2022
A multipurpose (including music) Discord bot written in Rust

filloabot-rs A multipurpose (including music) Discord bot. This is a full rewrite using Rust of the original FilloaBot. Some features that were consid

FilloaBot 2 Oct 21, 2022
A blazingly fast 🔥 Discord bot written in Rust

rusty-bot ?? A blazingly fast ?? Discord bot written in Rust. Commands name use !rm <count> deletes old messages !meme <subreddit> sends a random meme

Asandei Stefan 2 Oct 14, 2022
A Discord bot, written in Rust, that generates responses using the LLaMA language model.

llamacord A Discord bot, written in Rust, that generates responses using the LLaMA language model. Built on top of llama-rs. Setup Model Obtain the LL

Philpax 6 Mar 20, 2023
A Discord bot, written in Rust, that generates responses using the LLaMA language model.

llamacord A Discord bot, written in Rust, that generates responses using the LLaMA language model. Built on top of llama-rs. Setup Model Obtain the LL

Rustformers 18 Apr 9, 2023
Powerfull Discord Raid Bot written in Rust, use VPN / Proxy because creating 200 channels in 10s Will ratelimit you.

Harakiri-Rust This the first Discord Raid Bot made in RustLang I recommend you use with a VPN or a Proxy to evade Discord Ratelimit. If bot doesn't st

Marco 6 May 1, 2023
A repository full of manually generated hand curated JSON files, which contain the API Types that the Discord API returns.

Discord API Types A repository full of manually generated hand curated JSON files, which contain the API Types that the Discord API returns. Also did

Unofficial Discord Documentation 1 Sep 16, 2022