THN Discord Botu

Projenin GitHub Deposu

profil

Üniversitedeyken ve hatta şimdi bile, ben ve neredeyse tüm arkadaşlarım Discord’u ana sosyal mesajlaşma platformlarımızdan biri olarak kullanıyoruz. O zaman ve şimdi bile siber güvenlik haberleri hakkında güncel olmak istiyorum. Bu yüzden eğlenceli bir proje olarak, arkadaşım ve benim The Hacker News’den siber güvenlik haberlerini bir Discord sunucusuna yeniden yayınlayacak bir Discord botu yapabileceğimizi düşündüm. Fikri arkadaşıma sundum ve o fikri çok beğendi, bu yüzden geliştirmeye başladık.

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

Bu projede çalışırken karşılaştığım bir zorluk, THN’den haberleri çıkarmak için bir yol bulmaktı. Mevcut tek seçenekler Twitter API’sini kullanmak veya THN’yi web kazıma (web scrape) yapmaktı. Twitter API’sini çalıştırmak için biraz zaman harcadım ama Twitter API’sini kurmayı ve kullanmayı gerçekten zorlaştırdığı için vazgeçtim. Bu yüzden THN’yi web kazıma yöntemine başvurdum. Kod tabanının Python ile yazılacağını düşündüğüm için web kazıma yapmak için requests ve beautifulsoup4 kullandım.

Kazıyıcı çalıştıktan sonra, ele aldığımız bir sonraki şey Discord botuydu. Bir Discord botu yapmak ve dağıtmak çok basittir. Bu yüzden botu bir günden kısa sürede hızlıca çalışır hale getirdik. Aynı zaman zarfında Discord sunucusunu da kurduk.

Eklediğimiz bir özellik “filtreler” özelliğiydi. Bu özellik THN makalelerini ‘apple-news’, ‘google-news’, ’linux-news’ ve/veya ‘microsoft-news’ gibi kategorilere göre ayırıyordu. Bu tür haberleri kendi kanallarına ayırıyordu. Hâlâ tüm makaleleri içeren bir ‘all’ kanalı vardı fakat bu özelliğin güzel olduğunu düşündük çünkü türleri bir şekilde ayırıyordu ve yapmak da çok zor değildi.

Tüm bunları bildiğimize göre, Discord botunun nasıl çalıştığına dair genel fikir şuydu:

  1. Her 1 saatte bir, THN’yi kazır ve bir makale hakkında ana bilgileri çıkarırdı. Bu bilgiler şunları içeriyordu: başlık, detaylar, tarih ve makalenin URL’si.
  2. Bot daha sonra sunucudaki mesaj geçmişini kontrol ederek hangi kazıdığı makalelerin yeni olduğunu görürdü. Bu, botun daha önce paylaştığı makaleleri yeniden paylaşmamasını sağlıyordu.
  3. Yukarıda açıklandığı gibi yeni makaleleri belirli konulara göre filtreleyecekti.
  4. Tüm makaleler toplanıp filtrelendikten sonra bot, her bir makalenin URL’sini Discord sunucusuna ve ilgili kanallara gönderirdi.
  5. Bütün bunlardan sonra bot, aynı adımları tekrar uygulamak için bir saat daha beklerdi.

Özetle, Discord botu tamamen Python ile yazıldı ve şu üçüncü taraf paketleri kullandı: beautifulsoup4, requests, discord.py ve python-dotenv. Ayrıca, Discord botu 32 bit Raspberry Pi OS Lite çalıştıran Raspberry Pi 3 B+‘ımda barındırıldı. Botu şu şekilde çalıştırıyorduk:

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

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

Ama birkaç ay sonra insanların sunucuyu gerçekten kullanmadıklarını fark ettik ve çoğu ya sunucudan ayrılmıştı ya da sunucudaki tüm kanalları sessize almıştı. Bunun ana nedeni, kullanıcıların çoğunun daha kişisel ve özelleştirilmiş filtre seçenekleri istemesi ve çoğunun siber güvenlikle çok da ilgilenmemesiydi.

Bunun üzerine Discord sunucusunu kapatmaya karar verdik. Bu proje Şubat 2022’den Mayıs 2022’ye kadar sürdü ve resmi olarak 25 Mayıs 2022’de kapandı. Bu gün botu durdurduk, Discord sunucusunu sildik, bu proje için oluşturduğumuz Discord bot hesabını sildik ve kodu bu GitHub deposunda tamamen açık kaynak yaptık.

Her şeyin özetinde. Bu eğlenceli bir projeydi ve çok şey öğrendik. Ayrıca, o zaman bunu bilmiyorduk ama bu proje, şimdiye kadarki en büyük projemizin ilk başlangıç/sürümüydü… Notify-Cyber!