Chicago Python's Community Engagement Slack bot.
With over four thousand members, the Chicago Python Users Group (ChiPy) is one of the largest Python communities in the world. Slack has become the primary method of communication amongst our members in-between events. We developed an open-source Slack bot, codename: Busy Beaver, to increase community engagement.
We released Busy-Beaver on January 10th at the ChiPy monthly meeting. Slides and video recording from the release announcement are available online.
Busy-Beaver posts daily summaries of public GitHub activity for registered users in the #busy-beaver
channel on the ChiPy Slack. The goal of this feature is to increase engagement by sparking conversations around GitHub activity.
Users sign up for an account by DM
ing the bot with the phrase: connect
. The bot requires users to sign into GitHub to ensure only authorized activity is posted in the channel.
Busy-Beaver retweets posts made to the @ChicagoPython Twitter account in the #at-chicagopython
channel on the ChiPy Slack.
We are currently working on additional features to improve ChiPy community engagement. Please join the conversation in #busy-beaver-meta
on the ChiPy Slack.
Busy-Beaver is always looking for new contributors! Previous open source experience is not required! Please see CONTRIBUTING.md.
Busy-Beaver is an open source project where all artificats (code, Docker image, etc) are online. We use the Twelve-Factor Application Methodology for building services to design the CICD process and to keep information secure.
- traefik - reverse proxy and load balancer
- PostgreSQL
- SQLAlchemy
- Flask
- flask-sqlalchemy
- flask-migrate
- requests
vcr.py
records cassettes of requests and responses for new tests, and replays them for previously written tests. Make sure to filter credentials
- Docker
- Docker-Compose is how we deploy to production
- watchtower (monitors DockerHub, downloads and deploys latest image)
- Ansible
- DigitalOcean
We are grateful to the following organizations for providing free services to open source projects:
- GitHub (code repo, issues)
- DockerHub (hosting Docker images)
- Travis CI (continuous integration platform)
Can make requests to REST endpoints to kick off processes. Currently we are using CRON to run repetitive tasks; this is managed by Ansible to avoid manual configuration.
- Start the process to run a summary by making a
POST
request to/poll-twitter
withAuthentication
header set totoken {token}
and JSON body:
{
"channel": "busy-beaver"
}
- Check Twitter feed for new posts to share on Slack by making a
POST
request to/github-summary
withAuthentication
header set totoken {token}
and JSON body:
{
"channel": "at-chicagopython"
}
admin = ApiUser(username="admin", token="abc123!")
db.session.add(admin)
db.session.commit()