{"id":20393662,"url":"https://github.com/j-fuentes/bdaybot-slack","last_synced_at":"2026-05-17T10:37:35.728Z","repository":{"id":93223644,"uuid":"177410861","full_name":"j-fuentes/bdaybot-slack","owner":"j-fuentes","description":"A bot that says happy birthday on Slack.","archived":false,"fork":false,"pushed_at":"2020-03-13T14:53:01.000Z","size":525,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-01T02:51:43.552Z","etag":null,"topics":["golang","google-sheets","slack","slack-bot","slackbot"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/j-fuentes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-03-24T12:20:38.000Z","updated_at":"2024-06-19T07:33:50.271Z","dependencies_parsed_at":"2023-04-12T16:39:27.093Z","dependency_job_id":null,"html_url":"https://github.com/j-fuentes/bdaybot-slack","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-fuentes%2Fbdaybot-slack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-fuentes%2Fbdaybot-slack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-fuentes%2Fbdaybot-slack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-fuentes%2Fbdaybot-slack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/j-fuentes","download_url":"https://codeload.github.com/j-fuentes/bdaybot-slack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241945102,"owners_count":20046857,"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":["golang","google-sheets","slack","slack-bot","slackbot"],"created_at":"2024-11-15T03:49:36.967Z","updated_at":"2026-05-17T10:37:30.694Z","avatar_url":"https://github.com/j-fuentes.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bdaybot-slack\n\nThis is a program that reads a list of people with their birthdays from a Google Spreadsheet, and says happy bday in Slack.\n\nThis is intended to be run by some external mechanism once a day. I run it in a Kubernetes CronJob (see section [**Run on Kubernetes**](./README.md#run-on-kubernetes) section below).\n\n[![demo](./docs/imgs/demo.gif)](https://drive.google.com/file/d/1C6o5qxoTbUxGmmxbXkJMcEWHrllnBxxo/view?usp=sharing)\n\n## Inputs\n\nThis uses two input files:\n\n**config.json**\n\nHolds all the configurable options for the app. You can just copy and edit the example in this repo ([config.json.example](./config.json.example)).\n\nHere you have a brief description of the fields in the file:\n\n- `calendar.google_sheet.url`: url to the Google spreadsheet with the list of bdays. You can [make a copy from this example](https://docs.google.com/spreadsheets/d/1f1GJ7MnUgQOC-RsbB4Vi_m3YnjQqTNbE5_-hyIbfuUk/edit?usp=sharing).\n\n- `oauth2.client_id` and `oauth2.client_secret`: these are the credentials of the client part of the oauth client, used for the authentication against Google. You can find more info about how to get this setup [here](./docs/client_oauth.md).\n\n- `slack.webhook_url`: Slack webhook url where to send the happy bday messages. See [instructions here](./docs/slack_webhooks.md). \n\n- `slack.admin_webhook_url`: Slack webhook url where to send errors, or other events. See [instructions here](./docs/slack_webhooks.md).\n\n- `slack.salute_prefix` and `slack.salute_suffix`: These are used to compose the happy birthday message, which would be something like `\u003cprefix\u003e@alice and @bob\u003csuffix\u003e`. You can use emojis!\n\n**token.json**\n\nHolds the information that the app uses to authenticate against Google in order to get access to the spreadsheet.\n\nYou can generate it by running the tool with `-auth` argument.\n\n## Standalone run\n\n### Using the binary\n\nYou can execute the auth flow by running `bdayboy -auth`.\n\nThe normal operation is executed when you call the binary without arguments: `bdaybot`.\n\nThere is a help command that shows the different configurable options: `bdaybot -help`.\n\nIn order to log some interesting messages on screen run `bdaybot -logtostderr`.\n\nIt will try to read `config.json` and `token.json` from the working directory.\n\n### Using docker\n\nYou can use the same functionality with the docker image. Notice you will need to mount `config.json` and `token.json`:\n\n```\n# From the root directory of this repository\n\ntouch token.json\ncp config.json.example config.json # Create the config.json file from the test one for the first run\ndocker run -ti -v $PWD/token.json:/token.json -v $PWD/config.json:config.json josefuentes/bdaybot-slack -auth\n```\n\nThe docker image logs event to stderr by default.\n\n```\ndocker run -ti -v $PWD/config.json:/config.json -v $PWD/token.json:/token.json josefuentes/bdaybot-slack\n```\n\n## Run on Kubernetes\n\nThis is a way of running this in Kubernetes using a [CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/).\n\nCreate the `bdaybot` namespace and the CronJob by running:\n\n```\nkubectl create -f kubernetes.yml\n```\n\nThen, create the secrets for the config and the auth token by running:\n\n```\nkubectl -n bdaybot create secret generic bdaybot-config --from-file=/tmp/bday/config.json\n```\n\nand\n\n```\nkubectl -n bdaybot create secret generic bdaybot-token --from-file=/tmp/bday/token.json\n```\n\nThe CronJob is configured to run daily (check [`kubernetes.yml`](./kubernetes.yml))\n\n## Build from scratch\n\n### Using Docker\n\nYou can build a minimal docker image by running:\n\n```\ndocker build -t \u003cname of your image\u003e .\n```\n\n### Just Go\n\nJust run `go build -o bdaybot` and a binary called `bdaybot` will be generated.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-fuentes%2Fbdaybot-slack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fj-fuentes%2Fbdaybot-slack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-fuentes%2Fbdaybot-slack/lists"}