Skip to main content

A Slack bot that understands the Emojirades game!

Project description

emojirades

Slack bot that understands the emojirades game and handles score keeping

Build Status PyPI version

Installation Guide

# Preferably run on a virtualenv

Install the dependencies

pip3 install --upgrade pip wheel

pip3 install -r requirements.txt --upgrade

# If you're developing locally
pip3 install -r test_requirements.txt --upgrade

Install the module ( For Dev )

cd emojirades
pip3 install -e .

Run the tests

black .
pytest

Set environment variables

If you're using the built in AWS functionality to persist your data, you'll need to set the appropriate AWS_ environment variables.

Run the daemon for a single workspace

This command uses locally stored files to keep the game state:

emojirades single --score-file scores.csv --state-file state.json --auth-file auth.json

This command uses S3 stored files to keep the game state:

`emojirades single --score-file s3://bucket/scores.csv --state-file s3://bucket/state.json --auth-file s3://bucket/auth.json

Run the daemon for multiple workspaces

Here we provide a local folder of workspaces and an optional set of workspace ids (will load all in folder by default):

emojirades mulitple --workspaces-dir path/to/workspaces [--workspace-id A1B2C3D4E]

Here we provide an S3 path of workspaces and an optional set of workspace ids (will load all in folder by default):

emojirades multiple --workspaces-dir s3://bucket/path/to/workspaces [--workspace-id A1B2C3D4E]

Here we provide an S3 path of workspaces and an AWS SQS queue to listen to for new workspaces:

emojirades multiple --workspaces-dir s3://bucket/path/to/workspaces --onboarding-queue workspace-onboarding-queue

The workspaces directory must be in the following format (local or s3):

./workspaces

./workspaces/shards
./workspaces/shards/0
./workspaces/shards/0/A1B2C3D4E.json
./workspaces/shards/0/Z9Y8X7W6V.json

./workspaces/directory
./workspaces/directory/A1B2C3D4E
./workspaces/directory/A1B2C3D4E/state.json
./workspaces/directory/A1B2C3D4E/scores.json
./workspaces/directory/A1B2C3D4E/auth.json
./workspaces/directory/Z9Y8X7W6V
./workspaces/directory/Z9Y8X7W6V/state.json
./workspaces/directory/Z9Y8X7W6V/scores.json
./workspaces/directory/Z9Y8X7W6V/auth.json

The concept above with the two different directories is shards to allow for the bot to scale out horizontally. As the bot(s) get busier, the operator can increase the shard (bot instance) count and new onboarded workspaces are allocated to the next available shard with capacity.

The emojirades bot will take care of running multiple games across different channels in a single workspace.

Service configuration

cp emojirades.service /etc/systemd/system/
sudo chmod 0664 /etc/systemd/system/emojirades.service

# Edit the /etc/systemd/system/emojirades.service file and update the user and group

cp emojirades.config /etc/emojirades
sudo chmod 0400 /etc/emojirades

# Edit the /etc/emojirades config file with your configuration for the bot

sudo systemctl daemon-reload
sudo systemctl enable emojirades
sudo systemctl start emojirades

Release process (for master branch)

  1. Create release branch containing new version in setup.py and Dockerfile
  2. Perform a PR into master
  3. Perform release in GitHub
  4. TravisCI will automatically build and deploy on a tagged commit into master (the release does this)
  5. Docker Hub will automatically build and deploy on a tagged commit into master (the release does this)

Building the Container Image

docker build --pull --no-cache -t emojirades/emojirades:X.Y.Z -t emojirades/emojirades:latest .

Running the Container

In this example we run the game with S3 hosted configuration for a single workspace.

docker run -d \
  --name emojirades \
  --restart=always \
  -v "/path/to/your/.aws/:/root/.aws/:ro" \
  -e "AWS_PROFILE=emojirades" \
  emojirades/emojirades:X.Y.Z \
    --score-file s3://bucket/path/to/scores.json \
    --state-file s3://bucket/path/to/state.json \
    --auth-file s3://bucket/path/to/auth.json \
    -vv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Emojirades-0.13.1.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

Emojirades-0.13.1-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

File details

Details for the file Emojirades-0.13.1.tar.gz.

File metadata

  • Download URL: Emojirades-0.13.1.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.3

File hashes

Hashes for Emojirades-0.13.1.tar.gz
Algorithm Hash digest
SHA256 6482eb17369e91ff5645823ccf7c498bb787ed328c5dd58e4d4d3afe56bc259f
MD5 531fb25ab3c59ba5d3ff837e94ed0712
BLAKE2b-256 e45ef33852224b9a1ce2acf3f0e5838d23ff618094532471a4a34f87d9c1b06a

See more details on using hashes here.

File details

Details for the file Emojirades-0.13.1-py3-none-any.whl.

File metadata

  • Download URL: Emojirades-0.13.1-py3-none-any.whl
  • Upload date:
  • Size: 45.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.3

File hashes

Hashes for Emojirades-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1b7ebbd18a1caa226412149b0f37254508b518b071cb3abf7871dbc4a4e022a
MD5 ec52bd6868bcc6a6962b61037c5979b1
BLAKE2b-256 e3be625710cc4c0f9803408cda90b58c0bfd975fe842f39dad5745a9fb5e35fc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page