Update index.js
Browse files
index.js
CHANGED
|
@@ -2,15 +2,14 @@ const { WebcastPushConnection } = require('tiktok-live-connector');
|
|
| 2 |
const axios = require('axios');
|
| 3 |
const dns = require('dns');
|
| 4 |
|
| 5 |
-
// --- الإعدادات
|
| 6 |
const TIKTOK_USERNAME = "ah_md107";
|
| 7 |
const TELEGRAM_TOKEN = "8576498050:AAHB51H9vLwFhDUFqYWttPaSa5qhPLzQVWE";
|
| 8 |
const TELEGRAM_CHAT_ID = "-1002856018359";
|
| 9 |
|
| 10 |
dns.setServers(['8.8.8.8']);
|
| 11 |
|
| 12 |
-
|
| 13 |
-
let highestHundredReached = 0;
|
| 14 |
|
| 15 |
async function sendToTelegram(text) {
|
| 16 |
try {
|
|
@@ -21,7 +20,7 @@ async function sendToTelegram(text) {
|
|
| 21 |
parse_mode: 'HTML',
|
| 22 |
disable_web_page_preview: false
|
| 23 |
}, { headers: { 'Host': 'api.telegram.org' } });
|
| 24 |
-
} catch (e) { console.log("خطأ في
|
| 25 |
}
|
| 26 |
|
| 27 |
let tiktokConnection = new WebcastPushConnection(TIKTOK_USERNAME, {
|
|
@@ -33,41 +32,60 @@ let tiktokConnection = new WebcastPushConnection(TIKTOK_USERNAME, {
|
|
| 33 |
}
|
| 34 |
});
|
| 35 |
|
| 36 |
-
// 1.
|
| 37 |
tiktokConnection.connect().then(state => {
|
| 38 |
-
|
| 39 |
const liveLink = `https://www.tiktok.com/@${TIKTOK_USERNAME}/live`;
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
`🔗 الرابط: ${liveLink}`;
|
| 43 |
-
sendToTelegram(msg);
|
| 44 |
-
}).catch(err => {
|
| 45 |
-
console.log("🔎 جاري البحث عن بث نشط...");
|
| 46 |
-
});
|
| 47 |
|
| 48 |
-
// 2. م
|
| 49 |
tiktokConnection.on('roomUser', (data) => {
|
| 50 |
-
const
|
| 51 |
const liveLink = `https://www.tiktok.com/@${TIKTOK_USERNAME}/live`;
|
|
|
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
const msg = `🚀 <b>مستوى قياسي جديد في البث!</b>\n\n` +
|
| 59 |
-
`👁️ عدد المشاهدين الآن: <b>${currentViewers}</b>\n` +
|
| 60 |
-
`📈 تجاوزنا عتبة: <b>${currentHundredLevel}</b>\n` +
|
| 61 |
`🔗 الرابط: ${liveLink}`;
|
| 62 |
-
|
| 63 |
sendToTelegram(msg);
|
| 64 |
-
highestHundredReached = currentHundredLevel; // تحديث القمة الجديدة
|
| 65 |
-
console.log(`✅ تم تسجيل قمة جديدة: ${currentHundredLevel}`);
|
| 66 |
}
|
| 67 |
});
|
| 68 |
|
|
|
|
| 69 |
tiktokConnection.on('disconnected', () => {
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
});
|
| 72 |
|
| 73 |
require('http').createServer((req, res) => res.end('Radar Active')).listen(7860);
|
|
|
|
| 2 |
const axios = require('axios');
|
| 3 |
const dns = require('dns');
|
| 4 |
|
| 5 |
+
// --- الإعدادات ⚙️ ---
|
| 6 |
const TIKTOK_USERNAME = "ah_md107";
|
| 7 |
const TELEGRAM_TOKEN = "8576498050:AAHB51H9vLwFhDUFqYWttPaSa5qhPLzQVWE";
|
| 8 |
const TELEGRAM_CHAT_ID = "-1002856018359";
|
| 9 |
|
| 10 |
dns.setServers(['8.8.8.8']);
|
| 11 |
|
| 12 |
+
let highestHundred = 0;
|
|
|
|
| 13 |
|
| 14 |
async function sendToTelegram(text) {
|
| 15 |
try {
|
|
|
|
| 20 |
parse_mode: 'HTML',
|
| 21 |
disable_web_page_preview: false
|
| 22 |
}, { headers: { 'Host': 'api.telegram.org' } });
|
| 23 |
+
} catch (e) { console.log("خطأ في التلجرام"); }
|
| 24 |
}
|
| 25 |
|
| 26 |
let tiktokConnection = new WebcastPushConnection(TIKTOK_USERNAME, {
|
|
|
|
| 32 |
}
|
| 33 |
});
|
| 34 |
|
| 35 |
+
// 1. إشعار بداية البث 🚀
|
| 36 |
tiktokConnection.connect().then(state => {
|
| 37 |
+
highestHundred = 0;
|
| 38 |
const liveLink = `https://www.tiktok.com/@${TIKTOK_USERNAME}/live`;
|
| 39 |
+
sendToTelegram(`🚀 <b>بدأ البث المباشر الآن!</b>\n👤 الحساب: <code>${TIKTOK_USERNAME}</code>\n🔗 الرابط: ${liveLink}`);
|
| 40 |
+
}).catch(err => console.log("بحث..."));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
+
// 2. منطق إشعار "القمة الجديدة" 🏔️
|
| 43 |
tiktokConnection.on('roomUser', (data) => {
|
| 44 |
+
const viewers = data.viewerCount;
|
| 45 |
const liveLink = `https://www.tiktok.com/@${TIKTOK_USERNAME}/live`;
|
| 46 |
+
let currentHundred = Math.floor(viewers / 100) * 100;
|
| 47 |
|
| 48 |
+
if (currentHundred >= 100 && currentHundred > highestHundred) {
|
| 49 |
+
highestHundred = currentHundred;
|
| 50 |
+
const msg = `🎊 <b>إنجاز جديد في البث!</b>\n\n` +
|
| 51 |
+
`👁️ عدد المشاهدين الآن: <b>${viewers}</b>\n` +
|
| 52 |
+
`📈 تجاوزنا عتبة الـ <b>${currentHundred}</b> مشاهد\n` +
|
|
|
|
|
|
|
|
|
|
| 53 |
`🔗 الرابط: ${liveLink}`;
|
|
|
|
| 54 |
sendToTelegram(msg);
|
|
|
|
|
|
|
| 55 |
}
|
| 56 |
});
|
| 57 |
|
| 58 |
+
// 3. إشعار انتهاء البث (توقيت بغداد 🇮🇶) 🏁
|
| 59 |
tiktokConnection.on('disconnected', () => {
|
| 60 |
+
const now = new Date();
|
| 61 |
+
|
| 62 |
+
// إعداد التنسيق لمدينة بغداد
|
| 63 |
+
const options = {
|
| 64 |
+
timeZone: 'Asia/Baghdad',
|
| 65 |
+
year: 'numeric',
|
| 66 |
+
month: 'numeric',
|
| 67 |
+
day: 'numeric',
|
| 68 |
+
hour: '2-digit',
|
| 69 |
+
minute: '2-digit',
|
| 70 |
+
hour12: true
|
| 71 |
+
};
|
| 72 |
+
|
| 73 |
+
const formatter = new Intl.DateTimeFormat('ar-IQ', options);
|
| 74 |
+
const parts = formatter.formatToParts(now);
|
| 75 |
+
|
| 76 |
+
// استخراج التاريخ والوقت من التنسيق العراقي
|
| 77 |
+
const dateStr = `${parts.find(p => p.type === 'day').value}/${parts.find(p => p.type === 'month').value}/${parts.find(p => p.type === 'year').value}`;
|
| 78 |
+
const timeStr = `${parts.find(p => p.type === 'hour').value}:${parts.find(p => p.type === 'minute').value} ${parts.find(p => p.type === 'dayPeriod').value}`;
|
| 79 |
+
|
| 80 |
+
const endMsg = `🏁 <b>انتهى البث المباشر</b>\n\n` +
|
| 81 |
+
`👤 الحساب: <code>${TIKTOK_USERNAME}</code>\n` +
|
| 82 |
+
`📅 التاريخ: ${dateStr}\n` +
|
| 83 |
+
`⏰ الوقت (بغداد): ${timeStr}\n` +
|
| 84 |
+
`🏆 أعلى قمة مشاهدين: ${highestHundred}`;
|
| 85 |
+
|
| 86 |
+
sendToTelegram(endMsg);
|
| 87 |
+
|
| 88 |
+
setTimeout(() => tiktokConnection.connect(), 30000);
|
| 89 |
});
|
| 90 |
|
| 91 |
require('http').createServer((req, res) => res.end('Radar Active')).listen(7860);
|