Skip to content

Collects as they arrive, acts daily

Run a giveaway for your channel subscribers

Only real subscribers can enter, and a random winner is announced on the day you choose.

Runs
Collects as they arrive, acts daily
Apps
Telegram
AI
Not needed
Access
bot is channel admin

Send this to your assistant

Create a ClickRuntime automation: when people send 'join' to my Telegram bot, check they're subscribed to my channel and add them to the draw. Every Friday at 6pm, pick a random winner and announce it in the channel.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A creator runs a giveaway on a Telegram channel with the rule that you must be subscribed to enter. Entrants send a message to the bot, but verifying each one by hand is tedious, and some people claim to follow when they do not. The draw ends up either unfair, because cheaters slipped in, or delayed, because someone has to check a hundred names. Both problems cost you credibility with your own audience.

When someone messages the bot, ClickRuntime calls getChatMember to confirm the person is subscribed to your channel and stores valid entrants. On Friday it picks one at random, announces the winner and confirms the entry count. Verification and the draw happen without anyone watching a list. A winner is named without you opening a spreadsheet.

It suits creators, shops and communities who run regular promotions on Telegram.

What you get out of it

  • Only real subscribers can win

    The check happens when the person enters, using Telegram's own membership data. That keeps the rules fair and protects the giveaway from people who join and leave, or never join.

  • The draw is demonstrably random

    A random pick from the stored entrants is easy to explain and defend. Participants trust a giveaway more when the process is clear, and disputes are less likely. Followers can see the process is not rigged in anyone's favor.

  • Entry takes seconds for participants

    Sending one message to a bot is easier than filling a form. Lower friction means more entries, which grows engagement and attention on your channel. Fewer steps for entrants means more people finish them.

  • The announcement is automatic

    The winner is announced at a set time without you remembering to do it. Consistent timing builds a habit among followers who return to see the result each week. A reliable schedule builds anticipation among your followers every week.

  • You keep an entrant list

    Stored entries show who took part and when. That helps if someone asks whether they were included, and gives you a list of engaged followers to thank or reward. It is also a handy list of your most engaged followers.

How it works

What happens, step by step

  1. When someone messages your bot to enter the giveaway, ClickRuntime checks they are subscribed to your Telegram channel.

  2. Subscribers are added to the list of entrants. Everyone else is told to subscribe first.

  3. On Friday, it picks a winner at random from the entrants.

  4. The winner and the number of entries are announced in your channel.

Before it runs live

  • Connect Telegram
  • Paste your automation's link into the other app's webhook settings

What you get

RunsCollects as they arrive, acts daily
Run a giveaway for your channel subscriberstoday, 9:00Succeeded
Telegram · @mychannelThis week's giveaway winner is Maya! 🎉 (214 entries)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Telegram steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
channel_subscriber_check_and_giveaway_draw.pyexample
import random
from clickruntime import on_event, on_trigger, http, credentials, state

CHANNEL = "@mychannel"

def tg(method, **params):
    r = http.post(f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/{method}", json=params)
    r.raise_for_status()
    return r.json()["result"]

@on_event
def join(event):
    msg = (event.json or {}).get("message") or {}
    if msg.get("text", "").strip().lower() != "join":
        return {"joined": False}
    user = msg["from"]
    status = tg("getChatMember", chat_id=CHANNEL, user_id=user["id"])["status"]
    if status not in ("member", "administrator", "creator"):
        tg("sendMessage", chat_id=msg["chat"]["id"], text=f"Subscribe to {CHANNEL} first, then send join again.")
        return {"joined": False}
    entries = state.get("entries") or {}
    entries[str(user["id"])] = user.get("first_name", "someone")
    state.set("entries", entries)
    tg("sendMessage", chat_id=msg["chat"]["id"], text="You're in this week's draw. Good luck!")
    return {"joined": True}

@on_trigger
def draw(event):
    entries = state.get("entries") or {}
    if not entries:
        return {"winner": None}
    winner = random.choice(list(entries.values()))
    tg("sendMessage", chat_id=CHANNEL, text=f"This week's giveaway winner is {winner}! 🎉 ({len(entries)} entries)")
    state.set("entries", {})
    return {"winner": winner, "entries": len(entries)}

FAQ

Common questions

How does it know someone is a subscriber?
The Telegram Bot API method getChatMember returns a user's status in a channel. If the status shows they are a member, the entry is accepted. The bot must be an administrator of the channel to run this check.
Can one person enter more than once?
No. Entrants are stored by Telegram user ID, so repeat messages do not add extra entries. If you want multiple chances for actions like referrals, tell your assistant the rule and it can be built in.
How are ties or unreachable winners handled?
The draw picks one person, and the announcement tags them. If they do not respond, you can draw again from the remaining entrants. A second draw can be run on request, with the first winner excluded.
What permissions does it need?
bot is channel admin. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Run a giveaway for your channel subscribers” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.