Repository navigation
Bot Guide
The Telegram bot is where customers buy and get help. It speaks Persian and English, uses your name, texts and links, and every message can be edited in the dashboard (Branding & texts). The customer picks a language on the first /start and can change it in Settings.
| Button | What it does |
|---|---|
| Buy service | Plans, then payment, then the service |
| My services | Status, expiry and traffic of each service. Renew or add traffic |
| Wallet | Balance, top-up, history, apply a gift code, My codes |
| Free trial | One free service per Telegram account, if you made a trial plan |
| Invite friends | The customer's invite link and a card to forward |
| Support | Tickets and the FAQ |
| Settings | Language and notifications |
| Top users | A board of the customers who invited the most people. Shown while the referral reward is above 0 and you have not switched the board off |
| Become a reseller | Shown only while your license includes resellers |
| Bulk purchase | Buy several services of one plan at once, from the wallet |
A bottom menu keeps the main buttons one tap away. Buttons are colored by what they do: green pays or confirms, blue opens a main action, red cancels.
| Command | Does |
|---|---|
/start, /menu
|
Open the main menu |
/new |
Buy a new service |
/renew |
Renew a service |
/status |
My services |
/codes |
My codes: the customer's own reward and gift codes |
/terms |
Terms of service and privacy |
/paysupport |
Help with a payment |
/cancel |
Leave what you were doing |
- Pick a plan. If you made plan groups, the customer picks a group first and reads its text. The list can be a two-column table (name and price) or one button per plan (
bot.plan_layout). - Optionally enter a discount code.
- Pick a payment method. See Payments.
- After payment, the bot sends the subscription link, a QR code and a button to open the service's page. See Subscription Page.
If your panel is down, the customer keeps a paid order and gets the service when it is back.
By default every new config gets an automatic name (u<telegram id>-<random>). You can let buyers choose it: Settings → Config names, one switch for customers and one for resellers, both off until you turn them on.
-
While buying a new service (also a reseller's Buy for a customer, and the Mini App's checkout) the payment menu shows Config name: automatic and a Choose a config name button. A name is 4 to 20 English letters and digits, with at least one of each, like
sobhan1234; it may not start withuand a digit. A reseller's prefix stays in front:sob-sobhan1234. - The name is checked before payment, in BOBRES and on every enabled server. A taken name ("this name is taken, try another") or a server that does not answer ("could not check, try again") is explained at once; the buyer types another one or keeps the automatic name.
- If someone makes a client with that name in a panel between the check and the delivery, the paid service is still delivered, under the automatic name, and the message says so.
- Rename: each service has Change config name in My services (and the Mini App; staff have Rename on the dashboard's service page). The subscription link stays the same. Services on a Marzban or S-UI server cannot be renamed (the button is hidden there): Marzban cannot change a username, and S-UI's link carries the name.
- Renewals, traffic packages and bulk purchases never ask for a name.
- Renew and add traffic from My services, with the same link.
- Find by link: a customer who does not see a service in their list sends its subscription link, sees its state, and can renew it.
- Reminders come 3 days and 1 day before expiry, at 80% of the traffic and when it ends, with Renew and Add traffic buttons.
- Support is one open conversation per customer. They can send text, photos and PDFs. Staff replies arrive in the chat.
- Help center: the FAQ and tutorials you write in the dashboard (Branding & texts, Help content).
- Gift codes add credit to the wallet. Reward codes are discount codes you hand out after a purchase. Cashback puts a share of a delivered order back into the wallet, with a message. The Daily wheel gives customers with paid orders one free spin a day. See Plans and Pricing.
-
My codes (Wallet, or
/codes) lists the customer's own codes, newest first, five to a page: each reward code whole (a tap copies it) with what it takes off, its state (not used yet, used, expired, switched off), when it ends and the purchase that gave it; and each gift code the customer applied, as used by you with the last characters of the code (a gift code is never kept whole). It lists nothing that is not the customer's: not another customer's codes, not a code you made for everyone, not a gift code nobody applied. The reward message has a My codes button, so the code can be found again.
The bot, the Mini App and the dashboard speak Persian and English, and in beta Arabic, Russian and Turkish. The beta languages are machine-translated: have a native speaker read them before you rely on them. You choose what your customers may pick in the dashboard: Settings → General → Customer languages, a box per language and the default among them (by default Persian and English only, so nothing changes until you tick more). The language picker and the Mini App show only those; a customer whose Telegram language is one of them gets it, anyone else your default. If you switch a language off later, its customers read your default until you switch it on again. Arabic reads right to left with Arabic-Indic digits; counting words take each language's plural forms. Your own content (plan names, broadcasts, help pages, terms) stays in Persian and English: a customer of a beta language reads the English version, so write it.
Owners and admins send /admin and get a menu made of buttons. Support staff get /dashboard only.
| Menu | What you can do |
|---|---|
| Payments to review | See each payment's receipt and Approve or Reject. Every owner and admin sees the same list. The first decision counts |
| Today and find a user | Orders, revenue and refunds for today and 7 days, new users, panel health. Find and manage a user |
| Plans and discounts | List, add, edit and archive plans, set the trial and traffic packages, make discount codes |
| Notifications and broadcast | Choose who gets alerts, send a broadcast with a preview |
| Settings and servers | Every setting your role may change, and panel health, switches and weights |
| Payment methods and staff | Owner only |
| Dashboard link | A one-time login link |
/set opens the settings screen. The dashboard remains the full tool.
Undo. The last change you made in this menu (a setting, a plan switched on or off, a discount code switched on or off) has an Undo button on the screen that shows it, and after /set. It puts the old value back through the same call, so the audit log records it. Only the last change of each admin is kept, for one hour.
Staff get alerts in Telegram for payments to review, new tickets, failed deliveries, sales (optional) and system problems. Every owner also receives the daily backup file.
| Rule | Where | Effect |
|---|---|---|
| Maintenance mode | Settings (maintenance.enabled) |
Customers see the maintenance text and nothing else. Staff and payments already under way still work. Active services keep working |
| Required channel or group | Settings | Customers must join before using the bot. Staff and payments under way are not blocked. One is allowed on the free tier and Standard, any number on Pro and during the trial |
| Rate limits | Settings | Taps and messages per 10 seconds, support messages per day |
| Bans | Users | A banned customer cannot use the bot |
| Terms and privacy | Branding |
/terms and the buttons use your Terms and Privacy pages
|
| Product news | Settings (announce.enabled, off by default) |
The bot asks each customer once whether they want news of new products (a newcomer after the first /start, others at their next interaction). No answer is no. They change it under 🌐 Language or in the Mini App. Only those who said yes get your announcements in private, with a 🛒 Buy button that opens the product |
When your install is at its license limit, a new purchase shows the customer only "New purchases are temporarily unavailable. Please contact support." They never see a word about licensing. Renewals and top-ups continue.
The bot also sets its own commands, description and profile photo. You can upload a photo in the dashboard (Branding & texts, Store, Telegram bot).
For every flow in detail, read docs/03-bot-ux.md. If customers get no answer, see Troubleshooting.
BOBRES, made by TECSO-DEV. Source-available, all rights reserved (see LICENSE). Site: bobresai.cv.
Start
Run the store
- Dashboard Guide
- Bot Guide
- Mini App
- Plans and Pricing
- Payments
- Panels
- Resellers
- Digital Accounts
- Subscription Page
- Terms and Privacy Pages
- Reports
Operate
Develop
فارسی