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. Update setup.py with the new version (vX.Y.Z)
  2. Commit into the master branch
  3. Tag the commit with vX.Y.Z
  4. Github Actions will trigger the Release Job when a tagged commit to master is detected
    1. Changelog will be generated and a Github Release as well with the changelog
    2. New python wheel will be built and published to PyPI and attached to the Release
    3. New container image will be built and published to Docker Hub

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.15.3.tar.gz (36.7 kB view details)

Uploaded Source

Built Distribution

Emojirades-0.15.3-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: Emojirades-0.15.3.tar.gz
  • Upload date:
  • Size: 36.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.11

File hashes

Hashes for Emojirades-0.15.3.tar.gz
Algorithm Hash digest
SHA256 a42a3e9c353b87d3ded07e0767d389e8a52309673c902b877449711e84f3f16c
MD5 d5d2e77e09f6567b76005600936200ed
BLAKE2b-256 6b44224b31089b719d04114ab2aaaaf2d33859ac8934b4a7985ad3202e1ce682

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Emojirades-0.15.3-py3-none-any.whl
  • Upload date:
  • Size: 45.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.11

File hashes

Hashes for Emojirades-0.15.3-py3-none-any.whl
Algorithm Hash digest
SHA256 dba4d0d980d4e42fc4635f208559e03ee6c0d6a017a5f6e0b67f034c3654524e
MD5 ab3c8511f070ea7c5774a1e8cf80845b
BLAKE2b-256 3c438c940bec5eb682ea04f2ad3cd5c4dd8dc90203dc604db3fb3d915a591e0b

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