What methods have worked best for you to reduce or block bot joins without making it difficult for genuine members to participate?
I’ve had the same problem with public groups. The thing that worked best for me was adding a verification step for new members and limiting what fresh accounts can do right after joining. Full manual approval is clean, but it gets annoying when the group starts growing. I also noticed most spam bots don’t bother if there’s even a small extra step, while real users usually don’t mind clicking a button or passing a quick check. The goal is just adding enough friction without making normal people feel like they’re signing up for a bank account.
Verification definitely helps, but have you found a balance that blocks bots while keeping the onboarding process quick for legitimate members?
There is no balance in my opinion. If you don't want bots you put verification. If you don't put verification the bots will join and possible ruin your TG group.
One thing I'd recommend is using a Telegram moderation bot instead of relying only on admins to remove spam accounts manually. A good anti-spam bot can automatically detect suspicious activity, block repeated links, filter unwanted messages, and restrict new members who start posting too quickly. I'd also turn on join requests if the group doesn't need completely open access. That gives admins a chance to check who's joining. Another useful trick is setting a short verification step for new members, such as a CAPTCHA, before allowing them to send messages. I'd be careful not to make the rules too strict, though. You don't want genuine new members struggling just to participate. It's also worth limiting links and media for brand-new accounts until they've been in the group for a while. In my opinion, the best setup is a combination of automated moderation, sensible joining restrictions, and active admins. No single bot catches everything, so having a few layers of protection makes a big difference.
What actually worked for us, in order of effectiveness: 1. A dumb human question at signup. Not a CAPTCHA, a real question. "Why do you want to join?" with a minimum length. Bots either skip it, paste lorem ipsum, or write something generic that a moderator spots in two seconds. Real humans answer it fine and never complain. This one filter killed maybe 80% of our junk signups. 2. New account probation. First 48 hours: no links, no DMs, no posting in marketplace areas. Costs genuine members almost nothing (they're usually just reading at that stage anyway) and makes the account completely worthless to spammers, who need to drop links on day one to profit. 3. Disposable email blocking. Blocklist of temp-mail domains, refreshed monthly. Cheap, zero friction for real users. 4. Rate limits instead of CAPTCHAs. A human registers once and posts a few times a day. A bot does 40 actions in 3 minutes. Rate limit the pattern, not the person. What didn't work for us: making the signup maze longer for everyone. Every extra click killed real conversions too. The trick is picking friction that bots can't fake and humans barely notice - a question, a waiting period, a rate limit. CAPTCHAs fail on both ends: bots solve them via farms, and your 60-year-old genuine member fails them three times and gives up. The 48-hour probation idea honestly came from watching bigger forums run it, and it's the one I'd defend to the death.
Most of it is covered already, one thing nobody mentioned: a lot of those bot joins aren't there to post spam, they're there to scrape your member list and DM everyone. Turn on Hide Members in the group settings (it shows up once you're past 100 members). Then the joiners can't pull the list, and your members stop getting the "hi dear" DMs that make them leave. Also pin a message saying admins never DM first. Doesn't stop the bots, but it stops people falling for the fake admin accounts that copy your name and photo.
i would test onboarding with a normal new member after each change and record bot joins alongside genuine members who fail the check add one restriction at a time so you can see whether it reduces spam or just makes people abandon joining and keep an admin contact in the pinned rules for anyone incorrectly restricted