THN Discord-bot
GitHub-repository van het project
Tijdens mijn studie, en zelfs nu nog, gebruik ik samen met bijna al mijn vrienden Discord als een van onze belangrijkste sociale berichtenplatforms. In die tijd, en zelfs nu nog, wil ik op de hoogte blijven van cybersecuritynieuws. Dus dacht ik, als leuk project, dat ik samen met mijn vriend een Discord-bot zou maken die cybersecuritynieuws van The Hacker News naar een Discord-server zou opnieuw plaatsen. Ik stelde het idee voor aan mijn vriend en hij vond het geweldig, dus we begonnen eraan te werken.
The Hacker News (THN) is een cybersecuritynieuwssite. Nu is THN NIET Hacker News. Er is wat controverse geweest over hoe de naam “The Hacker News” erg lijkt op “Hacker News”, een zeer populaire en legendarische sociale nieuwswebsite die zich richt op tech-ondernemerschap. Maar als iemand die The Hacker News de hele tijd gebruikt, geloof ik dat The Hacker News een goede bron is om cybersecuritynieuws te krijgen.
Nou, terwijl ik aan dit project werkte, was een uitdaging waar ik tegenaan liep het vinden van een manier om het nieuws uit THN te halen. De enige beschikbare opties waren om ofwel de Twitter API te gebruiken of THN te webscrapen. Ik heb enige tijd geprobeerd om de Twitter API aan de praat te krijgen, maar gaf het op omdat Twitter het echt moeilijk maakte om hun API in te stellen en te gebruiken. Dus besloot ik in plaats daarvan THN te webscrapen. Aangezien de codebase in Python zou worden geschreven, gebruikte ik requests en beautifulsoup4 om het webscrapen uit te voeren.
Met de scraper werkend, was het volgende wat we aanpakten de Discord-bot. Een Discord-bot maken en implementeren is heel eenvoudig. Dus kregen we de bot al snel binnen minder dan een dag aan de praat. We kregen in diezelfde tijdspanne ook de Discord-server opgezet.
Een functie die we toevoegden was een “filters”-functie. Deze functie zou THN-artikelen sorteren op of het “apple-news”, “google-news”, “linux-news” en/of “microsoft-news” was. Het zou dat soort nieuws in hun eigen kanalen plaatsen. Er was nog steeds een “all”-kanaal dat alle artikelen zou bevatten, maar we vonden deze functie leuk omdat hij de soorten enigszins sorteerde en niet zo uitdagend was om te maken.
Als je dit allemaal weet, is dit een algemeen idee van hoe de Discord-bot werkte:
- Elke 1 uur scrapete hij THN en haalde hij belangrijke informatie over een artikel op. Deze informatie omvatte: titel, details, datum en de url van het artikel.
- De bot controleerde vervolgens zijn berichtengeschiedenis op de server om te zien welke artikelen die hij had gescrapet nieuw waren. Dit zorgt ervoor dat de bot geen artikelen opnieuw plaatst die hij al had geplaatst.
- Hij filterde de nieuwe artikelen op bepaalde onderwerpen, zoals hierboven uitgelegd.
- Met alle artikelen verzameld en gefilterd, zou de bot vervolgens de url van elk artikel in zijn Discord-server plaatsen, evenals in de bijbehorende kanalen van het bericht.
- Daarna wacht de bot een uur om dezelfde stappen opnieuw voort te zetten.
Al met al werd de discord-bot volledig in Python geschreven en gebruikte hij de volgende pakketten van derden: beautifulsoup4, requests, discord.py en python-dotenv. Ook werd de Discord-bot gehost op mijn Raspberry Pi 3 B+ waarop de 32-bit Raspberry Pi OS Lite draaide. We zouden de bot zo uitvoeren:
# run the bot in the background
python3 bot.py &
Nadat we de bot en server helemaal hadden opgezet, deelden we ons project met al onze vrienden en klasgenoten. In een week kregen we ongeveer 25 mensen zover om lid te worden van de server.
Maar na een paar maanden merkten we dat mensen de server eigenlijk niet gebruikten en dat de meesten van hen de server hadden verlaten of alle kanalen in de server hadden gedempt. De belangrijkste reden waarom ze dit deden was omdat de meeste gebruikers meer persoonlijke en aangepaste filteropties wilden en de meesten van hen zich niet zoveel bekommerden om cybersecurity.
Daarom besloten we de Discord-server stop te zetten. Dit project liep van februari 2022 tot mei 2022 en sloot officieel op 25 mei 2022 de deuren. Op die dag stopten we de bot, verwijderden we de Discord-server, verwijderden we het Discord-botaccount dat we voor dit project hadden aangemaakt, en maakten we de code volledig open source in deze GitHub-repository.
Al met al. Dit was een leuk project en we hebben er veel van geleerd. Ook wisten we dat op dat moment niet, maar dit project was het begin/de eerste versie van ons grootste project tot nu toe… Notify-Cyber!