Technical Specification (TS) for the Refer&Earn Bot (REB) Competition

1. Introduction
1.1 Description
As part of this competition, you will develop a Telegram bot named Refer&Earn Bot (REB) that allows users to:
- Manage their balance (earn, spend, and withdraw funds).
- Invite friends via a referral system.
- Receive daily bonuses.
- View statistics.
- Contact support.
1.2 Expected Outcome
A fully functional Telegram bot with a user-friendly interface and clean, maintainable code.
Important: The bot must be configurable, allowing administrators to adjust its settings.
2. Core Features
2.1 Registration and Authorization
- Users must join mandatory channels before accessing the bot.
2.2 Balance Management
- Users can check their current balance.
- Funds can be added and deducted.
- Transaction history should store up to 10-20 most recent transactions.
2.3 Withdrawals
- Users can request withdrawals by entering an amount.
- The system validates:Minimum and maximum withdrawal limits.
- Sufficient balance availability.
- Wallet confirmation. (User can set wallet before)
- Withdrawal requests are sent to an admin channel, where an admin approves or declines the request manually.
- Users receive notifications about their withdrawal status.
- Once a withdrawal is confirmed, information about the reward is published in a public channel (configurable by the admin).
2.4 Referral System
- Users receive a unique referral link.
- Bonuses are credited for each referred user.
- The system tracks and displays statistics (number of referrals, earned rewards).
2.5 Bonus System
- User can receive bonuse buy clicking button at configurable time intervals (default: every 24 hours).
2.7 Statistics
- The bot tracks total users, referral performance and etc
- etc
2.8 Support
- Users can send support requests.
- The bot provides automated responses to frequently asked questions (FAQ).
3. Administrator Features
3.1 User Management
- Ban/unban users.
3.2 Channel Management
- Add/remove mandatory channels.
- Verify user subscriptions.
- Set up the admin channel for withdrawal requests.
- Set up the public channel for reward announcements.
3.3 Withdrawal Management
- Approve/decline withdrawal requests via the admin channel.
- Automatically notify users about withdrawal decisions.
- Post reward announcements in the public channel after approval.
3.4 Broadcasting (Mass Messaging)
- Admins can send broadcast messages to all users.
- Admins can customize the message content before sending.
3.5 Flexible Bot Configuration
- Modify bot messages.
- Set up bonus amounts and intervals.
- Adjust referral reward amounts.
- Specify the admin/public channels for withdrawal handling and announcements.
4. Development Requirements
4.1 Clean Code
- The bot’s logic should be modular and well-structured.
- Variables and functions should have clear, meaningful names.
- No hardcoded values – all essential settings should be adjustable.
4.2 User-Friendly Interface
- Inline buttons for navigation.
- Clear and concise user messages.
4.3 Configurability
- Admins should be able to adjust key bot settings