A Discord bot for managing team meetings with structured updates, progress tracking, and automated reporting.
- Create Meetings: Generate unique meeting IDs with
/meetingbot new - Submit Updates: Use interactive modals to submit progress, blockers, and goals with
/meetingbot update - Close Meetings: Lock meetings and prevent further updates with
/meetingbot close - Meeting Summary Static Site: Closing a meeting automatically generates a static web page with all attendees' updates that you can share via an S3 presigned url
- Python 3.13.x
- Discord account and Discord application
- Non-root AWS account
- AWS CLI
The only infrastructure required for local development is an S3 bucket. You can create it manually or comment out the other resources in the terraform file for development (preferred because the configuration will be done for you). After creating the S3 bucket, copy example.env into a file named .env and fill out the variables.
Run the bot with Python
pip install -r requirements.txt
python main.pyRun the bot with Docker
docker build -t meetingbot .
docker run -v "$PWD/json":/meetingbot/json meetingbot:latestIronically, deployment is even easier. The only prerequisite is to create an EC2 key pair named "aws-ec2-key-pair" and download the private key. First, configure your AWS credentials with aws configure in the command line. Then, do the following commands to provision your infrastructure.
terraform init
terraform plan -out tfplan
terraform apply "tfplan"You will be prompted to fill out some variables. You can read their descriptions in variables.tf. Your bot should be running in your servers after a couple of minutes!
You can iterate on the HTML template without running the bot or uploading to S3.
-
Ensure you have at least one local meeting JSON (from a bot run) under
json/<meeting_id>/meeting.json.- Alternatively, copy an existing file and edit it for faster iteration.
-
Render the HTML report locally:
python -m src.report_preview --input json/<meeting_id>/meeting.json --output preview.html
-
Open the generated file in a browser:
This project is open source. Feel free to modify and distribute according to your needs.
Contributions are welcome! Please feel free to submit issues and pull requests.