const axios = require("axios"); const fs = require("fs-extra"); const path = require("path"); const moment = require("moment-timezone"); const CACHE_DIR = path.join(__dirname, "cache", "autotimer"); fs.ensureDirSync(CACHE_DIR); const schedules = [ ["12:00 AM", "https://files.catbox.moe/7ch5ym.mp4"], ["01:00 AM", "https://files.catbox.moe/rqnlpt.mp4"], ["02:00 AM", "https://files.catbox.moe/ev7guv.mp4"], ["03:00 AM", "https://files.catbox.moe/rijx8m.mp4"], ["04:30 AM", "https://files.catbox.moe/ee9khu.mp4"], ["06:00 AM", "https://files.catbox.moe/otdztt.mp4"], ["07:00 AM", "https://files.catbox.moe/q6b7fo.mp4"], ["08:00 AM", "https://files.catbox.moe/jxa3ka.mp4"], ["09:00 AM", "https://files.catbox.moe/wtu9vw.mp4"], ["10:00 AM", "https://files.catbox.moe/guv0tc.mp4"], ["11:00 AM", "https://files.catbox.moe/aecxiz.mp4"], ["12:00 PM", "https://files.catbox.moe/wrc15v.mp4"], ["01:00 PM", "https://files.catbox.moe/c5qbek.mp4"], ["02:00 PM", "https://files.catbox.moe/vgecfk.mp4"], ["03:00 PM", "https://files.catbox.moe/iddna6.mp4"], ["04:30 PM", "https://files.catbox.moe/vcgbxq.mp4"], ["06:30 PM", "https://files.catbox.moe/y8pnz7.mp4"], ["08:00 PM", "https://files.catbox.moe/rpnut9.mp4"], ["09:00 PM", "https://files.catbox.moe/fpac7y.mp4"], ["10:00 PM", "https://files.catbox.moe/e7v8en.mp4"], ["11:00 PM", "https://files.catbox.moe/7bas7j.mp4"] ]; let timer = null; let running = false; let lastSent = ""; async function downloadVideo(url) { const response = await axios.get(url, { responseType: "arraybuffer", timeout: 120000, maxContentLength: 100 * 1024 * 1024, maxBodyLength: 100 * 1024 * 1024 }); return Buffer.from(response.data); } async function sendToGroups(api, videoBuffer, time) { const threadList = await api.getThreadList( 1000, null, ["INBOX"] ); const groups = threadList.filter( thread => thread && thread.isGroup && thread.threadID ); const message = { body: `☪️ Mehedi-Bot\n\n` + `🕐 সময়: ${time}\n` + `📖 ইসলামিক রিমাইন্ডার\n\n` + `🤲 আল্লাহ আমাদের সবাইকে হেদায়েত দান করুন।` }; for (const group of groups) { try { await api.sendMessage( { ...message, attachment: videoBuffer }, group.threadID ); await new Promise(resolve => setTimeout(resolve, 1000)); } catch (err) { console.error( `Send failed: ${group.threadID}`, err.message ); } } } async function checkAndSend(api) { if (!running) return; const now = moment().tz("Asia/Dhaka"); const currentTime = now.format("hh:mm A"); const currentDate = now.format("YYYY-MM-DD"); const uniqueKey = `${currentDate}_${currentTime}`; if (uniqueKey === lastSent) return; const schedule = schedules.find( item => item[0] === currentTime ); if (!schedule) return; lastSent = uniqueKey; const [time, videoUrl] = schedule; console.log(`⏰ Autotimer: ${time}`); try { const videoBuffer = await downloadVideo(videoUrl); await sendToGroups( api, videoBuffer, time ); console.log(`✅ Video sent: ${time}`); } catch (error) { console.error( `❌ Autotimer error at ${time}:`, error.message ); } } module.exports = { config: { name: "autotimer", version: "4.0.0", author: "Mehedi", countDown: 5, role: 2, shortDescription: "Automatic Islamic timer", longDescription: "Sends one scheduled Islamic video to all groups.", category: "system", guide: "{pn}" }, onStart: async function ({ api, event }) { if (running) { return api.sendMessage( "✅ Autotimer already running.", event.threadID ); } running = true; await checkAndSend(api); timer = setInterval(() => { checkAndSend(api).catch(err => { console.error("Autotimer:", err.message); }); }, 30000); return api.sendMessage( "✅ Mehedi-Bot Autotimer started!\n\n" + "🇧🇩 Bangladesh Time: Asia/Dhaka\n" + "🎬 প্রতি scheduled time-এ ১টি video পাঠানো হবে।", event.threadID ); } };