Profile
Quỳnh Ruby
Author
Quỳnh Ruby quynhfruby.com
Author
Quỳnh Ruby quynhfruby.com
Author
Quỳnh Ruby quynhfruby.com

Hiểu đúng về member_limit trong invite link qua Telegram Bot

Bối cảnh

Chuyện là mình quản lý một group Premium Membership trên Telegram, mỗi khi có thành viên đăng ký membership thì hệ thống sẽ tự động tạo link invite vào group dành riêng cho người đó và chỉ có hiệu lực 1 lần. Khi hết thời hạn membership, hệ thống sẽ remove thành viên đã hết hạn ra khỏi nhóm Telegram đó.

Mọi thứ vẫn ổn cho đến một hôm mình ngồi rà soát ngẫu nhiên thì thấy có thành viên đã từng remove khỏi nhóm nhưng vẫn join lại được từ link invite cũ 😱.

Đi tìm hiểu nguyên nhân thì hoá ra đó giờ mình đã hiểu sai về logic của member_limit khi tạo Invite Link qua Telegram Bot.

Trước mình nghĩ khi tạo link mời với tham số member_limit sẽ giới hạn được số người vào nhóm qua link đó.

Nên về lý thuyết, nếu đặt bằng 1, chỉ có 1 người được vào. Người thứ 2 bấm vào sẽ nhận thông báo link hết hiệu lực. Quá hoàn hảo cho hệ thống bán vé hoặc khóa học đúng không? Nhưng thực tế không đơn giản như vậy.

Cơ chế tính giới hạn của Telegram

Theo docs Telegram, member_limit là "số người tối đa có thể cùng lúc là thành viên nhóm qua link này". Telegram xác định giới hạn dựa trên số lượng thành viên đang hiện diện trong nhóm thông qua link đó, chứ không dựa trên số lượt click hay số lần tham gia.

  • Trường hợp xảy ra: Nếu tạo link có member_limit = 1, một người dùng tham gia nhóm thành công thì link sẽ tạm thời hết hiệu lực.
  • Hệ quả: Nếu người dùng đó rời khỏi nhóm, hệ thống Telegram sẽ ghi nhận vị trí đó trống và tự động kích hoạt lại link mời này cho người tiếp theo sử dụng.

Điều này có thể ảnh hưởng đến các hệ thống cần kiểm soát nghiêm ngặt số lượng người vào nhóm (ví dụ: link một lần cho hội viên).

Giải pháp xử lý

Để đảm bảo link mời vô hiệu hóa hoàn toàn ngay sau khi có người sử dụng:

  1. Lắng nghe sự kiện thành viên mới tham gia nhóm thông qua update chat_member.
  2. Chủ động gọi phương thức revokeChatInviteLink để hủy link mời đó ngay lập tức.

Một số lưu ý

  • Không thể sử dụng đồng thời member_limit và tính năng yêu cầu phê duyệt thành viên (creates_join_request = True).
  • Nên kết hợp tham số expire_date để thiết lập thời gian hết hạn cho link, tránh việc link chờ quá lâu trên hệ thống.