Cara Mengirim Notifikasi Otomatis dengan Node.js, Express, dan Telegram Bot

Fathullah Munadi

Fathullah Munadi

9/7/2024, 10:27:29 AM

Mengirim notifikasi otomatis merupakan cara efektif untuk menjaga pengguna tetap terinformasi tentang pembaruan atau pengingat penting. Dalam artikel ini, kita akan membuat aplikasi Express yang mengirim notifikasi menggunakan Telegram Bot. Kami akan menunjukkan bagaimana Anda dapat mengatur notifikasi otomatis dan menyarankan cara untuk menyimpan chat ID pengguna di database untuk mengirim notifikasi ke beberapa chat ID sekaligus.

Langkah-Langkah Mengirim Notifikasi Otomatis

1. Membuat Telegram Bot

  1. Buka Telegram dan cari @BotFather.

  2. Mulai chat dengan BotFather dan kirim perintah /newbot.

  3. Ikuti petunjuk untuk memberi nama dan username untuk bot Anda.

  4. Salin token API yang diberikan oleh BotFather.

2. Menyiapkan Proyek Node.js dan Menginstal Dependensi

  1. Buka terminal dan buat folder baru untuk proyek:

    ```
    mkdir express-telegram-notifications
    cd express-telegram-notifications
    ```

    Inisialisasi proyek Node.js:

    ```
    npm init -y
    ```
  2. Instal dependensi yang diperlukan:

    ```
    npm install express node-fetch node-cron
    ```
    • express: Framework web untuk Node.js.

    • node-fetch: Untuk melakukan permintaan HTTP.

    • node-cron: Untuk menjadwalkan tugas.

3. Menulis Aplikasi Express

Buat file utama app.js dengan kode berikut:

```
const express = require('express');
const fetch = require('node-fetch');
const cron = require('node-cron');

// Konfigurasi bot Telegram
const BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN';
const TELEGRAM_API_URL = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;

// Daftar chat ID pengguna
const chatIds = [
    'CHAT_ID_1',
    'CHAT_ID_2'
    // Tambahkan chat ID lainnya di sini
];

// Inisialisasi aplikasi Express
const app = express();
app.use(express.json());

// Fungsi untuk mengirim pesan ke Telegram
const sendNotification = async (message) => {
    try {
        for (let chatId of chatIds) {
            await fetch(TELEGRAM_API_URL, {
                method: 'POST',
                body: JSON.stringify({
                    chat_id: chatId,
                    text: message
                }),
                headers: { 'Content-Type': 'application/json' }
            });
        }
        console.log('Pesan terkirim ke semua chat ID.');
    } catch (error) {
        console.error('Terjadi kesalahan:', error);
    }
};

// Endpoint untuk mengirim notifikasi secara manual
app.post('/send-notification', (req, res) => {
    const { message } = req.body;
    if (!message) {
        return res.status(400).send('Pesan tidak ditemukan');
    }
    sendNotification(message)
        .then(() => res.send('Pesan berhasil dikirim'))
        .catch(error => res.status(500).send('Gagal mengirim pesan'));
});

// Penjadwalan cron job untuk mengirim notifikasi setiap hari pada pukul 8 pagi
cron.schedule('0 8 * * *', () => {
    console.log('Mengirim notifikasi...');
    sendNotification('Ini adalah notifikasi otomatis yang dikirim menggunakan cron job.');
});

// Menjalankan server Express
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server berjalan di http://localhost:${PORT}`);
});

```

Catatan: Ganti YOUR_TELEGRAM_BOT_TOKEN dengan token bot Telegram Anda. Ganti CHAT_ID_1, CHAT_ID_2, dan seterusnya dengan chat ID yang sesuai.

4. Menjalankan Aplikasi

  1. Jalankan aplikasi Express:

    ```
    node index.js
    ```
  2. Uji endpoint notifikasi dengan mengirim permintaan POST ke endpoint /send-notification menggunakan alat seperti Postman atau cURL.

    Contoh dengan cURL:

    ```
    curl -X POST http://localhost:3000/send-notification -H "Content-Type: application/json" -d '{"message": "Ini adalah pesan uji coba"}'
    ```

Penjelasan Kode

  • Express Setup: Aplikasi Express ini memiliki endpoint /send-notification yang digunakan untuk mengirim notifikasi secara manual.

  • Chat IDs: Daftar chatIds berisi ID chat Telegram yang Anda ingin kirimi pesan. Anda dapat menambahkan atau menghapus ID chat dari daftar ini sesuai kebutuhan.

  • Node-Cron: Digunakan untuk menjadwalkan pengiriman notifikasi otomatis setiap hari pada pukul 8 pagi.

  • Send Notification: Fungsi sendNotification mengirim pesan ke setiap chat ID dalam daftar chatIds.

Saran untuk Mengirim Notifikasi ke Beberapa Pengguna

  • Gunakan Database: Untuk mengelola chat ID secara dinamis, simpan chat ID di database seperti MongoDB atau MySQL. Ini memungkinkan Anda untuk menambah, menghapus, atau memperbarui chat ID tanpa mengubah kode sumber.

  • Simpan Chat ID: Pertimbangkan untuk menyimpan chat ID setiap kali pengguna berinteraksi dengan bot. Ini memastikan bahwa Anda dapat terus mengirim notifikasi kepada pengguna yang relevan.

Kesimpulan

Dengan menggunakan Node.js, Express, dan Telegram Bot, Anda dapat membuat sistem notifikasi otomatis yang mengirim pesan ke banyak pengguna melalui Telegram. Menggunakan cron job memungkinkan Anda untuk mengatur pengiriman notifikasi pada waktu yang ditentukan. Dengan menyimpan chat ID di database, Anda dapat mengelola pengiriman notifikasi ke banyak pengguna dengan lebih efisien.