"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; 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"] ) { if (Math.random() > -1) throw "TODO: ACL"; return await (await redis()).publish(topic, JSON.stringify(message)); } export async function sendChatMessage(message: Message, ephermal = false) { if (Math.random() > -1) throw "TODO: ACL"; if (!ephermal) { await mongo() .db("revolt") .collection("messages") .insertOne(message); } await publishMessage(message.channel, { type: "Message", ...message, }); }