Bot Discord THN

Kho GitHub của dự án

hồ sơ

Trong thời gian học đại học, và ngay cả bây giờ, tôi và hầu hết bạn bè của tôi sử dụng Discord như một trong những nền tảng nhắn tin xã hội chính. Vào thời điểm đó, và ngay cả bây giờ, tôi muốn luôn cập nhật về tin tức an ninh mạng. Vì vậy tôi nghĩ, như một dự án vui, tôi và bạn tôi sẽ tạo một bot Discord để đăng lại tin tức an ninh mạng từ The Hacker News vào một server Discord. Tôi đã trình bày ý tưởng với bạn tôi và anh ấy rất thích ý tưởng đó, vậy là chúng tôi bắt đầu phát triển nó.

The Hacker News (THN) là một trang tin tức về an ninh mạng. Bây giờ, THN KHÔNG phải là Hacker News. Đã có một vài tranh cãi về việc tên “The Hacker News” rất giống với “Hacker News” — một trang tin xã hội rất nổi tiếng và mang tính huyền thoại tập trung vào khởi nghiệp công nghệ. Nhưng, với tư cách là người thường xuyên sử dụng The Hacker News, tôi tin rằng The Hacker News là một nguồn tốt để lấy tin tức an ninh mạng.

Khi làm việc trên dự án này, một thách thức tôi gặp phải là tìm cách trích xuất các tin tức từ THN. Các tùy chọn duy nhất có sẵn là sử dụng API Twitter hoặc web scrape THN. Tôi đã dành thời gian cố gắng để làm cho API Twitter hoạt động nhưng bỏ cuộc vì Twitter đã làm cho việc thiết lập và sử dụng API của họ trở nên thực sự khó khăn. Vì vậy tôi đã sử dụng phương pháp web scrape THN thay vào đó. Vì codebase sẽ được viết bằng Python, tôi đã sử dụng requests và beautifulsoup4 để thực hiện việc web scrapping.

Khi trình trích xuất hoạt động, điều tiếp theo chúng tôi giải quyết là bot Discord. Việc tạo và triển khai một bot Discord rất đơn giản. Vì vậy chúng tôi nhanh chóng làm cho bot hoạt động trong chưa đầy một ngày. Chúng tôi cũng thiết lập server Discord trong khoảng thời gian đó.

Một tính năng chúng tôi thêm vào là tính năng “lọc”. Tính năng này sẽ phân loại các bài viết THN theo xem bài viết đó có phải là “apple-news”, “google-news”, “linux-news” và/hoặc “microsoft-news” hay không. Nó sẽ sắp xếp các loại tin tức đó vào các kênh riêng của chúng. Vẫn có một kênh “tất cả” chứa tất cả các bài viết nhưng chúng tôi nghĩ tính năng này hay vì nó phần nào phân loại các loại tin tức và không quá khó để làm.

Biết tất cả những điều này, đây là ý tưởng tổng quát về cách bot Discord hoạt động:

  1. Mỗi 1 giờ, nó sẽ quét THN và trích xuất thông tin chính về một bài viết. Thông tin này bao gồm: tiêu đề, chi tiết, ngày tháng, và url của bài viết.
  2. Bot sau đó sẽ kiểm tra lịch sử tin nhắn của nó trong server để xem những bài viết nó đã trích xuất có bài nào mới không. Điều này đảm bảo bot không đăng lại những bài nó đã đăng trước đó.
  3. Nó sẽ lọc các bài viết mới theo các chủ đề nhất định, như đã giải thích ở trên.
  4. Với tất cả bài viết được thu thập và lọc, bot sẽ đăng url của mỗi bài vào server Discord cũng như các kênh tương ứng của bài đăng.
  5. Sau tất cả những điều này, bot chờ thêm một giờ nữa để tiếp tục các bước tương tự.

Tóm lại, bot discord được viết hoàn toàn bằng Python và sử dụng các gói bên thứ 3 sau: beautifulsoup4, requests, discord.py, và python-dotenv. Ngoài ra, bot Discord được lưu trữ trên Raspberry Pi 3 B+ của tôi đang chạy Raspberry Pi OS Lite 32 bit. Chúng tôi sẽ chạy bot như sau:

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

Sau khi chúng tôi thiết lập bot và server, chúng tôi chia sẻ dự án với tất cả bạn bè và bạn cùng lớp. Trong một tuần chúng tôi đã có khoảng 25 người tham gia server.

Nhưng sau vài tháng, chúng tôi nhận ra rằng mọi người thực sự không sử dụng server và hầu hết họ đã rời server hoặc tắt tiếng tất cả các kênh trong server. Lý do chính khiến họ làm vậy là vì hầu hết người dùng muốn các tùy chọn lọc cá nhân và tùy chỉnh hơn và hầu hết họ không quan tâm nhiều đến an ninh mạng.

Vì lý do này, chúng tôi quyết định đóng server Discord. Dự án này chạy từ tháng 2 năm 2022 đến tháng 5 năm 2022, chính thức kết thúc vào ngày 25 tháng 5 năm 2022. Vào ngày này, chúng tôi đã dừng bot, xóa server Discord, xóa tài khoản bot Discord mà chúng tôi đã tạo cho dự án này, và công khai mã nguồn hoàn toàn tại kho lưu trữ GitHub này.

Tóm lại. Đây là một dự án vui và chúng tôi học được rất nhiều. Ngoài ra, vào thời điểm đó chúng tôi không biết điều này, nhưng dự án này là khởi đầu/phiên bản ban đầu cho dự án lớn nhất của chúng tôi cho đến nay… Notify-Cyber!