The Hacker News Discord Bot

Project’s GitHub Repo

profile

Üniversitede ve hâlâ, ben ve neredeyse tüm arkadaşlarım Discord’u ana sosyal mesajlaşma platformlarımızdan biri olarak kullanıyoruz. O zamanlar ve hâlâ siber güvenlik haberlerinden haberdar olmak istiyorum. Bu yüzden eğlenceli bir proje olarak, arkadaşım ve ben The Hacker News’ten siber güvenlik haberlerini bir Discord sunucusuna yeniden göndererek bir Discord botu yapmaya karar verdik. Fikri arkadaşımın önüne sundum ve çok beğendi, bu yüzden geliştirmeye başladık.

The Hacker News (THN) bir siber güvenlik haber sitesidir. THN, Hacker News (Hacker News) değildir. “The Hacker News” isminin “Hacker News” ismiyle çok benzer olduğu konusunda bazı tartışmalar olmuştur; “Hacker News”, teknoloji girişimciliğine odaklanan çok popüler ve efsanevi bir sosyal haber sitesidir. Ancak, The Hacker News’ı sürekli kullanan biri olarak, The Hacker News’ın siber güvenlik haberleri almak için iyi bir kaynak olduğuna inanıyorum.

Bu proje üzerinde çalışırken, karşılaştığım bir zorluk THN’den haberleri çıkarmanın bir yolunu bulmaktı. Mevcut tek seçenekler Twitter API’sini kullanmak ya da THN’yi web kazımak (scrape) idi. Twitter API’sini çalıştırmaya çalıştım ama Twitter API’sini kurup kullanmayı çok zorlaştırdığı için vazgeçtim. Bu yüzden THN’yi web kazımaya yöneldim. Kod tabanının Python ile yazılacağını düşündüğüm için, web kazımak için requests ve beautifulsoup4 kullandım.

Kazıyıcı çalışır hale geldiğinde, bir sonraki adım Discord botuydu. Bir Discord botu oluşturmak ve dağıtmak çok basittir. Bu yüzden botu bir günden az bir sürede çalışır hâle getirdik. Aynı zamanda bu süre içinde Discord sunucusunu da kurduk.

Bir “filtreler” özelliği ekledik. Bu özellik, THN makalelerini “apple-news”, “google-news”, “linux-news” ve/veya “microsoft-news” gibi kategorilere göre sınıflandırır. Bu tür haberleri kendi kanallarına yönlendirir. Tüm makaleleri içeren bir “all” kanalı da vardı, ancak bu özellik haber türlerini bir ölçüde ayırdığı ve yapması zor olmadığı için hoşumuza gitti.

Tüm bunları göz önünde bulundurarak, Discord botunun genel çalışma şekli şu şekildedir:

  1. Her 1 saatde bir THN’yi kazıyıp bir makale hakkında başlık, detaylar, tarih ve makalenin URL’si gibi temel bilgileri çıkarır.
  2. Bot, sunucudaki mesaj geçmişini kontrol ederek hangi makalelerin yeni olduğunu belirler. Bu sayede bot, zaten gönderilmiş makaleleri yeniden göndermez.
  3. Yeni makaleler, yukarıda açıklandığı gibi belirli konulara göre filtrelenir.
  4. Toplanan ve filtrelenen tüm makaleler, bot tarafından Discord sunucusuna ve ilgili kanallara URL’leriyle birlikte gönderilir.
  5. Tüm bunların ardından bot, aynı adımları tekrar etmek için bir saat bekler.

Genel olarak, Discord botu tamamen Python ile yazıldı ve aşağıdaki üçüncü‑taraf paketleri kullandı: beautifulsoup4, requests, discord.py ve python‑dotenv. Ayrıca Discord botu, 32‑bit Raspberry Pi OS Lite çalışan bir Raspberry Pi 3 B+ üzerinde barındırıldı. Bot şu şekilde çalıştırıldı:

# run the bot in the background
python3 bot.py &

Bot ve sunucu kurulduktan sonra projemizi tüm arkadaşlarımız ve sınıf arkadaşlarımızla paylaştık. Bir hafta içinde sunucuya yaklaşık 25 kişi katıldı.

Fakat birkaç ay sonra, insanların sunucuyu pek kullanmadığını ve çoğunun ya sunucudan ayrıldığını ya da tüm kanalları sessize aldığını fark ettik. Bunun temel nedeni, çoğu kullanıcının daha kişisel ve özelleştirilebilir filtre seçenekleri istemesi ve çoğunun siber güvenlik konusuna fazla ilgi duymamasıdır.

Bu yüzden Discord sunucusunu kapatmaya karar verdik. Proje Şubat 2022‘den Mayıs 2022‘ye kadar sürdü ve 25 Mayıs 2022‘de resmi olarak sonlandırıldı. O gün botu durdurduk, Discord sunucusunu sildik, bu proje için oluşturduğumuz Discord bot hesabını sildik ve kodu tamamen açık kaynak yaptık. Kodu buradan inceleyebilirsiniz: https://github.com/MehmetMHY/thn-discord-bot

Sonuç olarak, bu eğlenceli bir projeydi ve çok şey öğrendik. Ayrıca, o zamanlar bunu bilmesek de, bu proje en büyük projemizin ilk başlangıcı/sürümü oldu: Notify-Cyber.