require('dotenv').config(); const { Client, GatewayIntentBits } = require('discord.js'); const cron = require('node-cron'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); // Tempat menyimpan daftar alarm/penanda jam sementara let daftarAlarm = []; client.once('ready', () => { console.log(`Mantap! ${client.user.tag} udah online!`); // Mengecek alarm setiap 1 menit (Menggunakan Waktu Lokal HP) cron.schedule('* * * * *', () => { const sekarang = new Date(); const jamSekarang = String(sekarang.getHours()).padStart(2, '0'); const menitSekarang = String(sekarang.getMinutes()).padStart(2, '0'); const waktuSekarang = `${jamSekarang}:${menitSekarang}`; // Cari apakah ada alarm yang cocok dengan waktu sekarang const alarmCocok = daftarAlarm.filter(a => a.waktu === waktuSekarang); alarmCocok.forEach(alarm => { // Kirim pesan pengingat ke channel tempat alarm dibuat const channel = client.channels.cache.get(alarm.channelId); if (channel) { channel.send(`⏰ **PENGINGAT WAKTU!** Hii <@${alarm.userId}>, sekarang sudah jam **${alarm.waktu}**!`); } }); // Hapus alarm yang sudah lewat dari daftar biar tidak numpuk daftarAlarm = daftarAlarm.filter(a => a.waktu !== waktuSekarang); }); }); client.on('messageCreate', (message) => { if (message.author.bot) return; // 1. Fitur Ping-Pong yang lama tetap ada if (message.content.toLowerCase() === 'ping') { message.reply('Pong! 🏓'); } // 2. Fitur Baru: Tandai Jam // Contoh command: tandai jam 12 00 ATAU tandai jam 12:00 if (message.content.toLowerCase().startsWith('tandai jam')) { // Mengambil angka jam dan menit dari chat menggunakan Regex const pencocokanWaktu = message.content.match(/\d{2}/g); if (!pencocokanWaktu || pencocokanWaktu.length < 2) { return message.reply('❌ Format salah! Contoh yang benar: `tandai jam 12 00` atau `tandai jam 21:30` (harus 2 digit angka ya).'); } const jam = pencocokanWaktu[0]; const menit = pencocokanWaktu[1]; // Validasi format jam (00-23) dan menit (00-59) if (parseInt(jam) > 23 || parseInt(menit) > 59) { return message.reply('❌ Jam atau menit tidak valid! Jam maksimal 23, menit maksimal 59.'); } const targetWaktu = `${jam}:${menit}`; // Simpan data alarm ke memori bot daftarAlarm.push({ waktu: targetWaktu, userId: message.author.id, channelId: message.channel.id }); message.reply(`✅ Siap! Jam **${targetWaktu}** nanti bakal saya ingatkan di channel ini.`); } }); client.login(process.env.DISCORD_TOKEN);

Komentar

Postingan populer dari blog ini

Style langgam psr s

wokwi modul arjhorn