this repo has no description
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: add basic command

+68 -48
+18
src/features/handler/linking.ts
··· 1 + import { slackApp } from "../../index"; 2 + 3 + export async function linkUserSetup() { 4 + try { 5 + slackApp.command( 6 + "/hn-alerts-link", 7 + () => Promise.resolve(), 8 + async ({ payload, context }) => { 9 + await context.respond({ 10 + text: "Linking successful!", 11 + response_type: "ephemeral", 12 + }); 13 + }, 14 + ); 15 + } catch (error) { 16 + console.error("Error setting up linking", error); 17 + } 18 + }
+5 -1
src/features/index.ts
··· 1 - export default async function setup() {} 1 + import { linkUserSetup } from "./handler/linking"; 2 + 3 + export default async function setup() { 4 + linkUserSetup(); 5 + }
+45 -47
src/index.ts
··· 1 1 import { SlackApp } from "slack-edge"; 2 - import { blog } from "./libs/Logger"; 3 2 import { version, name } from "../package.json"; 4 3 const environment = process.env.NODE_ENV; 5 4 const commit = (() => { 6 - try { 7 - return Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"]) 8 - .stdout.toString() 9 - .trim(); 10 - } catch (e) { 11 - console.error("Failed to get git commit hash:", e); 12 - return "unknown"; 13 - } 5 + try { 6 + return Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"]) 7 + .stdout.toString() 8 + .trim(); 9 + } catch (e) { 10 + console.error("Failed to get git commit hash:", e); 11 + return "unknown"; 12 + } 14 13 })(); 15 14 16 15 import * as Sentry from "@sentry/bun"; ··· 18 17 19 18 // Check required environment variables 20 19 const requiredVars = [ 21 - "SLACK_BOT_TOKEN", 22 - "SLACK_SIGNING_SECRET", 23 - "SLACK_CHANNEL", 24 - "SENTRY_DSN", 20 + "SLACK_BOT_TOKEN", 21 + "SLACK_SIGNING_SECRET", 22 + "SLACK_CHANNEL", 23 + "SENTRY_DSN", 25 24 ] as const; 26 25 const missingVars = requiredVars.filter((varName) => !process.env[varName]); 27 26 28 27 if (missingVars.length > 0) { 29 - throw new Error( 30 - `Missing required environment variables: ${missingVars.join(", ")}`, 31 - ); 28 + throw new Error( 29 + `Missing required environment variables: ${missingVars.join(", ")}`, 30 + ); 32 31 } 33 32 34 33 Sentry.init({ 35 - dsn: process.env.SENTRY_DSN, 36 - environment, 37 - release: version, 34 + dsn: process.env.SENTRY_DSN, 35 + environment, 36 + release: version, 38 37 }); 39 38 40 39 console.log( 41 - `----------------------------------\n${name} Server\n----------------------------------\n`, 40 + `----------------------------------\n${name} Server\n----------------------------------\n`, 42 41 ); 43 42 console.log(`🏗️ Starting ${name}...`); 44 43 console.log("📦 Loading Slack App..."); 45 44 console.log("🔑 Loading environment variables..."); 46 45 47 46 const slackApp = new SlackApp({ 48 - env: { 49 - SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN as string, 50 - SLACK_SIGNING_SECRET: process.env.SLACK_SIGNING_SECRET as string, 51 - SLACK_LOGGING_LEVEL: "INFO", 52 - }, 53 - startLazyListenerAfterAck: true, 47 + env: { 48 + SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN as string, 49 + SLACK_SIGNING_SECRET: process.env.SLACK_SIGNING_SECRET as string, 50 + SLACK_LOGGING_LEVEL: environment === "production" ? "WARN" : "DEBUG", 51 + }, 52 + startLazyListenerAfterAck: true, 54 53 }); 55 54 const slackClient = slackApp.client; 56 55 57 56 await setup(); 58 57 59 - Bun.serve({ 60 - port: process.env.PORT || 3000, 61 - development: environment === "dev", 62 - routes: { 63 - "/": new Response(`hello from ${name}@${version}@${commit}`), 64 - "/health": new Response("OK"), 65 - }, 66 - async fetch(request: Request) { 67 - const url = new URL(request.url); 68 - const path = `/${url.pathname.split("/")[1]}`; 58 + export default { 59 + port: process.env.PORT || 3000, 60 + async fetch(request: Request) { 61 + const url = new URL(request.url); 62 + const path = url.pathname; 69 63 70 - switch (path) { 71 - case "/slack": 72 - return slackApp.run(request); 73 - default: 74 - return new Response("404 Not Found", { status: 404 }); 75 - } 76 - }, 77 - }); 64 + switch (path) { 65 + case "/": 66 + return new Response(`Hello World from ${name}@${version}@${commit}`); 67 + case "/health": 68 + return new Response("OK"); 69 + case "/slack": 70 + return slackApp.run(request); 71 + default: 72 + return new Response("404 Not Found", { status: 404 }); 73 + } 74 + }, 75 + }; 78 76 79 77 console.log( 80 - `🚀 Server Started in ${ 81 - Bun.nanoseconds() / 1000000 82 - } milliseconds on version: ${version}@${commit}!\n\n----------------------------------\n`, 78 + `🚀 Server Started in ${ 79 + Bun.nanoseconds() / 1000000 80 + } milliseconds on version: ${version}@${commit}!\n\n----------------------------------\n`, 83 81 ); 84 82 85 83 export { slackApp, slackClient, version, name, environment };