This is a simple Zulip bot that converts a Zulip conversation into an event context. People can then use simple commands to rsvp to an event, set the hour, time, place, and easily ping every person who RSVP'ed.
- Make your pull requests to the
- Write tests for any new command or feature introduced
- Make sure the requirements.txt file is kept up to date
- Make sure any new messages that the bot sends publicly or privately follow the RC Social Rules. It takes a village, people!
- New features are TOTALLY AWESOME, but RSVPBot has a few open issues you can take a look at if you want to get familiarized with the code or you're looking for ideas on how to contribute.
- HAVE FUN PEOPLE YAY
# Required export ZULIP_RSVP_EMAIL="<bot-email>" export ZULIP_RSVP_KEY="<bot-key>" # Optional export ZULIP_RSVP_SITE="https://your-zulip-site.com" # default is https://recurse.zulipchat.com export ZULIP_KEY_WORD="rsvp" # default is rsvp export GOOGLE_APPLICATION_CREDENTIALS="/path/to/file" # default is None export GOOGLE_CALENDAR_ID="firstname.lastname@example.org" # default is None
To get set up with Google Application Credentials, see the Google Credentials Setup Instructions.
First, make sure python requirements are installed:
pip install -r requirements.txt
Then, to run the bot:
Updating User Email mapping
RSVPBot stores a mapping of email addresses to names, which is updated every time a
realm_user event is received. Since rsvp responses are stored by email address, this
mapping is used to convert the email addresses into names for commands like
rsvp summary. If running this bot for the first time, you can run
which will download all users/email addresses from zulip and populate the json file dictionary. This command is safe to run multiple times.
||Marks you as attending this event.|
||Marks you as not attending this event.|
||Initializes a thread as an RSVPBot event. Must be used before any other command.|
||Shows this handy table.|
||Pings everyone that has RSVP'd so far.|
||Sets the time for this event (24-hour format) (optional)|
||Sets the date for this event (see "date format" section for supported formats) (optional, defaults to the date the event was created with
||Sets this event's description to DESCRIPTION (optional)|
||Sets the place for this event to PLACE_NAME (optional) (alias:
||Set the attendance limit for this event to LIMIT. Set LIMIT as 0 for infinite attendees.|
||Cancels this event (can only be called by the caller of
||Moves this event to another stream/topic. Requires full URL for the destination (e.g.'https://zulip.com/#narrow/stream/announce/topic/All.20Hands.20Meeting') (can only be called by the caller of
||Displays a summary of this event, including the description, and list of attendees.|
||Lists all the awesome people that made RSVPBot a reality.|
rsvp set date command supports US-style dates (
mm/dd/yy(yy)), ISO 8601 dates (
yyyy-mm-dd), and tries to understand most human dates. The following (non exhaustive) examples are all valid ways to set the date:
rsvp set date 08/29/16 rsvp set date 2016-08-29 rsvp set date today rsvp set date tomorrow rsvp set date in 2 days rsvp set date tuesday next week