1
0
Fork 0
panel/lib/redis.ts

44 lines
866 B
TypeScript

"use server";
import { createClient } from "redis";
import { Message } from "revolt-api";
import type { ProtocolV1 } from "revolt.js/lib/events/v1";
import mongo from "./db";
let client: ReturnType<typeof createClient>;
async function redis() {
if (!client) {
client = createClient({
url: process.env.REDIS!,
});
await client.connect();
}
return client;
}
export default redis;
export async function publishMessage(
topic: string,
message: ProtocolV1["server"]
) {
return await (await redis()).publish(topic, JSON.stringify(message));
}
export async function sendChatMessage(message: Message, ephermal = false) {
if (!ephermal) {
await mongo()
.db("revolt")
.collection<Message>("messages")
.insertOne(message);
}
await publishMessage(message.channel, {
type: "Message",
...message,
});
}