Chuyển đến nội dung

Giải pháp · Bot

Thuê VPS chạy bot Telegram

Một bot khi rảnh dùng dưới một trăm megabyte và gần như chỉ chờ đợi, nên máy chủ hầu như không bao giờ là giới hạn: U1-1 giá $6.90 mỗi tháng chạy tốt một bot. Điều thực sự quyết định hóa đơn là media, và việc bạn có tự chạy Bot API server hay không. Cả hai đều là phép tính, và đều có bên dưới.

Quyết định nằm bên dưới quyết định

Webhook hay long polling

Chính điều này, chứ không phải gói, quyết định bot của bạn có cần tên miền, chứng chỉ và một cổng mở hay không.

Long polling

Bot của bạn kết nối ra Telegram và chờ cập nhật. Không cần tên miền, không cần chứng chỉ TLS, không cần cổng mở ra internet, hoạt động được sau NAT. Đây là cách nhanh nhất để chạy được thứ gì đó và là một lựa chọn lâu dài hoàn toàn ổn cho hầu hết các bot.

Webhook

Telegram kết nối tới bạn. Cần địa chỉ công khai, chứng chỉ hợp lệ và một cổng mở (gói nào ở đây cũng đáp ứng được), và đổi lại không có vòng lặp polling và mở rộng tốt hơn khi tải thực tế cao. Hãy chuyển khi tải hoặc độ trễ đòi hỏi, không sớm hơn.

Phép tính

Một gói thực sự chạy được bao nhiêu bot

Số bot = (RAM − 300 MB cho hệ điều hành) ÷ dung lượng một bot chiếm. Hai cột là bot lệnh không trạng thái và bot có ORM, bộ lập lịch và cache.

Khả năng chạy tiến trình bot và hạn mức lưu lượng hằng tháng của từng gói, kèm giá trực tiếp
GóiRAMBot nhẹBot nặngLưu lượngGiáTriển khai
U1-1Một bot, mọi quy mô người dùng1 GB124Unmetered$6.90Triển khai
C1-1-25Một bot, có tính lưu lượng nhưng rẻ1 GB1241 TB$9.90Triển khai
GL2-4Nhiều bot, hoặc bot có cơ sở dữ liệu4 GB6325Unmetered$11.90Triển khai
BD-8Bot API server tự lưu trữ8 GB1315232 TB$12.90Triển khai

Số người dùng bot của bạn không có trong phép tính này, vì nó không phải là vấn đề: Telegram chuyển các cập nhật đến tiến trình của bạn lần lượt từng cái thay vì mở một kết nối cho mỗi người dùng. Điều làm thay đổi câu trả lời là dữ liệu trạng thái do chính bạn lưu giữ: một bộ nhớ đệm lớn, một cơ sở dữ liệu trong tiến trình, một mô hình.

Con số quyết định hóa đơn

Media, không phải bộ nhớ

Kích thước tệp trung bình × số tin nhắn mỗi ngày × 30. Cả hai chiều đều được tính: tệp nhận về cũng là lưu lượng.

Lưu lượng hằng tháng theo loại tin nhắn ở mức một trăm, năm nghìn và năm mươi nghìn tin nhắn mỗi ngày
Những gì bot truyền tải100/ngày5,000/ngày50,000/ngày
Chỉ văn bảnMột lệnh và một phản hồi. Gần như không tốn gì.< 1 GB< 1 GB3 GB
ẢnhMột ảnh nén, gửi và nhận.< 1 GB44 GB439 GB
Tin nhắn thoại và video ngắnMức tải thông thường của một bot cộng đồng.9 GB439 GB4.3 TB
Tài liệu và video dàiMức trần tải xuống của chính Telegram cho một bot thông thường.59 GB2.9 TB28.6 TB

Điều duy nhất làm thay đổi máy chủ

Bot trên Bot API công khai có thể tải xuống tệp tối đa 20 MB và tải lên tối đa 50 MB (đây là giới hạn của Telegram, không phải của chúng tôi), và các tệp không bao giờ chạm vào ổ đĩa của bạn. Nếu tự chạy Bot API server, mức trần tăng lên 2 GB và mọi tệp đều nằm trên máy chủ của bạn. Đó là lúc ổ đĩa và lưu lượng không còn là chuyện phụ: BD-8 cung cấp 100 GB SSD và 32 TB với giá $12.90, đúng cấu hình phù hợp. Nếu bạn không làm việc đó, đừng trả tiền cho nó.

Nói thẳng

Gói chúng tôi thực sự sẽ mua

Chính chúng tôi cũng chạy một bot Telegram. Đây là máy chúng tôi sẽ đặt nó lên.

Cho một bot

U1-1 · $6.90/tháng

1 nhân, 1 GB, 15 GB SSD, và không đo lưu lượng: vì vậy một bot bất ngờ bắt đầu truyền media cũng không thể tạo ra hóa đơn ngoài dự kiến. Chạy bot dưới systemd với Restart=always, và cách duy nhất còn lại khiến nó ngừng hoạt động là mã của chính bạn. Nếu bạn cần lớn hơn, chuyển một bot chỉ là sao chép một thư mục và một token.

