1) General Logic (everything in the group)
The bot publishes posts with inline buttons in the group.
Participants vote in the group (buttons 🟢 UP / 🔴 DOWN).
At the end of the voting, the bot announces the direction and "enters" (by agreement) into the deal.
Upon completion of the deal, the bot publishes the result in the group and selects a random winner from the voters.
To receive the prize, the winner clicks the “💸 Get Prize” button under the group post; the bot transfers to private messages to specify the wallet. (Telegram limitation: the bot cannot write first in private messages — the user must click the button and start a dialogue.)
2) Admin Management (in the group, without commands)
All actions are through context buttons under the bot's "service" message. Clicks are checked for admin rights.
2.1. Button “▶️ New Round”
Master launch (step-by-step in the group, buttons and/or manual input):
Pair: BTC/USDT • ETH/USDT • EUR/USD • 🔤 Enter manually
Deal amount: $50 • $100 • $200 • $500 • 🔤 Enter manually
Voting window: 5 min • 10 min • 15 min • 🔤 Enter manually
Position holding duration: 5 min • 10 min • Skip
Stream link (optional): Insert link • Skip
Confirmation: “✅ Publish” • “✏️ Edit” • “❌ Cancel”
2.2. Button “📡 Active Round”
Shows status and provides actions (contextually):
⏳ Extend voting (+5 min)
🛑 Close voting
📈 Open position by majority
✅ Lock PROFIT (enter amount)
❌ Lock LOSS (enter amount)
🏆 Select winner
💸 Publish “Get Prize” (deep-link in private messages)
🧾 Export participants (CSV) (option)
2.3. Button “⚙️ Settings”
♻️ Change vote: ON/OFF
🧮 One vote per user: ON
🌍 Country filter (optional): ON/OFF
🧩 Text templates (editing)
🔕 Comments under the post: ON/OFF
3) Placeholders for texts
{ROUND_ID} {PAIR} {AMOUNT} {DURATION_MIN} {HOLD_MIN} {CURRENT_PRICE} {UP_COUNT} {DOWN_COUNT} {VOTERS_COUNT} {MAJORITY} {PROFIT_USDT} {LOSS_USDT} {WINNER_USERNAME} {PRIZE_USDT} {NEXT_HOURS} {START_TIME} {STREAM_LINK}
4) Ready texts (for the group)
4.1. Project Announcement (attach/repost as needed)
Title: 🎮 PREDICT & WIN — a risk-free game
Text:
I am opening a real deal on {PAIR} for {AMOUNT}$.
You vote: UP ⬆️ / DOWN ⬇️ for {DURATION_MIN} minutes.
If the deal is in profit — the entire profit goes to a random voter.
If in loss — only I lose, you lose nothing.
The start of the nearest game: {START_TIME}
Stream: {STREAM_LINK} (if available)
Buttons: 🟢 UP | 🔴 DOWN | 📺 Watch stream | 📜 Rules
4.2. Start of Voting (main post)
Title: 🎯 Game #{ROUND_ID} — voting is open
Text:
Pair: {PAIR} | Amount: {AMOUNT}$ | Price: {CURRENT_PRICE}
Time for voting: {DURATION_MIN} min.
Question: Will the price of {PAIR} go up or down in the next {HOLD_MIN} min.?
Buttons:
Auto-reply in the group after clicking (in thread/reply):
✅ Vote counted: {CHOICE}. Participants: {VOTERS_COUNT}. Time left: {REMAIN_MIN} min.
If vote change is OFF: upon repeated clicking — “Vote change is prohibited.”
4.3. Reminder (mid-window)
Text:
⏰ {REMAIN_MIN} min. left. Participants: {VOTERS_COUNT}. Leading: {MAJORITY}.
(Show “Change to UP/DOWN” buttons if vote change is enabled.)
4.4. Closing Voting → Entering Position
Text:
Voting closed. UP — {UP_COUNT} | DOWN — {DOWN_COUNT}.
Direction: {MAJORITY}. Opening position for {AMOUNT}$ on {PAIR}.
Result in ~{HOLD_MIN} min.
📺 Stream: {STREAM_LINK}
4.5. Result: Profit
Text:
🎉 Deal in profit! Pair: {PAIR} | Profit: +{PROFIT_USDT}$
Total participants: {VOTERS_COUNT}
🏆 Random winner: @{WINNER_USERNAME}
💰 Prize: {PRIZE_USDT}$ USDT (= profit)
To receive the payout, click the button below and follow the instructions in private messages.
Button: 💸 Get Prize (deep-link in private messages: start=claim_{ROUND_ID})
4.6. Result: Loss
Text:
😔 This time a loss. Pair: {PAIR} | Result: −{LOSS_USDT}$
Participants: {VOTERS_COUNT}. None of the participants lost anything.
Next round — in {NEXT_HOURS} hours.
Buttons: 🔔 Notify about next | 📺 Watch stream
4.7. Rules (by clicking “📜 Rules”)
Text:
Participation is free. One vote per user (change: {ON/OFF}).
In a profitable deal, the entire profit goes to a random voter.
In a losing deal — the prize is absent.
Payouts in USDT (TRC20/BEP20) within up to 24 hours after clicking “Get Prize”.
Cancellation of the round is possible in case of technical failures.
This is educational/entertainment content, not financial advice.
5) Prize Payments (group scenario → private messages)
In the group — the button “💸 Get Prize” under the post with the result.
The button transfers the winner to private messages with the bot (deep-link).
In private messages, the bot asks for the USDT address (TRC20/BEP20) or confirmation of the previously saved one.
After sending — the bot confirms receipt of the data and marks the round as “waiting for dispatch”.
Texts in private messages to the winner:
“🎉 You are the winner of game #{ROUND_ID}. Prize: {PRIZE_USDT}$ USDT. Please provide TRC20/BEP20 address or confirm the saved one.”
Buttons: ✅ Confirm address | ✏️ Provide new address
“Payment of {PRIZE_USDT}$ USDT will be sent. Thank you for participating!”
6) Service texts (in the group)
“Voting has not yet started or has already ended.”
“You have already voted. Vote change is prohibited.” / “Vote updated: {CHOICE}.”
“Insufficient data to select a winner.”
“The winner has already been determined: @{WINNER_USERNAME}.”
“The stream link is incorrect.”