Approval-only channels solve one problem and create another. Nobody walks in unannounced — but the pending list gives you a name, a photo and nothing else. Four hundred rows of that, and the honest options are approve everyone, approve nobody, or spend an evening guessing.
Where join requests actually live
A request only exists if the way in demands one. That happens when the channel or group is private and the invite link you shared has approval turned on — in link settings it is the Request Admin Approval switch. A plain invite link adds people instantly; the same link with approval turned on puts them in a queue instead.
To view join requests, open the channel, tap the title, and look at the members section: pending requests sit above the member list as a separate row with a counter. Tapping a row gives you the profile and two buttons. That is the entire native interface — there is no filtering, no sorting, and no way to see where a request came from.
One detail that surprises admins: you need the Add Members permission to approve anything. Without it the buttons are there and do nothing, which reads like a bug and is not one.
What the person on the other side sees
After tapping the link they get a confirmation that the join request was sent, and then silence. Telegram gives no queue position, no estimate, no notification when an admin looks at it. If the request is approved, the channel simply appears in their list. If it is declined, nothing happens at all — no message, no explanation.
That silence is why join request cancelled is such a common search. Usually it is one of three things: the person tapped the button a second time and withdrew the request themselves, an admin declined it, or a moderation bot declined it automatically because a captcha went unanswered. From the outside all three look identical.
Does Telegram notify anyone
Admins see the counter go up and may get a push, depending on their own settings. Regular subscribers see nothing — a pending request is invisible to everyone but the admin team. And the requester is not told when their request is read, only when it is granted.
The problem approval does not solve
Requests filter out accidental joins. They do not filter out bots, because a modern spam account is built to survive exactly this check: real photo, plausible name, a few posts of history. Deciding by profile alone is guessing, and at four hundred rows it is guessing four hundred times.
This is where approval-only channels quietly fail. The admin gets tired, hits approve on everything, and ends up with the audience they were trying to avoid — only now with an extra step. We wrote separately about what that costs in how to get bots out of a group.
What a join request bot does
Search for telegram join request bot and half the results are API
documentation — developers wiring up ChatJoinRequest handlers in their own
code. That works, and if you are building something custom it is the right path.
For a channel owner the useful part is not the automation. Accepting everything automatically is the same mistake as accepting everything manually, just faster. What matters is what runs before the acceptance.
How TGuard handles the queue
The bot sits between the request and your list, and does its work before you ever see a row. First it writes to the person privately and asks them to confirm they are human — five minutes, one shot. Requests that go unconfirmed are declined and never reach you. That alone removes most of what a spam campaign sends, and the mechanics are in our piece on Telegram Captcha for Channels and Groups.
What survives the captcha still gets looked at. Accounts with a ban history across enough channels in the network are rejected at the door rather than cleaned out later — the antivirus explains how that list is built and why five independent bans mean something one does not.
Whatever is left you can clear in one move. Accept all, or decline all, with the count shown before you commit; the job runs in the background and pings you when it finishes. Requests are held for seven days, so a week away does not mean starting over.
Auto-approval exists as well, and it is only safe because it comes last in that order. By the time it fires, the captcha and the ban check have already had their say.
Turning it on
- Add @channel_guardian_bot to the channel as an administrator.
- Give it Add Members — without this right it cannot approve anything.
- Open My channels → your channel → protection settings, and enable captcha on requests.
- Decide whether approved-and-verified requests should be accepted automatically or left for you — filtered either way.
If your queue is already four hundred deep, start with decline-all and a fresh link with captcha attached. Rebuilding a clean queue takes a day; sorting a dirty one by hand takes an evening and still leaves you guessing.
Frequently Asked Questions
- Does Telegram notify anyone when you send a join request?
- Channel admins see the request appear in the pending list, and depending on their notification settings they may get a push about it. Other subscribers see nothing — a pending request is invisible to everyone except the admins. The requester sees only a confirmation that the request was sent, with no indication of how long approval will take.
- Why did my Telegram join request get cancelled?
- Three common reasons. You cancelled it yourself by tapping the button again — the wording is easy to misread. An admin declined it, and Telegram does not tell you which. Or a moderation bot declined it automatically: many channels attach a captcha to requests, and a request that is not confirmed within the time limit is dropped without a message.
- Can a bot approve join requests automatically?
- Yes, if it has the Add Members right in the channel. A bot can accept requests as they arrive, decline them, or work through an accumulated queue in bulk. The useful part is not the automation itself but what runs before it: a captcha the requester has to pass, and a check against a database of accounts banned elsewhere, so auto-approval does not become auto-admission for bots.