Case: how to invite to the channel only those bot users who aren't subscribed yet

2026-08-13

Almost every one of our clients with a Telegram bot ends up with a channel too, sooner or later: news, promotions, content all go there. And almost every one of them runs into the same task — telling bot users about the channel, the ones who don’t know about it yet.

The obvious way is to send a broadcast from the bot: “Subscribe to our channel!” The problem is that a broadcast like this goes out to everyone in the bot, including people who are already subscribed to the channel. Best case, that’s just a redundant message. Worst case, it’s annoying enough to cause unsubscribes from the bot: “I’m already there, why are you telling me this?”

The task: send a channel invite only to the bot users who aren’t subscribed to the channel yet.


Step 1. Connect the bot and the channel as resources

For Graspil to match the bot’s audience against the channel’s audience, both need to be connected as resources under the same account:

  • the bot — via token auto-setup, proxying, or the API;
  • the channel — add the admin bot to the channel, and Graspil takes it from there, collecting events automatically.

Once both resources are connected, Graspil can tell, for any Telegram user, whether they’re among the channel’s subscribers — even if that person has never written to the bot.


Step 2. Why “broadcast to everyone” doesn’t work

If you just open “Broadcasts” → “Create campaign” and pick all bot users as the audience, the message goes out to 100% of the base. There’s no way to filter out subscribers manually — these are two separate user lists, and without a dedicated tool there’s no way to match them against each other.

Some clients in this situation just live with the redundant sends; others export users manually and cross-check the lists in Excel. Either way, you either hurt your broadcast metrics or lose time every time you need a new wave of invites.


Step 3. Build the audience: the “Not in resource” cross-resource filter

Graspil’s broadcast audience builder has a cross-resource filter, built specifically to match audiences across different connected resources:

  1. Click “Add cross-resource filter.”
  2. Choose the mode “Not in resource.”
  3. Pick the resource you need — the channel.

That’s it — the audience is ready: all bot users who aren’t in the channel. No need to track and subtract events by hand — the filter matches the two resources directly and returns the right intersection.

You can add regular conditions to the same filter if you want — language, registration date, custom user fields — to narrow the audience further.


Result

The broadcast now reaches only the part of the base it’s actually useful for: users who haven’t seen the channel yet. That gets you three things right away:

  • Higher response — the message is relevant to 100% of recipients, not just part of them.
  • Fewer unsubscribes and complaints — nobody gets invited somewhere they already are.
  • The campaign is repeatable — as new bot users show up who still aren’t in the channel, the same audience builder picks them up again, no manual exports needed.

This kind of audience isn’t limited to a one-off broadcast either — you can wrap it into an automation: for example, sending a reminder once a week to new bot users who still haven’t subscribed to the channel by then.


Bottom line

The bot and the channel in Graspil are two resources within one system, so their audiences can be combined in a couple of clicks — included, excluded, intersected. Nothing to export and cross-check by hand — the broadcast audience builder does it for you.

If you have a similar task — segmenting users across several resources (bot, channel, group) for targeted broadcasts — reach out, we’ll help you set it up.

订阅我们的频道

不错过任何新文章和产品更新。

加入频道

准备好开始了吗?

立即为您的 Telegram 机器人启用专业数据分析。

接入机器人 ->