{"id":17887567,"url":"https://github.com/sheldonhull/go-slack-pilot","last_synced_at":"2025-04-03T02:41:22.946Z","repository":{"id":48111611,"uuid":"393226327","full_name":"sheldonhull/go-slack-pilot","owner":"sheldonhull","description":"Testing out go-slack pilot","archived":false,"fork":false,"pushed_at":"2023-12-15T05:32:12.000Z","size":30531,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-01T11:03:42.030Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sheldonhull.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-08-06T02:35:45.000Z","updated_at":"2022-08-18T14:57:26.000Z","dependencies_parsed_at":"2023-12-15T06:47:41.651Z","dependency_job_id":null,"html_url":"https://github.com/sheldonhull/go-slack-pilot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"xNok/slack-go-demo-socketmode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheldonhull%2Fgo-slack-pilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheldonhull%2Fgo-slack-pilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheldonhull%2Fgo-slack-pilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheldonhull%2Fgo-slack-pilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sheldonhull","download_url":"https://codeload.github.com/sheldonhull/go-slack-pilot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927811,"owners_count":20856193,"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":[],"created_at":"2024-10-28T13:30:25.883Z","updated_at":"2025-04-03T02:41:22.926Z","avatar_url":"https://github.com/sheldonhull.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Building Slack Bots in Golang\n\n\u003cp\u003e\n\u003ca href=\"https://github.com/xNok/slack-go-demo-socketmode/actions/workflows/go.yml\"\u003e\u003cimg src=\"https://github.com/xNok/slack-go-demo-socketmode/actions/workflows/go.yml/badge.svg\" height=25\u003e\u003c/a\u003e\n\u003ca href=\"https://couedeloalexandre.medium.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/medium-%2312100E.svg?\u0026style=for-the-badge\u0026logo=medium\u0026logoColor=white\" height=25\u003e\u003c/a\u003e \n\u003ca href=\"https://dev.to/xnok\"\u003e\u003cimg src=\"https://img.shields.io/badge/DEV.TO-%230A0A0A.svg?\u0026style=for-the-badge\u0026logo=dev-dot-to\u0026logoColor=white\" height=25\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis project demonstrates how to build a Slackbot in Golang; it uses the [slack-go](https://github.com/slack-go/slack) library and communicates with slack using the [socket mode](https://api.slack.com/apis/connections/socket).\n\nWorking on this project inspired me to write a couple of articles that you can read here or on [Medium](https://medium.com/@couedeloalexandre) (* I included friend links so you won't hit Medium Paywall)\n\n### Slack Bot Tutorials\n\n* Tutorial 0 : [Every Slack Application starts with a few simple steps](https://medium.com/geekculture/build-slack-application-in-golang-using-socket-mode-setting-up-57f454e63c0a?sk=03196a8c492a76cd7ef9a73628fe4524)\n\n* Tutorial 1 : [Build Your Slack App Home in Golang Using Socket Mode](https://betterprogramming.pub/build-a-slack-app-home-in-golang-using-socket-mode-aff7b855bb31?sk=b8b1f7f3c03972793b26bec02dc3d2cc)\n\n* Tutorial 2 : [Properly Welcome Users in Slack with Golang using Socket Mode](https://levelup.gitconnected.com/properly-welcome-users-in-slack-with-golang-using-socket-mode-9a206d30a34a?sk=24fb8c44c1128cc3ef366d51d4a48812)\n\n* Tutorial 3: [Implement Slack Slash Command with Golang using Socket Mode](https://levelup.gitconnected.com/implement-slack-slash-command-in-golang-using-socket-mode-ac693e38148c?sk=33e90a65aded42cd4737ff6a137762cc)\n\n* WIP Tutorial 4: [Creating Slack Shortcuts with Golang using Socket Mode]\n\n### Other topics\n\n* Article 1 : [Manage Static Assets in Golang](https://couedeloalexandre.medium.com/manage-static-assets-with-embed-golang-1-16-75c89c3eea39?sk=d903d7b0532aff64243ef419346f804b)\n* Article 2 : [Handler and Middleware design pattern in Golang](https://medium.com/codex/handler-and-middleware-design-pattern-in-golang-de23ec452fce?sk=0eed25a60858ad985ad22274505fb992)\n* Article 3 : [Diagrams as code 3 must have tools](https://medium.com/geekculture/3-diagram-as-code-tools-that-combined-cover-all-your-needs-8f40f57d5cd8?sk=52fe49e20d7b3a37123d07b29b102696)\n* Article 4 : [Golang’s untyped constants might make your work easier. But there’s a catch](https://betterprogramming.pub/stop-mixing-constants-with-the-type-string-in-golang-d3589d8ae84d?sk=455a5bb28fc70eae0c3b40013c0526dd)\n\n* WIP: Article 5 : [You need a Dojo ⛪]()\n\n\n## Test the project\n\nCreate a file `test_slack.env` with the following variables:\n\n```\nSLACK_BOT_TOKEN=xoxb-xxxxxxxxxxx\nSLACK_APP_TOKEN=xapp-1-xxxxxxxxx\n```\n\nRun the application\n\n```\ngo run main.go\n```\n\n## Showcases\n\n1. Greetings\n2. App Home\n3. Slack commands\n\n### Greetings\n![](./docs/assets/greeting.gif)\n\n![](./out/controllers/greetingController/greetingController.png)\n\nTutorial 2 : [Properly Welcome Users in Slack with Golang using Socket Mode](https://levelup.gitconnected.com/properly-welcome-users-in-slack-with-golang-using-socket-mode-9a206d30a34a?sk=24fb8c44c1128cc3ef366d51d4a48812)\n\n### App Home\n\n![](./docs/assets/apphome_completed.gif)\n\n![](./out/controllers/appHomeController/appHomeController.png)\n\nTutorial 1 : [Build Your Slack App Home in Golang Using Socket Mode](https://betterprogramming.pub/build-a-slack-app-home-in-golang-using-socket-mode-aff7b855bb31?sk=b8b1f7f3c03972793b26bec02dc3d2cc)\n\n### Slash Commands\n\n![](./docs/assets/slachcommandrocket.gif)\n\nTutorial 3: [Implement Slack Slash Command with Golang using Socket Mode](https://levelup.gitconnected.com/implement-slack-slash-command-in-golang-using-socket-mode-ac693e38148c?sk=33e90a65aded42cd4737ff6a137762cc)\n## References\n* [Building a home for your app 🏡](https://api.slack.com/tutorials/app-home-with-modal)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheldonhull%2Fgo-slack-pilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsheldonhull%2Fgo-slack-pilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheldonhull%2Fgo-slack-pilot/lists"}