Câu hỏi

Những điều mọi người hỏi trước khi mua.

Bot Telegram cần bao nhiêu RAM?
Ít hơn nhiều so với mức thường được quảng cáo. Bot là một tiến trình chạy lâu dài và gần như chỉ chờ đợi: bot lệnh không trạng thái dùng khoảng 60 MB, còn bot có ORM, bộ lập lịch và cache thì gần 150 MB. Sau khi hệ điều hành chiếm khoảng 300 MB, một máy 1 GB vẫn đủ chỗ cho 4 bot nặng hoặc 12 bot nhẹ. Số lượng NGƯỜI DÙNG hầu như không ảnh hưởng, vì Telegram gửi từng cập nhật một tới tiến trình của bạn, không phải mỗi người dùng một kết nối. Điều thực sự thay đổi kết quả là trạng thái bạn tự giữ trong bộ nhớ: một cache lớn, một cơ sở dữ liệu trong tiến trình, một mô hình.
Webhook hay long polling?
Bắt đầu bằng long polling, chuyển sang webhook khi cần. Với long polling, bot mở kết nối ra Telegram và chờ: không cần tên miền, chứng chỉ hay cổng mở, nghĩa là nó hoạt động sau NAT và là cách nhanh nhất để có thứ gì đó chạy được. Webhook để Telegram kết nối tới BẠN, nên cần địa chỉ công khai, chứng chỉ TLS hợp lệ và một cổng mở ra internet; đổi lại, nó loại bỏ hoàn toàn vòng lặp polling và mở rộng tốt hơn khi bot thực sự bận. Cả hai đều chạy tốt trên máy nhỏ nhất ở đây. Lý do thực sự để chuyển đổi là tải hoặc độ trễ, không phải xu hướng.
Giới hạn kích thước tệp là bao nhiêu?
Đây là giới hạn của chính Telegram, không phải của chúng tôi: một bot dùng Bot API công khai có thể tải xuống tệp tối đa 20 MB và tải lên tối đa 50 MB. Tự chạy máy chủ Bot API của riêng bạn sẽ nâng mức đó lên 2 GB và, quan trọng hơn, khiến tệp nằm trên ổ đĩa máy chủ của bạn thay vì đi qua máy chủ của Telegram. Đó là thay đổi duy nhất thực sự ảnh hưởng đến loại máy bạn cần: lúc này ổ đĩa và lưu lượng trở nên quan trọng, và đó là lý do bảng phía trên đặt BD-8 ở hàng đó chứ không phải ở các hàng khác.
Tôi có bị hết băng thông không?
Bot văn bản thì không bao giờ. Bot media thì có thể, và đáng bỏ ba mươi giây để tính: kích thước tệp trung bình × số tin nhắn mỗi ngày × 30. Năm mươi nghìn tin nhắn thoại mỗi ngày, mỗi tin 3 MB, là khoảng 4.3 TB mỗi tháng, vượt hạn mức của hầu hết các gói rẻ nhưng còn xa mới tới 32 TB của BD-8, hoặc dòng Unmetered, nơi câu hỏi này không tồn tại. Cả hai chiều đều được tính: tệp bot nhận và tệp bot gửi đều là lưu lượng.
Làm sao để bot tiếp tục chạy sau khi tôi đóng terminal?
Một systemd unit, không phải phiên screen. Viết một tệp service nhỏ với Restart=always, bật nó lên, và bot sẽ tự chạy lại sau khi bị lỗi và sau khi khởi động lại mà bạn không cần thức canh. Đây là lý do phổ biến nhất khiến một bot "ngừng hoạt động" trên VPS, và đó không phải vấn đề của hosting: một tiến trình khởi động thủ công sẽ chết theo phiên SSH đã khởi động nó. Docker với restart policy cũng làm được việc tương tự nếu bạn muốn đóng gói theo cách đó.
Tôi có thể chạy nhiều bot trên một máy chủ không?
Có, và hầu hết mọi người nên làm vậy. Mỗi bot là một tiến trình riêng với systemd unit riêng và token riêng; chúng dùng chung máy, chung cơ sở dữ liệu nếu bạn muốn, và không gì khác. Phép tính trong bảng chính là câu hỏi này: một máy 4 GB chứa được 25 bot nặng trước khi bộ nhớ trở thành giới hạn. Hãy đặt chúng trên các cổng riêng và người dùng riêng nếu chúng dành cho những người khác nhau.
Bot nên chạy ở khu vực nào?
Bất kỳ đâu người dùng của bạn truy cập được và độ trễ tới Telegram hợp lý: bot giao tiếp với hạ tầng của Telegram, không trực tiếp với người dùng, nên quy tắc "gần khán giả" thông thường ít quan trọng hơn so với website. Nếu bot còn phục vụ bảng điều khiển web hoặc API cho chính những người dùng đó, hãy chọn khu vực theo yêu cầu đó. Nếu chưa chắc, hãy triển khai theo giờ ở hai khu vực, đo đạc, rồi xóa khu vực kém hơn: $0.0113 mỗi giờ nên thử nghiệm này rất rẻ.