{"id":17356513,"url":"https://github.com/nickshine/boca-chica-bot","last_synced_at":"2025-06-23T19:05:58.843Z","repository":{"id":36986334,"uuid":"316104164","full_name":"nickshine/boca-chica-bot","owner":"nickshine","description":"I tweet beach and road closures related to SpaceX Starship testing in Boca Chica, TX.","archived":false,"fork":false,"pushed_at":"2023-03-06T02:09:19.000Z","size":322,"stargazers_count":7,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T07:04:14.417Z","etag":null,"topics":["bot","hacktoberfest","rocket","space","spacex","twitter-api","twitter-bot"],"latest_commit_sha":null,"homepage":"https://twitter.com/BocaChicaBot","language":"Go","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/nickshine.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2020-11-26T02:34:42.000Z","updated_at":"2025-01-04T19:24:16.000Z","dependencies_parsed_at":"2024-06-20T10:08:22.326Z","dependency_job_id":"1437fca1-5860-496d-992a-f9a658497d4e","html_url":"https://github.com/nickshine/boca-chica-bot","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/nickshine/boca-chica-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickshine%2Fboca-chica-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickshine%2Fboca-chica-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickshine%2Fboca-chica-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickshine%2Fboca-chica-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickshine","download_url":"https://codeload.github.com/nickshine/boca-chica-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickshine%2Fboca-chica-bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261539317,"owners_count":23174136,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bot","hacktoberfest","rocket","space","spacex","twitter-api","twitter-bot"],"created_at":"2024-10-15T18:39:44.307Z","updated_at":"2025-06-23T19:05:58.806Z","avatar_url":"https://github.com/nickshine.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :rocket: boca-chica-bot\n\n\u003eI am a Twitter and Discord Bot that posts status updates on [beach and road closures related to SpaceX\nStarship testing][cameron-county-spacex] in Boca Chica, TX.\n\n[![twitter-badge]][@bocachicabot]  \n[![discord-invite-badge]][bocachicabot-discord-invite] \u003csup\u003esee [Discord Installation](#discord-installation) below\u003c/sup\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"500\" src=\"assets/bocachicabot.jpg\"\u003e\n\u003c/p\u003e\n\n![go-version-badge]\n[![go-report-card-badge]][go-report-card]\n[![codecov-badge]][boca-chica-bot-codecov]\n[![pkg-go-dev-badge]][pkg-go-dev]\n\n## How I Work\n\nI periodically pull the published road and beach closures from the [Cameron County SpaceX\npage][cameron-county-spacex] to see if there are any changes or additions, then post status\nupdates via Twitter and Discord as [@BocaChicaBot].\n\nCurrently I will post a tweet/notification when:\n\n- A closure is added or changed\n- A closure has started or ended\n\nI'm written in [Go] and run [serverless] in [AWS] using [AWS Lambda], [DynamoDB], and [EventBridge].\n\n![arch diagram](https://github.com/nickshine/boca-chica-bot/blob/master/assets/boca-chica-bot.drawio.png)\n\n---\n\n## Discord Installation\n\nI am not a typical Discord Bot that responds to commands on demand. **I only post notifications to\nthe channels in the Discord server you add me to.**\n\n**I will post to *all* channels in the server by default**. This is likely not what you want, so\nbe sure to [disable the Send Messages\npermission][discord-disable-send-messages] for the BocaChicaBot Role in the channels/categories\nyou'd like to disable me in.\n\n[![discord-invite-badge]][bocachicabot-discord-invite]\n\n---\n\n## Deployment\n\n[Terraform Cloud] is utilized for deploying my infrastructure. I have two workspaces (access required to see these):\n\n- [boca-chica-bot-test][terraform-cloud-workspace-test]\n- [boca-chica-bot-prod][terraform-cloud-workspace-prod]\n\n### Terraform Cloud Workspace Setup\n\nRequired Environment Variables for these workspaces in Terraform Cloud:\n\n- `AWS_ACCESS_KEY_ID`\n- `AWS_SECRET_ACCESS_KEY`\n- `TF_CLI_ARGS_plan=-var-file=workspaces/test.tfvars` (for test)\n- `TF_CLI_ARGS_plan=-var-file=workspaces/prod.tfvars` (for prod)\n\nRequired Terraform Variables in Terraform Cloud:\n\n- `twitter_consumer_key`\n- `twitter_consumer_secret`\n- `twitter_access_secret`\n- `twitter_access_token`\n- `discord_bot_token`\n\nThese are used to populate the Parameter Store with the required Twitter and Discord API creds.\n\n## Local Development\n\nCreate a `.env` file with these env vars set:\n\n```sh\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nAWS_REGION=us-east-1\nDEBUG=true\nDISABLE_PUBLISH=true\nTWITTER_ENVIRONMENT=test\n```\n\nThe `.env` file is leveraged in the `lambci/lambda:go1.x` Docker container used to run the lambda\nhandler locally:\n\n```sh\nmake run\n```\n\n---\n\n## Reference\n\n- [AWS SDK for Go][aws-sdk-go]\n- [AWS Lambda]\n- [DynamoDB]\n- [AWS Systems Manager Parameter Store][aws-param-store]\n- [Twitter API Docs]\n- [Twitter API authentication][twitter-api-auth]\n\n[aws]:https://aws.amazon.com/\n[aws lambda]:https://aws.amazon.com/lambda/\n[aws-param-store]:https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html\n[aws-sdk-go]:https://docs.aws.amazon.com/sdk-for-go/\n[cameron-county-spacex]:https://www.cameroncountytx.gov/spacex/\n[codecov-badge]:https://codecov.io/gh/nickshine/boca-chica-bot/branch/master/graph/badge.svg?token=171LQ10HAP\n[discord-disable-send-messages]:https://support.discord.com/hc/en-us/articles/206029707-How-do-I-set-up-Permissions-\n[discord-invite-badge]:https://img.shields.io/static/v1?label=Discord\u0026logo=Discord\u0026message=Invite%20@BocaChicaBot\u0026colorB=7289DA\n[dynamodb]:https://aws.amazon.com/dynamodb/\n[EventBridge]:https://aws.amazon.com/eventbridge/\n[go]:https://golang.org/\n[go-report-card]:https://goreportcard.com/report/github.com/nickshine/boca-chica-bot\n[go-report-card-badge]:https://goreportcard.com/badge/github.com/nickshine/boca-chica-bot\n[go-version-badge]:https://img.shields.io/github/go-mod/go-version/nickshine/boca-chica-bot\n[pkg-go-dev]:https://pkg.go.dev/github.com/nickshine/boca-chica-bot\n[pkg-go-dev-badge]:https://pkg.go.dev/badge/github.com/nickshine/boca-chica-bot\n[serverless]:https://aws.amazon.com/serverless/\n[terraform cloud]:https://www.hashicorp.com/products/terraform\n[terraform-cloud-workspace-test]:https://app.terraform.io/app/nickshine/workspaces/boca-chica-bot-test\n[terraform-cloud-workspace-prod]:https://app.terraform.io/app/nickshine/workspaces/boca-chica-bot-prod\n[twitter api docs]:https://developer.twitter.com/en/docs/twitter-api\n[twitter-api-auth]:https://developer.twitter.com/en/docs/authentication/overview\n[twitter-badge]:https://img.shields.io/twitter/follow/BocaChicaBot?style=social\n[@BocaChicaBot]:https://twitter.com/bocachicabot\n[bocachicabot-discord-invite]:https://discord.com/api/oauth2/authorize?client_id=782492119063199744\u0026permissions=2048\u0026scope=bot\n[boca-chica-bot-codecov]:https://codecov.io/gh/nickshine/boca-chica-bot\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickshine%2Fboca-chica-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickshine%2Fboca-chica-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickshine%2Fboca-chica-bot/lists"}