A chill Bluesky bot, with responses powered by Gemini.
1import { z } from "zod";
2
3const envSchema = z.object({
4 AUTHORIZED_USERS: z.preprocess(
5 (val) =>
6 (typeof val === "string" && val.trim() !== "") ? val.split(",") : null,
7 z.array(z.string()).nullable().default(null),
8 ),
9
10 SERVICE: z.string().default("https://bsky.social"),
11 DB_PATH: z.string().default("sqlite.db"),
12 GEMINI_MODEL: z.string().default("gemini-2.5-flash"),
13
14 ADMIN_DID: z.string(),
15 ADMIN_HANDLE: z.string(),
16 DID: z.string(),
17 HANDLE: z.string(),
18 BSKY_PASSWORD: z.string(),
19
20 GEMINI_API_KEY: z.string(),
21});
22
23export type Env = z.infer<typeof envSchema>;
24export const env = envSchema.parse(Bun.env);