{"id":28174000,"url":"https://github.com/mhurhangee/slack","last_synced_at":"2025-08-31T17:45:35.876Z","repository":{"id":291099444,"uuid":"976522391","full_name":"mhurhangee/slack","owner":"mhurhangee","description":"A minimalist AI-powered Slack bot built with @slack/bolt and Vercel AI SDK. This bot uses Slack's Assistant class for a seamless AI experience in your workspace.","archived":false,"fork":false,"pushed_at":"2025-05-03T21:37:03.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T04:20:03.534Z","etag":null,"topics":["aisdk","slack","slack-bolt","slack-bot","vercel","vercel-ai-sdk"],"latest_commit_sha":null,"homepage":"https://slack-ten-iota.vercel.app","language":"TypeScript","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/mhurhangee.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,"zenodo":null}},"created_at":"2025-05-02T09:02:13.000Z","updated_at":"2025-05-03T21:37:06.000Z","dependencies_parsed_at":"2025-05-02T12:37:21.675Z","dependency_job_id":"0a6215d1-e469-4850-bbdd-57ef774e2fcc","html_url":"https://github.com/mhurhangee/slack","commit_stats":null,"previous_names":["mhurhangee/slack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mhurhangee/slack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhurhangee%2Fslack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhurhangee%2Fslack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhurhangee%2Fslack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhurhangee%2Fslack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhurhangee","download_url":"https://codeload.github.com/mhurhangee/slack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhurhangee%2Fslack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273017629,"owners_count":25031594,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"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":["aisdk","slack","slack-bolt","slack-bot","vercel","vercel-ai-sdk"],"created_at":"2025-05-15T21:14:37.291Z","updated_at":"2025-08-31T17:45:35.820Z","avatar_url":"https://github.com/mhurhangee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bolt AI Slack Bot\n\nA minimalist AI-powered Slack bot built with @slack/bolt and Vercel AI SDK. This bot uses Slack's Assistant class for a seamless AI experience in your workspace.\n\n## Features\n\n- **AI Assistant**: Responds to messages and provides AI-generated answers\n- **Thread Context Awareness**: Maintains conversation context in threads\n- **Suggested Prompts**: Offers helpful prompt suggestions to users\n- **Status Updates**: Shows typing indicators during response generation\n- **Vercel Integration**: Optimized for serverless deployment with proper timeout handling\n\n## Tech Stack\n\n- [@slack/bolt](https://slack.dev/bolt-js): Modern Slack app framework with Assistant class\n- [Vercel AI SDK](https://sdk.vercel.ai/docs): Flexible AI response generation\n- [TypeScript](https://www.typescriptlang.org/): Type-safe development\n- [Vercel Functions](https://vercel.com/docs/functions): Serverless deployment\n\n## Setup\n\n### 1. Install Dependencies\n\n```bash\npnpm install\n```\n\n### 2. Create a Slack App\n\n1. Go to [https://api.slack.com/apps](https://api.slack.com/apps) and click \"Create New App\"\n2. Choose \"From an app manifest\" and select your workspace\n3. Copy the manifest below and paste it into the JSON editor:\n\n```json\n{\n  \"display_information\": {\n    \"name\": \"AI Assistant\",\n    \"description\": \"AI-powered assistant\",\n    \"background_color\": \"#4A154B\"\n  },\n  \"features\": {\n    \"app_home\": {\n      \"home_tab_enabled\": true,\n      \"messages_tab_enabled\": true,\n      \"messages_tab_read_only_enabled\": false\n    },\n    \"bot_user\": {\n      \"display_name\": \"AI Assistant\",\n      \"always_online\": true\n    }\n  },\n  \"oauth_config\": {\n    \"scopes\": {\n      \"bot\": [\n        \"app_mentions:read\",\n        \"channels:history\",\n        \"channels:read\",\n        \"chat:write\",\n        \"im:history\",\n        \"im:read\",\n        \"im:write\",\n        \"assistant:write\"\n      ]\n    }\n  },\n  \"settings\": {\n    \"event_subscriptions\": {\n      \"bot_events\": [\n        \"app_mention\",\n        \"message.im\",\n        \"assistant_thread_started\",\n        \"assistant_thread_context_changed\"\n      ]\n    },\n    \"interactivity\": {\n      \"is_enabled\": true\n    },\n    \"org_deploy_enabled\": false,\n    \"socket_mode_enabled\": false\n  }\n}\n```\n\n4. After creating the app, go to \"OAuth \u0026 Permissions\" and install the app to your workspace\n5. Note down the \"Bot User OAuth Token\" and \"Signing Secret\" from the \"Basic Information\" page\n\n### 3. Set Environment Variables\n\nCreate a `.env.local` file with the following variables:\n\n```\nSLACK_BOT_TOKEN=xoxb-your-bot-token\nSLACK_SIGNING_SECRET=your-signing-secret\nOPENAI_API_KEY=your-openai-api-key\n```\n\n### 4. Run Locally (Development)\n\n```bash\npnpm dev\n```\n\nUse a tool like [ngrok](https://ngrok.com/) to expose your local server to the internet, then update your Slack app's \"Event Subscriptions\" URL to `https://your-ngrok-url/api/events`.\n\n### 5. Deploy to Vercel\n\n```bash\nvercel deploy\n```\n\nAfter deployment, update your Slack app's \"Event Subscriptions\" URL to `https://your-vercel-app.vercel.app/api/events`.\n\n## Project Structure\n\n- `api/events.ts`: Main entry point for Slack events\n- `lib/assistant-handler.ts`: Implements the Bolt Assistant class\n- `lib/bolt-app.ts`: Initializes the Bolt app and provides utility functions\n- `lib/vercel-receiver.ts`: Custom receiver for Vercel serverless functions\n- `lib/generate-response.ts`: Handles AI response generation with Vercel AI SDK\n\n## Extending the Bot\n\nTo add new capabilities:\n\n1. Enhance the Assistant class in `lib/assistant-handler.ts`\n2. Add new utility functions in `lib/bolt-app.ts`\n3. Update environment variables as needed\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhurhangee%2Fslack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhurhangee%2Fslack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhurhangee%2Fslack/lists"}