Bot de Discord THN

Repositorio del proyecto en GitHub

perfil

Durante la universidad, y aún ahora, mis amigos y yo usamos Discord como una de nuestras principales plataformas de mensajería social. En ese momento, y todavía ahora, quiero estar al día con las noticias sobre ciberseguridad. Así que pensé, como un proyecto divertido, que mi amigo y yo haríamos un bot de Discord que republicara noticias de ciberseguridad de The Hacker News en un servidor de Discord. Presenté la idea a mi amigo y le encantó, así que empezamos a desarrollarla.

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 de ciberseguridad.

Al trabajar en este proyecto, un desafío con el que me 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é algún tiempo intentando hacer que la API de Twitter funcionara, pero me rendí porque Twitter hizo que fuera realmente difícil configurar y usar su API. Así que opté por hacer web scraping de THN en su lugar. Como la base de código iba a estar escrita en Python, usé requests y beautifulsoup4 para hacer el web scraping.

Con el scraper funcionando, lo siguiente que abordamos fue el bot de Discord. Crear y desplegar un bot de Discord es muy sencillo. Así que rápidamente tuvimos el bot funcionando en menos de un día. También configuramos el servidor de Discord durante ese período.

Una característica que añadimos fue la función de “filtros”. Esta característica ordenarí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. Todavía había un canal “all” que contenía todos los artículos, pero pensamos que esta función era agradable porque ordenaba los tipos en cierta medida y no fue tan difícil de hacer.

Sabiendo todo esto, esta es una idea general de cómo funcionaba el bot de Discord:

  1. Cada 1 hora, raspaba THN y extraía información clave sobre un artículo. Esta información incluía: título, detalles, fecha y la URL del artículo.
  2. El bot entonces comprobaría su historial de mensajes en el servidor para ver qué artículos que ha raspado son nuevos. Esto asegura que el bot no republique artículos que ya publicó.
  3. Filtraría los artículos nuevos por ciertos temas, como se explicó arriba.
  4. Con todos los artículos recolectados y filtrados, el bot publicaría la URL de cada artículo en su servidor de Discord, así como en los canales correspondientes del post.
  5. Después de todo esto, el bot espera otra hora para continuar los mismos pasos nuevamente.

En definitiva, el bot de Discord fue escrito completamente en Python y usó los siguientes paquetes de terceros: beautifulsoup4, requests, discord.py y python-dotenv. Además, el bot de Discord se alojó en mi Raspberry Pi 3 B+ que ejecutaba Raspberry Pi OS Lite de 32 bits. Ejecutábamos el bot así:

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

Después de que tuvimos el bot y el servidor configurados, compartimos nuestro proyecto con todos nuestros amigos y compañeros de clase. En una semana conseguimos alrededor de 25 personas que 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ían o bien abandonado el servidor o silenciado todos los canales del servidor. La razón principal por la que hicieron esto fue porque la mayoría de los usuarios quería opciones de filtro más personales y personalizables y a la mayoría no le importaba tanto la ciberseguridad.

Por 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. Ese día, detuvimos el bot, eliminamos el servidor de Discord, eliminamos la cuenta del bot de Discord que creamos para este proyecto y pusimos el código completamente de código abierto en este repositorio de GitHub.

En definitiva, fue un proyecto divertido y aprendimos mucho. Además, en ese momento no lo sabíamos, pero este proyecto fue la versión inicial de nuestro proyecto más grande hasta ahora… Notify-Cyber!