Bot do Discord THN

Repositório GitHub do Projeto

perfil

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

The Hacker News (THN) é um site de notícias de cibersegurança. Agora, THN NÃO é o Hacker News. Houve alguma polêmica 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 se concentra 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, ao trabalhar 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 no THN. Passei algum tempo tentando fazer a API do Twitter funcionar, mas desisti porque o Twitter tornou muito difícil configurar e usar sua API. Então optei por fazer web scraping no THN em vez disso. Como a base de código seria escrita em Python, usei requests e beautifulsoup4 para fazer o web scraping.

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

Uma funcionalidade que adicionamos foi um recurso de “filtros”. Esse recurso classificaria os artigos do THN por se eram “apple-news”, “google-news”, “linux-news” e/ou “microsoft-news”. Ele organizaria esses tipos de notícias em seus próprios canais. Ainda havia um canal “all” que continha todos os artigos, mas achamos esse recurso bom porque organizava os tipos de certa forma e não era tão desafiador de fazer.

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

  1. A cada 1 hora, ele raspava o THN e extraía informações principais 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 que raspou eram novos. Isso garante que o bot não repostará artigos que já publicou.
  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 no servidor do Discord, bem como nos canais respectivos do post.
  5. Depois de tudo isso, o bot espera mais uma hora para repetir os mesmos passos novamente.

No geral, 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 executando 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 de termos configurado o bot e o servidor, compartilhamos nosso projeto com todos os nossos amigos e colegas. Em uma semana conseguimos cerca de 25 pessoas para entrar no servidor.

Mas, depois de alguns meses, percebemos que as pessoas não usavam muito o servidor e a maioria havia ou saído do servidor ou silenciado todos os canais. O principal motivo pelo qual fizeram isso foi que a maioria dos usuários queria opções de filtro mais pessoais e personalizáveis e muitos deles não se importavam tanto com cibersegurança.

Por causa disso, decidimos encerrar o servidor do Discord. Este projeto funcionou de fevereiro de 2022 até maio de 2022, encerrando oficialmente em 25 de maio de 2022. Nesse dia, paramos o bot, excluímos o servidor do Discord, excluímos a conta do bot do Discord que criamos para este projeto e tornamos o código completamente open source neste repositório do GitHub.

No geral. Foi um projeto divertido e aprendemos muito. Além disso, 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!