export function getJsonFromURL(url: string) { // Get data from url const urlObj = new URL(url); const dataParam = urlObj.searchParams.get("data"); if (!dataParam) { return undefined; } // Convert URL-safe base64 to standard base64 const base64String = dataParam.replace(/-/g, "+").replace(/_/g, "/"); // Add padding if missing const pad = base64String.length % 4; const paddedBase64 = pad ? base64String + "=".repeat(4 - pad) : base64String; // Decode base64 to Uint8Array function base64ToUint8Array(base64: string) { const binary = atob(base64); const bytes = new Uint8Array(binary.length); for (let i = 0; i < binary.length; i++) { bytes[i] = binary.charCodeAt(i); } return bytes; } const bytes = base64ToUint8Array(paddedBase64); // Decode UTF-8 bytes to string const decodedJson = new TextDecoder("utf-8").decode(bytes); const parsedData = JSON.parse(decodedJson); if (parsedData.messages && parsedData.messages.length > 0) { const embeds = parsedData.messages[0].data.embeds; const content = parsedData.messages[0].data.content; return { embeds: embeds, content: content, }; } }