39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { prisma } from "./prisma";
|
||
|
||
export async function sendTelegramNotification(userId: string, aliciMail: string, sender: string, subject: string, extraInfo: string = "") {
|
||
const user = await prisma.user.findUnique({
|
||
where: { id: userId },
|
||
});
|
||
|
||
if (!user || !user.telegramId || !process.env.TELEGRAM_BOT_TOKEN) {
|
||
console.warn(`[Telegram] Skipped for user ${userId}. Token or ChatId missing.`);
|
||
return { status: "FAILED", error: "Missing token or chatId" };
|
||
}
|
||
|
||
const message = `🔔 *Yeni Mail Geldi!*\n\n📧 *Alıcı:* ${aliciMail}\n👤 *Gönderen:* ${sender}\n📝 *Konu:* ${subject}${extraInfo ? `\n\n💡 *Analiz:* ${extraInfo}` : ""}`;
|
||
const telegramUrl = `https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMessage`;
|
||
|
||
try {
|
||
const res = await fetch(telegramUrl, {
|
||
method: "POST",
|
||
headers: { "Content-Type": "application/json" },
|
||
body: JSON.stringify({
|
||
chat_id: user.telegramId,
|
||
text: message,
|
||
parse_mode: "Markdown",
|
||
}),
|
||
});
|
||
|
||
if (!res.ok) {
|
||
const errorText = await res.text();
|
||
console.error(`[Telegram] API Error: ${res.status} ${errorText}`);
|
||
return { status: "FAILED", error: `API Error: ${res.status}` };
|
||
}
|
||
|
||
return { status: "SENT", error: null };
|
||
} catch (err: any) {
|
||
console.error(`[Telegram] Network Error: ${err.message}`);
|
||
return { status: "FAILED", error: err.message };
|
||
}
|
||
}
|