🤖 AI & Automation

Chạy Discord Bot trên VPS

4 min read

Mình vừa mới viết 1 con Automation bot hoạt động trên Server Discord, nhiệm vụ là ghi nhận hoạt động tương tác của tất cả thành viên trong Server để cộng điểm thưởng, chạy 24/7 trên Digital Ocean droplet (VPS).

Mặc dù đây là việc khá đơn giản với các bạn Lập trình viên, nhưng với các bạn làm nghề Content / Phát triển cộng đồng / Marketing hoặc solopreneur thì có thể sẽ hơi khó khăn nếu không có background công nghệ (but thanks to chatGPT, it easier now).

Ý tưởng ở đây là tự động hóa các công việc lặp đi lặp lại hàng ngày.

Hãy cùng phân tích nhu cầu nhé.

Mình tổ chức chương trình Loyalty cho các thành viên trong Server Discord với mục tiêu gia tăng tương tác, xây dựng cộng đồng. Để làm được điều này, mình có ý tưởng:

  • Mỗi khi người dùng tương tác trên server (nhắn tin, chia sẻ thông tin hữu ích,...) họ sẽ được cộng điểm Loyalty
  • Người dùng có thể sử dụng điểm để đổi quà miễn phí trên cửa hàng Loyalty

Như vậy, để thực hiện bước 1 bên trên, nếu không có "tự động hóa", bạn sẽ phải tự tổng hợp tương tác của người dùng bằng tay hàng tuần (hoặc hàng ngày, nếu lượng tương tác lớn) vào một file Google Sheets. Với mỗi tương tác, bạn sẽ đối chiếu sang bảng điểm và cộng điểm tương ứng.

Cách này rất tốn thời gian.

Thay vào đó, bạn viết một con bot, chèn vào đó tất cả logic cộng điểm, cho chạy 24/7/365. Như vậy, mỗi khi người dùng có tương tác, bot sẽ cộng điểm cho họ theo thời gian thực.

Lợi ích của phương pháp này là:

  • Không tốn công làm công việc nhàm chán lặp đi lặp lại (ngồi cộng điểm)
  • Không có sai sót (nếu làm bằng tay thì có thể có sai sót, còn máy thì chuẩn 100%)
  • Dữ liệu cập nhật real-time theo thời gian thực, người dùng có thể xem được điểm của họ bất kỳ lúc nào
  • Chi phí thấp, khoảng $5/tháng để có một VPS. VPS này các bạn có thể làm nhiều thứ nữa như host website, hay host thêm nhiều con bot khác.

Vậy triển khai như thế nào?

Ở bài này mình sẽ chỉ chia sẻ tổng quan cho anh em có định hướng chứ sẽ không đi vào chi tiết từng bước, do mỗi đặc thù cụ thể thì sẽ có những thao tác khác nhau.

Bước 1: Code tính năng

Về ngôn ngữ lập trình và framework, bạn có thể sử dụng Python, Javascript,...

Ở đây mình dùng ReactJS.

Về database, do có sẵn website sử dụng WordPress nên mình sẽ bắn event về website để lưu trữ, thông qua một API endpoint.

Thật may mắn WP có plugin myCRED chuyển sử dụng cho các chương trình Loyalty, nên mình sẽ sử dụng plugin này để lưu trữ điểm loyalty luôn.

Bước 2: HOSTING

Bước này là đưa bot lên chạy online 24/7.

Với tinh thần luôn tìm phương án rẻ nhất (haha), mình tìm các app platform miễn phí. Một số phương án đã xem xét bao gồm:

  • AWS Lambda + Gateway API
  • Heroku
  • Fly.io
  • Vercel

Tuy nhiên gặp phải một vấn đề, các platform serverless thì không đáp ứng được bot chạy liên tục. Còn các phương án khác sử dụng tài nguyên máy chủ cloud, thì không còn miễn phí.

Vì vậy mình sử dụng Droplet, một dịch vụ VPS của DigitalOcean.

Tới đây thì sẽ phải đi qua các thủ tục:

  • Setup môi trường: cài Nodejs và các dependencies
  • Chuyển file local lên VPS & chạy
  • Tự động tác vụ: sử dụng PM2 package

Thành quả

Mỗi tương tác sẽ ghi điểm cho người dùng, theo đúng mức mà mình đã setup từ đầu.

Điểm này được tích lũy để đổi lấy các phần quà trong cửa hàng.

Kinh nghiệm

Một số kinh nghiệm khi triển khai:

  • Bot hỗ trợ tự động hóa được khá nhiều việc, tiết kiệm công sức
  • Nếu muốn xây dựng cộng đồng hay scale up works, dùng bot sẽ tiết kiệm chi phí và nguồn lực hơn là mở rộng quy mô nhân sự
  • Một số việc chỉ bot làm được, và làm hiệu quả hơn con người