THN ディスコードボット

プロジェクトのギットハブリポジトリ

プロフィール

大学在学中も、そして現在でも、私とほとんどの友人は主要なソーシャルメッセージングプラットフォームのひとつとしてディスコードを使用しています。当時も今も、私はサイバーセキュリティのニュースの最新情報を把握しておきたいと思っていました。そこで、遊び半分のプロジェクトとして、友人と一緒にザ・ハッカーニュースからのサイバーセキュリティニュースをディスコードサーバーに再投稿するディスコードボットを作ろうと考えました。私はそのアイデアを友人に提示し、彼はそのアイデアを気に入ったので、開発を始めました。

ザ・ハッカーニュース(THN)はサイバーセキュリティのニュースサイトです。なお、THNはハッカーニュースではありません。「ザ・ハッカーニュース」という名前が「ハッカーニュース」と非常に似ていることについてはいくつかの論争がありました。ハッカーニュースはテック起業家精神に焦点を当てた非常に人気で伝説的なソーシャルニュースサイトです。しかし、ザ・ハッカーニュースを常に利用している者として、私はザ・ハッカーニュースがサイバーセキュリティニュースを得るための良い情報源だと考えています。

このプロジェクトに取り組んでいるときに直面した課題の一つは、THNからニュースを抽出する方法を見つけることでした。利用可能な選択肢は、ツイッターのAPIを使用するかTHNをウェブスクレイピングするかのどちらかでした。私はツイッターのAPIを動かそうとしばらく試みましたが、ツイッターがAPIの設定と利用を非常に難しくしていたため、あきらめました。したがって、代わりにTHNをウェブスクレイピングすることにしました。コードベースはPythonで書かれる予定だったので、ウェブスクレイピングにはrequestsとbeautifulsoup4を使用しました。

スクレイパーが動作するようになった後、次に取り組んだのはディスコードボットでした。ディスコードボットの作成とデプロイは非常に簡単です。したがって、私たちは1日足らずでボットを動作させることができました。その期間中にディスコードサーバーのセットアップも行いました。

追加した機能の一つは「フィルター」機能です。この機能はTHNの記事を “apple-news”、“google-news”、“linux-news”、および/または “microsoft-news” のような分類ごとに振り分けるものでした。それらの種類のニュースをそれぞれの専用チャンネルに振り分けます。すべての記事を含む「all」チャンネルも残していましたが、この機能は種類ごとにある程度整理され、作成もそれほど難しくなかったため便利だと考えました。

これらを踏まえて、ディスコードボットの動作概要は次のとおりです:

  1. 1時間ごとにTHNをスクレイピングして記事に関する主要な情報を抽出します。この情報には、タイトル、詳細、日付、および記事のURLが含まれます。
  2. ボットはサーバー内のメッセージ履歴をチェックして、スクレイピングした記事のうち新しいものがどれかを確認します。これにより、既に投稿した記事を再投稿しないようにします。
  3. 新しい記事を前述した特定のトピックでフィルタリングします。
  4. 収集してフィルタリングされたすべての記事について、ボットは各記事のURLをディスコードサーバーと該当するチャンネルに投稿します。
  5. これらが完了すると、ボットは同じ手順を繰り返すためにさらに1時間待機します。

総じて、このディスコードボットは完全にPythonで書かれており、次のサードパーティパッケージを使用していました: beautifulsoup4, requests, discord.py, and python-dotenv。また、ディスコードボットは32ビットのRaspberry Pi OS Liteを実行している私のラズベリーパイ 3 B+上でホストされていました。ボットは次のように実行していました:

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

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

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

これらの理由から、私たちはディスコードサーバーを閉鎖することにしました。このプロジェクトは2022年2月から2022年5月まで続き、公式には2022年5月25日に終了しました。その日に私たちはボットを停止し、ディスコードサーバーを削除し、このプロジェクトのために作成したディスコードのボットアカウントを削除し、コードをこのギットハブリポジトリで完全にオープンソースにしました。

総じて、これは楽しいプロジェクトであり、多くを学びました。また、その当時は気付いていませんでしたが、このプロジェクトは私たちのこれまでで最大のプロジェクトであるノティファイ・サイバーの初期の出発点/バージョンでもありました… ノティファイ・サイバー