How to build a Telegram giveaway bot with verified entries
By the Botable team
A Telegram giveaway bot collects entries, checks that each entrant meets the conditions you advertised, draws winners, and announces them with proof the draw was fair. Describe the entry rules, the prize count and the closing time, and Botable builds the entry table and the draw for you.
What is a giveaway bot?
A Telegram giveaway bot is a fairness mechanism wearing a marketing hat. Entries are trivial to collect; the parts that decide whether anyone believes the result are verification and the draw. Verification means checking the condition you advertised — usually that the entrant is actually a member of the channel — at entry and again at draw time, because a meaningful share of entrants join, enter, and leave within the hour. The draw itself should be reproducible: store entries with a sequential index, record the seed or the drawn indices, and publish them with the result. A giveaway whose winner cannot be checked is indistinguishable from one that was rigged, and in a community that suspicion is more expensive than the prize. One entry per Telegram account, enforced as a uniqueness rule rather than a check, closes the obvious hole.
What commands does it have?
| Command | What it does |
|---|---|
/giveaway | Creates a giveaway with a prize and end time |
/enter | Enters, after conditions are verified |
/entries | Entry count and the entrant's own status |
/draw | Picks winners and publishes the proof |
/winners | Announces and lists past winners |
What do you need before you start?
- A Telegram bot token from @BotFather
- The channel or group membership you want required, with the bot as admin so it can check
- Clear rules: how many winners, when it closes, who is eligible
How do you build it?
How does the bot verify entry conditions?
It asks Telegram whether the entrant is a member of the required channel, which requires the bot to be an admin there. Check at entry and again at draw time — re-checking is what stops the join-enter-leave pattern that otherwise dominates entries.
How do you stop duplicate entries?
One row per Telegram user id per giveaway, enforced as a uniqueness constraint rather than a look-up-then-insert. The second form loses the race when someone taps twice, and in a giveaway people always tap twice.
How do you make the draw verifiable?
Store entries with a sequential index and publish the total, the seed, and the drawn indices alongside the winners. Anyone can then reproduce the selection. Ask for this explicitly; it is the difference between a result people accept and an argument.
What happens if a winner never responds?
Decide up front and say it publicly: a claim window, then a redraw from the remaining entries. Without a stated window every unclaimed prize becomes a negotiation.
A prompt you can use as-is
Paste this into Botable and adjust the details. It is specific on purpose — a vague description produces a vague bot.
Build a giveaway bot. /giveaway creates one with a prize description, a number of winners and an end time. /enter checks that the user is a member of my channel before recording an entry, one per Telegram account enforced as a uniqueness rule. /entries shows the total and whether the caller is entered. At the end time, re-verify every entrant is still a member, then draw and announce the winners along with the total entry count, the random seed and the drawn indices so the result can be reproduced. Unclaimed prizes redraw after 48 hours.
Who is this bot for?
- Channels running membership giveaways to grow an audience
- Product launches doing a fair public draw
- Communities rewarding members without an argument about the result
What goes wrong with this kind of bot?
- Verify membership at draw time as well as entry, or join-enter-leave wins your prizes
- An unpublished draw method reads as rigged no matter how fair it was
- Giveaways are regulated in some jurisdictions — publish the rules and eligibility
Questions about giveaway bots
Can entries be weighted, for example by referrals?
Yes. Store a weight per entrant and draw proportionally, and publish the weights with the result so the draw stays checkable. Referral-weighted giveaways grow faster but are much easier to game, so cap the weight.
Can it run more than one giveaway at once?
Yes — entries are stored per giveaway id, so several can run in parallel in the same channel with separate entry lists and separate draws.