Bot do Discord THN
Repositório do GitHub do Projeto
Durante a faculdade, e mesmo agora, eu e quase todos os meus amigos usamos o Discord como uma de nossas principais plataformas de mensagens sociais. Na época, e mesmo agora, eu queria estar atualizado sobre as notícias de cibersegurança. Então eu 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 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 é Hacker News. Houve alguma controvérsia sobre como o nome “The Hacker News” é muito semelhante ao “Hacker News”, que é um site de notícias sociais muito popular e lendário que se concentra no 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 do THN. Passei 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, optei por fazer web scraping do THN. Como a base de código seria escrita em Python, usei as bibliotecas requests e beautifulsoup4 para fazer o web 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 se eram “apple-news”, “google-news”, “linux-news” e/ou “microsoft-news”. Ela classificaria esses tipos de notícias em seus próprios canais. Havia também um canal “todos” que conteria todos os artigos, mas achamos que essa funcionalidade era boa porque classificava os tipos de alguma forma e não era tão desafiadora de fazer.
Sabendo de tudo isso, esta é uma ideia geral de como o bot do Discord funcionava:
- 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.
- O bot então verificaria seu histórico de mensagens no servidor para ver quais artigos ele havia raspado que eram novos. Isso garante que o bot não repostasse artigos que já havia postado.
- Ele filtraria os novos artigos por certos tópicos, conforme explicado acima.
- 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 respeitados da postagem.
- Após tudo isso, o bot espera mais uma hora para continuar 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 rodando o Raspberry Pi OS Lite de 32 bits. Nós rodaríamos o bot assim:
# executar o bot em segundo plano
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 se juntarem ao servidor.
Mas, após alguns meses, notamos que as pessoas realmente não usavam o servidor e a maioria delas havia deixado o servidor ou silenciado todos os canais do servidor. A principal razão pela qual fizeram isso foi porque a maioria dos usuários queria opções de filtro mais pessoais e personalizadas e a maioria deles não se importava tanto com cibersegurança.
Por causa disso, decidimos fechar o servidor do Discord. Este projeto funcionou de fevereiro de 2022 a maio de 2022, fechando oficialmente em 25 de maio de 2022. Neste 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. Este foi um projeto divertido e aprendemos muito. Além disso, na época não sabíamos disso, mas este projeto foi o início/version inicial para nosso maior projeto até agora: Notify-Cyber.