···
import { Elysia, t } from "elysia";
import { swagger } from "@elysiajs/swagger";
import { version } from "../package.json";
-
import { SlackApp } from "slack-edge";
import { SlackCache } from "./cache";
-
if (!process.env.SLACK_BOT_TOKEN || !process.env.SLACK_SIGNING_SECRET) {
-
const missingEnvVars = [
-
!process.env.SLACK_BOT_TOKEN && "SLACK_BOT_TOKEN",
-
!process.env.SLACK_SIGNING_SECRET && "SLACK_SIGNING_SECRET",
-
`Missing required environment variables: ${missingEnvVars.join(", ")}`,
-
const slackApp = new SlackApp({
-
SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN,
-
SLACK_SIGNING_SECRET: process.env.SLACK_SIGNING_SECRET,
-
SLACK_LOGGING_LEVEL: "INFO",
-
startLazyListenerAfterAck: true,
const cache = new SlackCache(process.env.DATABASE_PATH ?? "./data/cachet.db");
···
-
const slackConnection = await slackApp.client.auth.test();
const databaseConnection = await cache.healthCheck();
-
if (!slackConnection.ok || !databaseConnection)
-
slack: slackConnection.ok,
database: databaseConnection,
···
// if not found then check slack first
-
const slackUser = await slackApp.client.users.info({
-
if (!slackUser.ok) return error(404, { message: "User not found" });
-
if (!slackUser.user?.profile?.image_original || !slackUser.user.id)
-
return error(404, { message: "User data malformed" });
-
await cache.insertUser(
-
slackUser.user?.profile?.image_original,
expiration: new Date().toISOString(),
-
user: slackUser.user.id,
-
image: slackUser.user.profile.image_original,
···
···
import { Elysia, t } from "elysia";
import { swagger } from "@elysiajs/swagger";
import { version } from "../package.json";
import { SlackCache } from "./cache";
+
import { SlackWrapper } from "./slackWrapper";
+
import type { SlackUser } from "./slack";
+
const slackApp = new SlackWrapper();
const cache = new SlackCache(process.env.DATABASE_PATH ?? "./data/cachet.db");
···
+
const slackConnection = await slackApp.testAuth();
const databaseConnection = await cache.healthCheck();
+
if (!slackConnection || !databaseConnection)
+
slack: slackConnection,
database: databaseConnection,
···
// if not found then check slack first
+
let slackUser: SlackUser;
+
slackUser = await slackApp.getUserInfo(params.user);
+
if (e instanceof Error && e.message === "user_not_found")
+
return error(404, { message: "User not found" });
+
message: `Error fetching user from Slack: ${e}`,
+
await cache.insertUser(slackUser.id, slackUser.profile.image_original);
expiration: new Date().toISOString(),
+
image: slackUser.profile.image_original,
···