Bot de Discord THN
Repositorio de GitHub del Proyecto
Durante la universidad, y incluso ahora, yo y casi todos mis amigos usamos Discord como una de nuestras principales plataformas de mensajería social. En ese momento, y aún ahora, quiero estar al tanto de las noticias sobre ciberseguridad. Así que pensé, como un proyecto divertido, que mi amigo y yo haríamos un bot de Discord que volvería a publicar noticias de ciberseguridad de The Hacker News en un servidor de Discord. Presenté la idea a mi amigo y le encantó, así que comenzamos a desarrollarlo.
The Hacker News (THN) es un sitio de noticias sobre ciberseguridad. Ahora, THN NO es Hacker News. Ha habido cierta controversia sobre cómo el nombre “The Hacker News” es muy similar a “Hacker News”, que es un sitio web de noticias sociales muy popular y legendario que se centra en el emprendimiento tecnológico. Pero, como alguien que usa The Hacker News todo el tiempo, creo que The Hacker News es una buena fuente para obtener noticias sobre ciberseguridad.
Mientras trabajaba en este proyecto, un desafío que encontré fue encontrar una manera de extraer las noticias de THN. Las únicas opciones disponibles eran usar la API de Twitter o hacer web scraping de THN. Pasé un tiempo tratando de hacer que la API de Twitter funcionara, pero me rendí porque Twitter lo hizo realmente difícil de configurar y usar. Así que opté por hacer web scraping de THN en su lugar. Dado que la base de código iba a estar escrita en Python, utilicé requests y beautifulsoup4 para hacer el web scraping.
Con el scraper funcionando, lo siguiente que abordamos fue el bot de Discord. Hacer y desplegar un bot de Discord es muy simple. Así que rápidamente hicimos que el bot funcionara en menos de un día. También configuramos el servidor de Discord durante ese tiempo.
Una característica que añadimos fue una función de “filtros”. Esta función clasificaría los artículos de THN según si eran “apple-news”, “google-news”, “linux-news” y/o “microsoft-news”. Clasificaría esos tipos de noticias en sus propios canales. Aún había un canal “todos” que contendría todos los artículos, pero pensamos que esta función era agradable porque clasificaba los tipos de alguna manera y no era tan desafiante de hacer.
Sabiendo todo esto, esta es una idea general de cómo funcionaba el bot de Discord:
- Cada 1 hora, haría scraping de THN y extraería información clave sobre un artículo. Esta información incluía: título, detalles, fecha y URL del artículo.
- El bot luego verificaría su historial de mensajes en el servidor para ver qué artículos ha raspado son nuevos. Esto asegura que el bot no vuelva a publicar artículos que ya ha publicado.
- Filtrará los nuevos artículos por ciertos temas, como se explicó anteriormente.
- Con todos los artículos recopilados y filtrados, el bot publicaría la URL de cada artículo en su servidor de Discord, así como en los canales respectivos de la publicación.
- Después de todo esto, el bot espera otra hora para continuar los mismos pasos nuevamente.
En resumen, el bot de Discord fue escrito completamente en Python y utilizó los siguientes paquetes de terceros: beautifulsoup4, requests, discord.py y python-dotenv. Además, el bot de Discord fue alojado en mi Raspberry Pi 3 B+ que estaba ejecutando el Raspberry Pi OS Lite de 32 bits. Ejecutaríamos el bot de esta manera:
# ejecutar el bot en segundo plano
python3 bot.py &
Después de que configuramos el bot y el servidor, compartimos nuestro proyecto con todos nuestros amigos y compañeros de clase. En una semana, alrededor de 25 personas se unieron al servidor.
Pero después de unos meses, notamos que la gente realmente no usaba el servidor y la mayoría de ellos había dejado el servidor o silenciado todos los canales en el servidor. La razón principal por la que hicieron esto fue porque la mayoría de los usuarios querían opciones de filtro más personales y personalizadas y la mayoría de ellos no se preocupaba tanto por la ciberseguridad.
Debido a esto, decidimos cerrar el servidor de Discord. Este proyecto funcionó desde febrero de 2022 hasta mayo de 2022, cerrando oficialmente el 25 de mayo de 2022. En este día, detuvimos el bot, eliminamos el servidor de Discord, eliminamos la cuenta del bot de Discord que creamos para este proyecto y hicimos que el código fuera completamente de código abierto. Puedes consultar el código aquí: https://github.com/MehmetMHY/thn-discord-bot
En resumen. Este fue un proyecto divertido y aprendimos mucho. Además, en ese momento no lo sabíamos, pero este proyecto fue el inicio/version inicial de nuestro proyecto más grande hasta ahora: Notify-Cyber.