The Hacker News Discord 机器人

项目的 GitHub 仓库

个人资料

在大学期间,甚至现在,我和几乎所有的朋友都把 Discord 作为我们的主要社交消息平台之一。当时以及现在,我都想及时了解网络安全新闻。因此,我想把它作为一个有趣的项目,我和我的朋友会制作一个 Discord 机器人,将 The Hacker News 的网络安全新闻重新发布到 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 机器人非常简单。因此我们在不到一天的时间里就让机器人运行起来。我们也在同一时间段内完成了 Discord 服务器的设置。

我们添加的一个功能是“过滤器”。该功能会根据文章是 “apple-news”、 “google-news”、 “linux-news” 或 “microsoft-news” 来对 THN 文章进行分类。它会将这些类型的新闻分别放入各自的频道。仍然保留一个 “all” 频道,包含所有文章,但我们认为此功能不错,因为它在一定程度上对类型进行了分类,而且实现起来并不困难。

了解以上内容后,下面是 Discord 机器人工作原理的概述:

  1. 每隔 1 小时,它会抓取 THN 并提取文章的关键信息。该信息包括:标题、详情、日期以及文章的 URL。
  2. 然后机器人会检查服务器中的消息历史,以确定哪些抓取的文章是新的。这样可以确保机器人不会重新发布已经发布过的文章。
  3. 它会按照上述说明的特定主题对新文章进行过滤。
  4. 在收集并过滤所有文章后,机器人会将每篇文章的 URL 发布到其 Discord 服务器以及相应的频道中。
  5. 完成上述所有操作后,机器人会等待另一个小时,然后再次执行相同的步骤。

总的来说,Discord 机器人完全使用 Python 编写,使用了以下第三方库:beautifulsoup4、requests、discord.py 和 python-dotenv。此外,Discord 机器人托管在我的 Raspberry Pi 3 B+ 上,运行 32 位的 Raspberry Pi OS Lite。我们会这样运行机器人:

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

在我们完成机器人和服务器的全部设置后,我们将项目分享给所有朋友和同学。一周内大约有 25 人加入了服务器。

但几个月后,我们注意到人们并没有真正使用服务器,大多数人要么离开了服务器,要么将服务器中的所有频道静音。他们这样做的主要原因是大多数用户希望拥有更个人化和自定义的过滤选项,而且他们对网络安全的兴趣并不大。

因此,我们决定关闭 Discord 服务器。该项目从 2022 年 2 月运行至 2022 年 5 月,并于 2022 年 5 月 25 日正式结束。当天,我们停止了机器人,删除了 Discord 服务器,删除了为此项目创建的 Discord 机器人账户,并将代码完全开源。您可以在此查看代码:https://github.com/MehmetMHY/thn-discord-bot

总的来说,这是一个有趣的项目,我们学到了很多。当时我们并不知道,这个项目实际上是我们迄今为止最大项目的最初起点/版本: Notify-Cyber.