Skip to content

ryansmccoy/busy-beaver

 
 

Repository files navigation

Busy Beaver

Busy Beaver Logo

Build Status codecov License: MIT Code Style: Black

Chicago Python's Community Engagement Slack bot.

Introduction

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.

Features

Upcoming Events

Busy Beaver integrates with Meetup API to provide details about upcoming events. The interface for users is provided the /busybeaver slash command.

  • /busybeaver next shows details of the upcoming event

GitHub Activity

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 DMing the bot with the phrase: connect. The bot requires users to sign into GitHub to ensure only authorized activity is posted in the channel.

Retweeter

Busy Beaver retweets posts made to the @ChicagoPython Twitter account in the #at-chicagopython channel on the ChiPy Slack.

Roadmap

We are currently working on additional features to improve ChiPy community engagement. Please join the conversation in #busy-beaver-meta on the ChiPy Slack.

Contributing

Busy Beaver is always looking for new contributors! Previous open source experience is not required! Please see CONTRIBUTING.md.

Development Notes

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.

Web Application Stack

Tests

vcr.py records cassettes of requests and responses for new tests, and replays them for previously written tests. Make sure to filter credentials

DevOps

Services

We are grateful to the following organizations for providing free services to open source projects:

API Docs

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.

GitHub Summary Endpoint

  • Start the process to run a summary by making a POST request to /poll-twitter with Authentication header set to token {token} and JSON body:
{
  "channel": "busy-beaver"
}

Retweeter Endpoint

  • Check Twitter feed for new posts to share on Slack by making a POST request to /github-summary with Authentication header set to token {token} and JSON body:
{
  "channel": "at-chicagopython"
}

Creating API Account and Token

admin = ApiUser(username="admin", token="abc123!")
db.session.add(admin)
db.session.commit()

About

The Chicago Python Community Engagement Slack bot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.2%
  • Makefile 2.3%
  • Shell 1.3%
  • Other 1.2%