82 lines
2.2 KiB
TypeScript
Executable File
82 lines
2.2 KiB
TypeScript
Executable File
#!/usr/bin/env bun
|
|
import { readFileSync, existsSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
|
|
// Function to manually load .env from project root if process.env is missing keys
|
|
function loadEnv() {
|
|
const envPath = join(process.cwd(), ".env");
|
|
if (existsSync(envPath)) {
|
|
const envContent = readFileSync(envPath, "utf-8");
|
|
const lines = envContent.split("\n");
|
|
for (const line of lines) {
|
|
if (line && !line.startsWith("#")) {
|
|
const [key, ...valueParts] = line.split("=");
|
|
if (key && valueParts.length > 0) {
|
|
const value = valueParts.join("=").trim().replace(/^["']|["']$/g, "");
|
|
process.env[key.trim()] = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
async function run() {
|
|
try {
|
|
// Ensure environment variables are loaded
|
|
loadEnv();
|
|
|
|
const inputRaw = readFileSync(0, "utf-8");
|
|
if (!inputRaw) return;
|
|
|
|
let finalText = "";
|
|
let sessionId = "web-desa-darmasaba";
|
|
|
|
try {
|
|
// Try parsing as JSON first
|
|
const input = JSON.parse(inputRaw);
|
|
sessionId = input.session_id || "web-desa-darmasaba";
|
|
finalText = typeof input === "string" ? input : (input.response || input.text || JSON.stringify(input));
|
|
} catch {
|
|
// If not JSON, use raw text
|
|
finalText = inputRaw;
|
|
}
|
|
|
|
const BOT_TOKEN = process.env.BOT_TOKEN;
|
|
const CHAT_ID = process.env.CHAT_ID;
|
|
|
|
if (!BOT_TOKEN || !CHAT_ID) {
|
|
console.error("Missing BOT_TOKEN or CHAT_ID in environment variables");
|
|
return;
|
|
}
|
|
|
|
const message =
|
|
`✅ *Gemini Task Selesai*\n\n` +
|
|
`🆔 Session: \`${sessionId}\` \n\n` +
|
|
`🧠 Output:\n${finalText.substring(0, 3500)}`;
|
|
|
|
const res = await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
chat_id: CHAT_ID,
|
|
text: message,
|
|
parse_mode: "Markdown",
|
|
}),
|
|
});
|
|
|
|
if (!res.ok) {
|
|
const errorData = await res.json();
|
|
console.error("Telegram API Error:", errorData);
|
|
} else {
|
|
console.log("Notification sent successfully!");
|
|
}
|
|
|
|
process.stdout.write(JSON.stringify({ status: "continue" }));
|
|
} catch (err) {
|
|
console.error("Hook Error:", err);
|
|
process.stdout.write(JSON.stringify({ status: "continue" }));
|
|
}
|
|
}
|
|
|
|
run();
|