A Zulip bot that partners people for pair programming practice :)
Pairing Bot interacts through private messages on Zulip:
subscribe
to start getting matched with other Pairing Bot users for pair programmingschedule monday wednesday friday
to set your weekly pairing schedule- In this example, Pairing Bot has been set to find pairing partners for the user on every Monday, Wednesday, and Friday
- The user can schedule pairing for any combination of days in the week
skip tomorrow
to skip pairing tomorrow- This is valid until matches go out at 04:00 UTC
unskip tomorrow
to undo skipping tomorrowstatus
to show your current schedule, skip status, and nameunsubscribe
to stop getting matched entirely- This removes the user from the database. Since logs are anonymous, after unsubscribe Pairing Bot has no record of that user
add-review
to add a publicly viewable review to help other users learn about Pairing Bot.get-reviews
to view the 5 most recent reviews for Pairing Bot. You can pass in an integer param to specify the number of reviews to get back.cookie
to get the most amazing cookie recipe!
In addition to the words below, there's an architecture diagram: docs/pairing-bot.excalidraw.svg
- Runs in GCP on App Engine
- Uses Firestore for its database
- Deployed on pushes to the
main
branch with Cloud Build - Onboarding, offboarding, and daily pairing matches are all controlled with cron jobs set in Cloud Scheduler.
The database must be pre-populated with some data:
- A Zulip shared secret ("authentication token") used to validate incoming requests from Zulip
- A Zulip API key used to talk to the Zulip API as the Pairing Bot Zulip user
- A Recurse Center API key used to fetch RC data
Zulip bots must have an owner set in Zulip and may only have one owner at a time. RC Pairing Bot's ownership is given to whoever is working on Pairing Bot at the moment. The current owner is Jeremy Kaplan.
Please contact Charles Eckman and/or Jeremy Kaplan for help getting started. You'll get an overview of Pairing Bot's code and commit access to this repo. You'll also get a tour of the Google Cloud project and access to the resources in it.
You can open a Pull Request for Pairing Bot without contacting the project owners, but that means you'll lose out on the testing environment described below!
Pairing Bot has a test environment where you can validate your changes before changing the main Pairing Bot. It consists of:
- A separate Zulip Bot (Pairing Bot (Test Version)) that you can send commands to.
- A separate GCP Project with its database, logging and cron job setup.
- A
dev
branch in GitHub that automatically deploys pushed changes to the GCP project.
- Contact one of the maintainers of Pairing Bot to learn about the project and gain project permissions.
- Make your code changes on the
dev
branch and push to this GitHub repo. - Check the CloudBuild tab in Google Cloud to make sure that the Pairing Bot project built successfully.
- Test out your changes with the Pairing Bot (Test Version)
- Check the Logs in Google Cloud to make sure your change did not introduce any errors.
- If everything looks good, you can open up a Pull Request comparing
dev
againstmain
. If you have Git permissions from the maintainers then feel free to merge your changes in!
Pull requests are welcome, especially from RC community members!
Pairing Bot is an RC community project.
Your contributions are welcome and encouraged, no matter your prior experience!