THN 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 服务器搭建好了。

我们添加的一个功能是“filters”功能。该功能会将 THN 文章按是否属于 “apple-news”、“google-news”、“linux-news” 和/或 “microsoft-news” 进行分类。它会将这些类型的新闻分到各自的频道。仍然有一个“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 机器人账户,并将代码完全开源,托管在这个 GitHub 仓库

总的来说,这是一个有趣的项目,我们学到了很多。此外,当时我们还不知道,但这个项目是我们迄今为止最大的项目的初始起点/版本……Notify-Cyber