THN Discord Bot

プロジェクトのGitHubリポジトリ

プロフィール

大学の間、そして今でも、私とほとんどの友人はDiscordを主なソーシャルメッセージングプラットフォームの一つとして使用しています。その当時、そして今でも、私はサイバーセキュリティのニュースについて最新の情報を得たいと思っていました。そこで、楽しいプロジェクトとして、私と友人はThe Hacker NewsからサイバーセキュリティのニュースをDiscordサーバーに再投稿するDiscordボットを作ることにしました。私はそのアイデアを友人に提案し、彼はそのアイデアを気に入ったので、私たちは開発を始めました。

The Hacker News (THN)はサイバーセキュリティのニュースサイトです。今、THNはHacker Newsではありません。「The Hacker News」という名前が非常に人気のある、伝説的なテクノロジー起業家向けのソーシャルニュースウェブサイト「Hacker News」と非常に似ているという論争がありました。しかし、私は常にThe Hacker Newsを使用している者として、The Hacker Newsはサイバーセキュリティのニュースを得るための良い情報源だと信じています。

このプロジェクトに取り組んでいる間、私が直面した一つの課題は、THNからニュースを抽出する方法を見つけることでした。利用可能な唯一のオプションは、Twitter APIを使用するか、THNをウェブスクレイピングすることでした。私はTwitter APIを使おうとしばらく時間を費やしましたが、TwitterがAPIの設定と使用を非常に難しくしていたため、諦めました。そこで、THNをウェブスクレイピングすることにしました。コードベースはPythonで書かれる予定だったので、requestsとbeautifulsoup4を使用してウェブスクレイピングを行いました。

スクレイパーが機能するようになったので、次に取り組んだのはDiscordボットでした。Discordボットの作成とデプロイは非常に簡単です。ですので、私たちは1日もかからずにボットを動作させることができました。その間にDiscordサーバーも設定しました。

私たちが追加した機能の一つは「フィルター」機能です。この機能は、THNの記事を「apple-news」、「google-news」、「linux-news」、および/または「microsoft-news」によって分類します。それらのニュースのタイプをそれぞれのチャンネルに振り分けます。「すべて」のチャンネルもあり、すべての記事が含まれていますが、この機能はある程度タイプを整理しており、作成するのもそれほど難しくなかったので良いと思いました。

これらすべてを考慮すると、Discordボットがどのように機能したかの一般的なアイデアは次のとおりです:

  1. 1時間ごとに、THNをスクレイピングして記事に関する重要な情報を抽出します。この情報には、タイトル、詳細、日付、および記事のURLが含まれます。
  2. ボットは、サーバー内のメッセージ履歴を確認して、どの記事が新しいかを確認します。これにより、ボットはすでに投稿した記事を再投稿しないようにします。
  3. 新しい記事を上記のように特定のトピックでフィルタリングします。
  4. 収集されたすべての記事がフィルタリングされた後、ボットは各記事のURLをDiscordサーバーの対応するチャンネルに投稿します。
  5. すべてが完了した後、ボットは次のステップを続けるためにもう1時間待ちます。

全体として、Discordボットは完全にPythonで書かれ、次の3つのサードパーティパッケージを使用しました:beautifulsoup4、requests、discord.py、およびpython-dotenv。また、Discordボットは32ビットのRaspberry Pi OS Liteを実行している私のRaspberry Pi 3 B+にホストされていました。私たちはボットを次のように実行しました:

# ボットをバックグラウンドで実行
python3 bot.py &

ボットとサーバーの設定が完了した後、私たちはプロジェクトをすべての友人やクラスメートと共有しました。1週間で約25人がサーバーに参加しました。

しかし、数ヶ月後、私たちは人々がサーバーをあまり使用していないことに気づき、ほとんどの人がサーバーを離れたり、すべてのチャンネルをミュートしたりしていました。彼らがこれをした主な理由は、ほとんどのユーザーがより個人的でカスタムのフィルターオプションを望んでおり、ほとんどの人がサイバーセキュリティにそれほど関心がなかったからです。

このため、私たちはDiscordサーバーを閉鎖することに決めました。このプロジェクトは2022年2月から2022年5月まで運営され、2022年5月25日に正式に終了しました。この日、私たちはボットを停止し、Discordサーバーを削除し、このプロジェクトのために作成したDiscordボットアカウントを削除し、コードを完全にオープンソースにしました。コードはここで確認できます: https://github.com/MehmetMHY/thn-discord-bot

全体として、これは楽しいプロジェクトであり、私たちは多くのことを学びました。また、その時点では知らなかったのですが、このプロジェクトは私たちの最大のプロジェクトであるNotify-Cyberの初期のスタート/バージョンでした。