A discord bot that is used for guessing the speed of a pitch and getting points based on how close you are
Go to file
Zed 3525ea42e1 Jack's Changes (#1)
First merge after adding branch

Co-authored-by: c0de <c0de@c0de.dev>
Reviewed-on: #1
Co-authored-by: Zed <benolken5@gmail.com>
Co-committed-by: Zed <benolken5@gmail.com>
2024-04-23 22:19:20 +00:00
.vscode Sync vscode settings because why not 2022-11-11 20:16:25 -06:00
database generate the uuid on the model 2022-12-09 21:34:32 -06:00
discord_client It's baseball, not ghostball :) 2022-11-12 01:00:24 -06:00
game Jack's Changes (#1) 2024-04-23 22:19:20 +00:00
.gitignore Create lint log 2022-10-24 20:05:21 -05:00
Dockerfile Jack's Changes (#1) 2024-04-23 22:19:20 +00:00
lint.sh Get rid of original/reference code, move everything to root 2022-11-11 20:45:49 -06:00
main.py It's baseball, not ghostball :) 2022-11-12 01:00:24 -06:00
Pipfile I Completely disagree with this decision. 2022-12-10 12:36:36 -06:00
Pipfile.lock I Completely disagree with this decision. 2022-12-10 12:36:36 -06:00
readme.md Update readme with correct information 2022-11-12 01:01:27 -06:00
run.sh Get rid of original/reference code, move everything to root 2022-11-11 20:45:49 -06:00

Discord Baseball Bot

A bot that will listen on a discord channel, accpeting commands.

The main commands are !braveball, !guess [int] and !resolve [int]
Use the !help command for more information


  1. You will need a discord bot and an auth token
  2. You will need access to a server that runs Docker
    • For development, docker is optional. See Development section of Usage below


Points are determined by the difference, which comes from this formula:

difference = abs(guess - pitch_value)

if difference > 500:
    difference = 1000 - difference

The point scale is a range based on the difference

minimum maximum points
(no difference) (no difference) 15
1 20 8
21 50 5
51 100 3
101 150 2
151 200 1
200 494 0
495 500 -5

Points are added to a running total for each player at the end of each round.


If you are using docker:

  1. You need to determine which version of the bot to use
    • If you are using a raspberry pi, you want archarm64
    • Otherwise, you most likely want archx64

Production with docker

This docker command is the minimum required to run the bot:

docker run -d -e discord_token="<discord token> c0defox/baseballbot:<version>"

Note: The above will not persist the database through restarts

If you want to keep the database, use the following command:

docker run -d -v database:/database -e database_path="/database/baseball.db" -e discord_token="<discord token>" c0defox/baseballbot:<version>

Development with docker

  1. Modify the source code
  2. Run docker build -t baseballbot:<tag> .
  3. Run the same docker commands you would in production

note: You will probably want to purge your builds after a while, as they will eventually take up space

Development without docker

Python requirements can be installed with pipenv install (install pipenv with pip3 install pipenv)

  1. Install the python requirements
  2. Add discord token to run.sh
  3. Modify the source code
  4. Start run.sh in the terminal (restart as you make code changes)

If you modify the source code, you should also run lint.sh. This will warn you of linting problems that you can choose to fix, as well as format all of the code to the same standard automatically (usually this will resolve linting warnings)


Things that would be nice to add:

  • (yaml) Config file for tweaking various internals
  • Admin commands: table clear, record deletion, record update
  • Audit log of admin commands, and previous values for anything changed