{"id":26068549,"url":"https://github.com/itsrainingmani/bogo-bot","last_synced_at":"2026-05-18T04:38:55.896Z","repository":{"id":229904027,"uuid":"777843145","full_name":"itsrainingmani/bogo-bot","owner":"itsrainingmani","description":"Zulip Bot for pairing Recursers wanting BOGO Lunch deals","archived":false,"fork":false,"pushed_at":"2024-04-16T20:39:04.000Z","size":64,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-01T01:00:53.596Z","etag":null,"topics":["bogo","flask","zulip-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itsrainingmani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-26T15:52:20.000Z","updated_at":"2024-04-01T19:23:04.000Z","dependencies_parsed_at":"2024-04-16T17:04:46.420Z","dependency_job_id":"b679127f-6204-4800-9966-4fb067919bbe","html_url":"https://github.com/itsrainingmani/bogo-bot","commit_stats":null,"previous_names":["itsrainingmani/bogo-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/itsrainingmani/bogo-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsrainingmani%2Fbogo-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsrainingmani%2Fbogo-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsrainingmani%2Fbogo-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsrainingmani%2Fbogo-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsrainingmani","download_url":"https://codeload.github.com/itsrainingmani/bogo-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsrainingmani%2Fbogo-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33165079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bogo","flask","zulip-bot"],"created_at":"2025-03-08T22:26:12.688Z","updated_at":"2026-05-18T04:38:55.840Z","avatar_url":"https://github.com/itsrainingmani.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RC UberEats BOGO Bot\n\nThere are many UberEats Buy One Get One deals available around 397 Bridge St. This is a Zulip bot that will pair lunchers so people can take advantage of the BOGO Deals.\n\nThis project is directly inspired by the experience of Recursers at the Brooklyn Hub \u0026 by the [RC Eats](https://recurse-eats.dim.codes/) project created by [Angelo Lloti (W2'24)](https://github.com/XdimGG)\n\n## Create Zulip Bot\n\nAdd a bot to Zulip by following the instructions here - \u003chttps://zulip.com/help/add-a-bot-or-integration#add-a-bot-or-integration_1\u003e\n\nPlease make sure that the type of your bot is `Outgoing Webhook` since the bot will be receiving new messages via HTTP POST requests from Zulip.\n\n```text\nname: whatever\nemail: whatever\nbot type: outgoing webhook\nendpoint URL: $DOMAIN/webhooks, e.g. `\u003cYOUR-DOMAIN-HERE\u003e.ngrok-free.app/webhooks`\n\n\u003e interface: generic\n```\n\n## Install Python Requirements\n\n⚠️ This project uses python 3.12.0. Other python versions are not guaranteed to work.\n\nInstall the necessary requirements with -\n\n```shell\npip install -r requirements.txt\n```\n\n## Set up ngrok\n\nWe are using ngrok to serve our localhost server publically. You can use any option (eg. [Tailscale Funnel](https://tailscale.com/kb/1223/funnel), [localtunnel](https://github.com/localtunnel/localtunnel)) that allows you to serve localhost to a static publicly available URL.\n\nMake an account and get a static URL [here](https://dashboard.ngrok.com/get-started/setup/macos)\n\nExample (use your static URL instead):\n\n```shell\nbrew install ngrok/ngrok/ngrok\nngrok config add-authtoken \u003cTOKEN\u003e\n```\n\n## Serve Local Web Server\n\n```shell\nDOMAIN=\u003cYOUR-DOMAIN-HERE\u003e.ngrok-free.app\nPORT=8000\nngrok http --domain=$DOMAIN $PORT\n```\n\n## Run Flask Server\n\n```shell\nflask --app server run --port 8000\n```\n\nIf you'd like to hot-reload your server on code changes, add the `--debug` flag to the above command.\n\n## DM the bot you created to test\n\nThe currently supported commands are -\n\n```markdown\n- `show deals`: to display available BOGO deals\n- `status`: to show your subscription status\n- `schedule`: to set your weekly pairing schedule\n- `subscribe`: to start getting matched with other BOGOBot users for pair lunching\n- `unsubscribe`: to stop getting matched\n```\n\n## TO DO\n\n- user functionality\n\n  - [x] user scheduling preferences\n\n- pairing functionality\n\n  - [x] update command list for when users are in the process of getting paired?\n  - [x] determine what pref info to get from users\n    - deals are going up and down very frequently, should we present food/deal pref option with the risk it goes down, or do we keep it so people getting paired have an idea of what the other person wants to eat?\n    - i was having a hard time getting the bot to list the deals in a numbered list (stef)\n    - are users on the queue when they respond y to the bot or after they respond with their time/pref info\n    - can they get put on the queue at other times during the day or is this lunch only? if we have dinner too, can people be matched for multiple meals a day?\n    - can people have a command to see who is currently on the queue with time/food pref?\n    - will 15-30 min messages be sent out to people who haven't matched/skipped about who's on the queue?\n  - [x] structure daily database/queue (architecture.md)\n  - [ ] pairing logic - timing, pref, etc\n  - [ ] followup for weekly stats\n\n- unit testing\n\n  - [x] check zulip rc client connection\n  - [x] check supabase connection\n  - [ ] load in testing db\n  - [ ] load in deals json\n\n- integration testing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsrainingmani%2Fbogo-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsrainingmani%2Fbogo-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsrainingmani%2Fbogo-bot/lists"}