O Bot Discord do The Hacker News

Repositório GitHub do Projeto

perfil

Durante a faculdade, e ainda agora, eu e quase todos os meus amigos usamos o Discord como uma das nossas principais plataformas de mensagens sociais. Na época, e ainda agora, eu quero estar atualizado sobre notícias de cibersegurança. Então pensei, como um projeto divertido, eu e meu amigo faríamos um bot do Discord que repostaria notícias de cibersegurança do The Hacker News em um servidor do Discord. Apresentei a ideia ao meu amigo e ele adorou, então começamos a desenvolvê-la.

The Hacker News (THN) é um site de notícias de cibersegurança. Agora, THN NÃO É Hacker News. Houve alguma controvérsia sobre como o nome “The Hacker News” é muito semelhante a “Hacker News”, que é um site de notícias sociais muito popular e lendário que foca em empreendedorismo tecnológico. Mas, como alguém que usa o The Hacker News o tempo todo, acredito que o The Hacker News é uma boa fonte para obter notícias de cibersegurança.

Bem, trabalhando neste projeto, um desafio que encontrei foi encontrar uma maneira de extrair as notícias do THN. As únicas opções disponíveis eram usar a API do Twitter ou fazer web scraping do THN. Gastei um tempo tentando fazer a API do Twitter funcionar, mas desisti porque o Twitter tornou muito difícil configurar e usar sua API. Então recorri ao web scraping do THN. Como a base de código seria escrita em Python, usei as bibliotecas requests e beautifulsoup4 para fazer o scraping.

Com o scraper funcionando, a próxima coisa que abordamos foi o bot do Discord. Criar e implantar um bot do Discord é muito simples. Então rapidamente fizemos o bot funcionar em menos de um dia. Também configuramos o servidor do Discord durante esse período.

Uma funcionalidade que adicionamos foi a funcionalidade de “filtros”. Essa funcionalidade classificaria os artigos do THN por “apple-news”, “google-news”, “linux-news” e/ou “microsoft-news”. Ela classificaria esses tipos de notícias em seus próprios canais. Ainda havia um canal “all” que continha todos os artigos, mas achamos que esse recurso era útil porque classificava os tipos de forma parcial e não era tão desafiador de fazer.

Sabendo tudo isso, aqui está uma ideia geral de como o bot do Discord funcionava:

  1. A cada 1 hora, ele faria scraping do THN e extrairia informações chave sobre um artigo. Essas informações incluíam: título, detalhes, data e URL do artigo.
  2. O bot então verificaria seu histórico de mensagens no servidor para ver quais artigos ele havia raspado que são novos. Isso garante que o bot não repostasse artigos que já foram publicados.
  3. Ele filtraria os novos artigos por determinados tópicos, como explicado acima.
  4. Com todos os artigos coletados e filtrados, o bot então postaria a URL de cada artigo em seu servidor do Discord, bem como nos canais respectivos da postagem.
  5. Depois de tudo isso, o bot espera mais uma hora para continuar os mesmos passos novamente.

No total, o bot do Discord foi escrito inteiramente em Python e usou os seguintes pacotes de terceiros: beautifulsoup4, requests, discord.py e python-dotenv. Além disso, o bot do Discord foi hospedado no meu Raspberry Pi 3 B+ que estava rodando o Raspberry Pi OS Lite de 32 bits. Nós executávamos o bot assim:

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

Depois que configuramos o bot e o servidor, compartilhamos nosso projeto com todos os nossos amigos e colegas de classe. Em uma semana, conseguimos cerca de 25 pessoas para entrar no servidor.

Mas depois de alguns meses, percebemos que as pessoas não usavam realmente o servidor e a maioria delas havia deixado o servidor ou silenciado todos os canais no servidor. O principal motivo de terem feito isso foi porque a maioria dos usuários queria opções de filtro mais pessoais e personalizadas e a maioria não se importava muito com cibersegurança.

Por causa disso, decidimos encerrar o servidor do Discord. Este projeto rodou de fevereiro de 2022 a maio de 2022, encerrando oficialmente em 25 de maio de 2022. Nesse dia, paramos o bot, deletamos o servidor do Discord, deletamos a conta do bot do Discord que criamos para este projeto e tornamos o código completamente open source. Você pode conferir o código aqui: https://github.com/MehmetMHY/thn-discord-bot

No geral, foi um projeto divertido e aprendemos muito. Também, na época, não sabíamos disso, mas este projeto foi o início/versão inicial do nosso maior projeto até agora: Notify-Cyber.