Bot Discord yang bisa menyiarkan langsung YouTube Live menjadi salah satu cara paling seru untuk meningkatkan interaksi komunitas. Dengan menghubungkan Discord, YouTube, dan GitHub, kamu tidak hanya menambahkan nilai hiburan, tapi juga belajar otomatisasi yang berguna untuk proyek-proyek lain. Pada paragraf pembuka ini, keyword utama tutorial membuat bot Discord yang menyiarkan YouTube Live dari GitHub sudah muncul, menandakan inti pembahasan yang akan kita gali bersama.
Di artikel ini, saya akan membimbing kamu langkah demi langkah, mulai dari persiapan lingkungan pengembangan, menulis kode bot dengan Node.js, mengakses API YouTube, hingga men-deploy bot ke GitHub dan menjalankannya secara otomatis menggunakan GitHub Actions. Semua dijelaskan dengan bahasa santai, contoh kode yang mudah dipahami, serta beberapa tips praktis agar prosesnya berjalan mulus. Jadi, siapkan kopi, laptop, dan semangat belajar, karena kita akan membuat sesuatu yang keren!
Jika kamu penasaran bagaimana cara memantau statistik streaming YouTube atau mengotomatisasi upload video, cek juga artikel Rahasia Memantau Statistik Streaming YouTube dengan GitHub API. Artikel itu memberikan insight tambahan yang dapat melengkapi bot kamu dengan fitur statistik real‑time.
Persiapan Lingkungan Pengembangan
1. Instalasi Node.js dan npm
- Unduh Node.js versi LTS (saat ini 20.x) dan ikuti proses instalasi sesuai sistem operasi kamu.
- Setelah instalasi, buka terminal dan pastikan versi terpasang dengan perintah
node -vdannpm -v.
2. Membuat Akun Discord & Bot Token
- Kunjungi Discord Developer Portal, buat aplikasi baru, dan pilih “Bot”.
- Catat token bot dengan hati‑hati; jangan pernah membagikannya secara publik.
- Atur permission bot minimal “Send Messages” dan “Embed Links”.
3. Mengaktifkan YouTube Data API
- Buka Google Cloud Console, buat proyek baru, lalu aktifkan “YouTube Data API v3”.
- Buat kredensial berupa API key; simpan dengan aman karena akan dipakai untuk memeriksa status live streaming.
4. Menyiapkan Repository GitHub
- Buat repository baru di GitHub, misalnya
discord-youtube-live-bot. - Pastikan repository bersifat privat atau publik sesuai kebutuhan, lalu clone ke lokal dengan
git clone.
Membuat Bot Discord dengan Node.js
1. Inisialisasi Proyek
Di dalam folder proyek, jalankan perintah berikut untuk membuat package.json baru:
npm init -y
Selanjutnya, instal dependensi penting:
npm install discord.js axios dotenv
discord.js adalah library resmi Discord, axios untuk melakukan request HTTP ke YouTube API, dan dotenv untuk mengelola variabel lingkungan.
2. Struktur Direktori
Untuk menjaga kebersihan kode, gunakan struktur berikut:
discord-youtube-live-bot/
│
├─ .env
├─ index.js
├─ config/
│ └─ channels.json // ID channel Discord tempat siaran akan diposting
└─ utils/
└─ youtube.js // Helper untuk cek status live
3. Mengatur .env
Isi file .env dengan variabel berikut (jangan commit file ini ke repo!):
DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN
YOUTUBE_API_KEY=YOUR_YOUTUBE_API_KEY
YOUTUBE_CHANNEL_ID=YOUR_YOUTUBE_CHANNEL_ID
4. Membuat Helper YouTube (utils/youtube.js)
File ini akan memeriksa apakah channel YouTube sedang live atau tidak:
const axios = require('axios');
require('dotenv').config();
const API_KEY = process.env.YOUTUBE_API_KEY;
const CHANNEL_ID = process.env.YOUTUBE_CHANNEL_ID;
async function getLiveStream() {
const url = `https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${CHANNEL_ID}&type=video&eventType=live&key=${API_KEY}`;
const response = await axios.get(url);
const items = response.data.items;
if (items.length > 0) {
return {
videoId: items[0].id.videoId,
title: items[0].snippet.title,
url: `https://www.youtube.com/watch?v=${items[0].id.videoId}`
};
}
return null;
}
module.exports = { getLiveStream };
5. Menulis Bot Utama (index.js)
Berikut contoh kode utama yang akan memantau live setiap 2 menit dan mengirim embed ke Discord bila ada siaran baru:
require('dotenv').config();
const { Client, Intents, MessageEmbed } = require('discord.js');
const { getLiveStream } = require('./utils/youtube');
const fs = require('fs');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
let lastLiveId = null;
// Membaca channel Discord yang akan di‑post
const channels = JSON.parse(fs.readFileSync('./config/channels.json', 'utf-8'));
client.once('ready', () => {
console.log(`🤖 Bot siap sebagai ${client.user.tag}`);
// Mulai polling setiap 2 menit
setInterval(checkLive, 2 * 60 * 1000);
});
async function checkLive() {
try {
const live = await getLiveStream();
if (live && live.videoId !== lastLiveId) {
lastLiveId = live.videoId;
const embed = new MessageEmbed()
.setTitle('🚀 YouTube Live Dimulai!')
.setDescription(`[${live.title}](${live.url})`)
.setColor('#FF0000')
.setThumbnail(`https://img.youtube.com/vi/${live.videoId}/default.jpg`)
.setTimestamp();
// Kirim ke semua channel yang terdaftar
for (const channelId of Object.values(channels)) {
const channel = await client.channels.fetch(channelId);
if (channel) channel.send({ embeds: });
}
}
} catch (err) {
console.error('Error saat memeriksa live:', err);
}
}
client.login(process.env.DISCORD_TOKEN);
6. Menyiapkan channels.json
Masukkan ID channel Discord tempat bot akan mengirim notifikasi. Contoh:
{
"general": "123456789012345678",
"stream-announcements": "987654321098765432"
}
Mengintegrasikan Bot dengan GitHub Actions untuk Deploy Otomatis
1. Membuat Workflow GitHub Actions
Buat file .github/workflows/deploy.yml di repo kamu. Workflow ini akan:
- Menjalankan
npm installdannpm run lint(jika ada). - Menggunakan setup-node untuk menginstal Node.js.
- Men-deploy bot ke layanan hosting ringan seperti Railway atau Render dengan variabel rahasia yang kamu set di Settings → Secrets.
name: Deploy Discord Bot
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run Linter (optional)
run: npm run lint || echo "No lint script"
# Contoh deploy ke Railway
- name: Deploy to Railway
env:
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
run: |
curl -fsSL https://railway.app/install.sh | sh
railway up
2. Menyimpan Secrets di GitHub
Masuk ke repository → Settings → Secrets and variables → Actions, lalu tambahkan:
DISCORD_TOKENYOUTUBE_API_KEYYOUTUBE_CHANNEL_IDRAILWAY_TOKEN(atau token layanan lain yang kamu pakai)
Dengan cara ini, kredensial tidak pernah terlihat di kode sumber, menjaga keamanan bot kamu.
3. Memantau Workflow
Setelah push ke branch main, GitHub Actions akan otomatis berjalan. Buka tab “Actions” di repo untuk melihat log, memastikan tidak ada error. Jika semuanya berhasil, bot akan online dan siap memantau YouTube Live 24/7.
Tips & Trik Agar Bot Lebih Keren
• Tambahkan Fitur Ping ke Penonton
Gunakan embed tambahan yang menandai role @here atau @everyone (hati‑hati dengan spam). Contohnya:
embed.setDescription(`@here ${embed.description}`);
• Simpan Log Live di Database Ringan
Jika kamu ingin melacak riwayat live, integrasikan sqlite atau tinydb untuk mencatat videoId, timestamp, dan durasi. Ini berguna untuk analisis statistik nanti.
• Notifikasi Saat Live Berakhir
Anda dapat memperpanjang checkLive menjadi 30 detik ketika live terdeteksi, lalu cek kembali. Jika tidak ada lagi live, kirim embed “Live selesai” ke Discord.
• Custom Command untuk Meminta Status Live
Tambahkan command !livestatus yang memanggil getLiveStream() secara on‑demand, sehingga anggota dapat menanyakan kapan streamer akan mulai.
• Gunakan Cara Cerdas Upload Video ke YouTube Pakai Python & GitHub Actions sebagai referensi tambahan bila kamu ingin menambahkan fungsi upload otomatis setelah live berakhir.
Pengujian Lokal Sebelum Deploy
1. Jalankan Bot di Terminal
Pastikan file .env sudah terisi, lalu eksekusi:
node index.js
Jika berhasil, kamu akan melihat log “Bot siap”. Coba buat live test di channel YouTube kamu, dan periksa apakah bot mengirim embed ke Discord.
2. Debugging Umum
- Token Salah: Bot tidak login, periksa kembali token di
.envdan di Discord Developer Portal. - API Key Tidak Aktif: Pastikan YouTube Data API sudah di‑enable di Google Cloud Console.
- Permission Channel: Bot harus memiliki akses “Send Messages” di channel tujuan.
Langkah Selanjutnya: Menambahkan Fitur Lanjutan
Setelah bot stabil, kamu bisa bereksperimen dengan:
- Integrasi OBS Studio untuk mengirim data statistik secara real‑time ke Discord (lihat Rahasia Integrasi OBS Studio dengan GitHub).
- Menggunakan Webhooks Discord untuk mengirim notifikasi ke layanan lain, misalnya Slack atau Telegram.
- Menggabungkan GitHub Pages sebagai landing page yang menampilkan jadwal live selanjutnya (Mengapa Memilih GitHub Pages untuk Landing Page Streaming?).
Dengan semua langkah di atas, kamu sekarang memiliki bot Discord yang dapat menyiarkan YouTube Live secara otomatis, dikelola lewat kode di GitHub, dan di‑deploy dengan GitHub Actions. Bot ini tidak hanya meningkatkan engagement komunitas Discord, tapi juga memberi pengalaman belajar tentang API, otomatisasi CI/CD, dan manajemen rahasia. Selamat mencoba, dan jangan ragu untuk bereksperimen—siapa tahu kamu menemukan ide baru yang lebih ciamik!