Bot Discord THN

Repozytorium GitHub projektu

profile

Podczas studiów, a nawet teraz, ja i prawie wszyscy moi znajomi używamy Discorda jako jednej z naszych głównych platform do komunikacji społecznej. W tamtym czasie, a nawet teraz, chciałem być na bieżąco z wiadomościami o cyberbezpieczeństwie. Pomyślałem więc, że jako zabawny projekt ja i mój przyjaciel stworzymy bota Discorda, który ponownie publikowałby wiadomości o cyberbezpieczeństwie z The Hacker News na serwerze Discord. Przedstawiłem ten pomysł mojemu przyjacielowi i bardzo mu się spodobał, więc zaczęliśmy go rozwijać.

The Hacker News (THN) to serwis informacyjny o cyberbezpieczeństwie. Teraz THN to NIE Hacker News. Było trochę kontrowersji wokół tego, że nazwa „The Hacker News” jest bardzo podobna do „Hacker News”, które jest bardzo popularną i legendarną stroną z wiadomościami społecznościowymi, skupiającą się na przedsiębiorczości technologicznej. Ale jako ktoś, kto cały czas korzysta z The Hacker News, uważam, że The Hacker News jest dobrym źródłem wiadomości o cyberbezpieczeństwie.

Pracując nad tym projektem, jednym z wyzwań, na które natrafiłem, było znalezienie sposobu na استخراجanie wiadomości z THN. Jedynymi dostępnymi opcjami było albo użycie API Twittera, albo web scraping THN. Spędziłem trochę czasu, próbując uruchomić API Twittera, ale dałem za wygraną, ponieważ Twitter bardzo utrudnił konfigurację i korzystanie ze swojego API. Zdecydowałem się więc zamiast tego na web scraping THN. Ponieważ kod miał być napisany w Pythonie, użyłem requests i beautifulsoup4 do scrapowania stron.

Gdy scraper działał, następną rzeczą, którą się zajęliśmy, był bot Discorda. Stworzenie i wdrożenie bota Discorda jest bardzo proste. W związku z tym szybko uruchomiliśmy bota w mniej niż dzień. W tym samym czasie skonfigurowaliśmy też serwer Discorda.

Jedną z funkcji, które dodaliśmy, była funkcja „filtrów”. Ta funkcja sortowałaby artykuły THN według tego, czy dotyczyły „apple-news”, „google-news”, „linux-news” i/lub „microsoft-news”. Sortowałaby te typy wiadomości do własnych kanałów. Nadal istniał kanał „all”, który zawierałby wszystkie artykuły, ale uznaliśmy, że ta funkcja jest fajna, ponieważ w pewnym stopniu porządkowała typy i nie była trudna do zrobienia.

Mając to wszystko na uwadze, oto ogólna idea działania bota Discorda:

  1. Co 1 godzinę scrapował THN i wyodrębniał kluczowe informacje o artykule. Informacje te obejmowały: tytuł, szczegóły, datę i adres URL artykułu.
  2. Następnie bot sprawdzał historię wiadomości na serwerze, aby zobaczyć, które artykuły, które zeskrobał, są nowe. Dzięki temu bot nie ponownie publikował artykułów, które już opublikował.
  3. Filtrował nowe artykuły według określonych tematów, jak wyjaśniono powyżej.
  4. Po zebraniu i przefiltrowaniu wszystkich artykułów bot publikował adres URL każdego artykułu na swoim serwerze Discorda, a także w odpowiednich kanałach postu.
  5. Po tym wszystkim bot czekał kolejną godzinę, aby ponownie przejść przez te same kroki.

Podsumowując, bot Discorda został napisany w całości w Pythonie i korzystał z następujących pakietów firm trzecich: beautifulsoup4, requests, discord.py i python-dotenv. Bot Discorda był również hostowany na moim Raspberry Pi 3 B+, na którym działał 32-bitowy Raspberry Pi OS Lite. Uruchamialiśmy bota w ten sposób:

# uruchom bota w tle
python3 bot.py &

Po tym, jak wszystko — bot i serwer — zostało skonfigurowane, podzieliliśmy się naszym projektem ze wszystkimi naszymi przyjaciółmi i kolegami z klasy. W ciągu tygodnia udało nam się przekonać około 25 osób do dołączenia do serwera.

Ale po kilku miesiącach zauważyliśmy, że ludzie tak naprawdę nie korzystali z serwera, a większość z nich albo opuściła serwer, albo wyciszyła wszystkie kanały na serwerze. Głównym powodem, dla którego tak zrobili, było to, że większość użytkowników chciała bardziej osobistych i niestandardowych opcji filtrowania, a większość z nich nie interesowała się zbytnio cyberbezpieczeństwem.

Z tego powodu zdecydowaliśmy się zamknąć serwer Discorda. Projekt ten trwał od lutego 2022 do maja 2022, oficjalnie zamykając działalność 25 maja 2022. Tego dnia zatrzymaliśmy bota, usunęliśmy serwer Discorda, usunęliśmy konto bota Discorda, które utworzyliśmy na potrzeby tego projektu, i udostępniliśmy cały kod jako open source w tym repozytorium GitHub.

Podsumowując. To był fajny projekt i wiele się nauczyliśmy. Ponadto w tamtym czasie nie wiedzieliśmy o tym, ale ten projekt był początkowym startem/wersją naszego największego dotąd projektu… Notify-Cyber!