A Slack bot that understands the Emojirades game!
Project description
emojirades
Slack bot that understands the emojirades game and handles score keeping
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)
- Update
setup.py
with the new version (vX.Y.Z) - Commit into the master branch
- Tag the commit with vX.Y.Z
- Github Actions will trigger the Release Job when a tagged commit to master is detected
- Changelog will be generated and a Github Release as well with the changelog
- New python wheel will be built and published to PyPI and attached to the Release
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a42a3e9c353b87d3ded07e0767d389e8a52309673c902b877449711e84f3f16c |
|
MD5 | d5d2e77e09f6567b76005600936200ed |
|
BLAKE2b-256 | 6b44224b31089b719d04114ab2aaaaf2d33859ac8934b4a7985ad3202e1ce682 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | dba4d0d980d4e42fc4635f208559e03ee6c0d6a017a5f6e0b67f034c3654524e |
|
MD5 | ab3c8511f070ea7c5774a1e8cf80845b |
|
BLAKE2b-256 | 3c438c940bec5eb682ea04f2ad3cd5c4dd8dc90203dc604db3fb3d915a591e0b |