Skip to content

Bot Guide

github-actions[bot] edited this page Nov 2, 2026 · 7 revisions

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.

For customers

Main menu

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.

Commands

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

Buying

  1. 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).
  2. Optionally enter a discount code.
  3. Pick a payment method. See Payments.
  4. 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.

Config names

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 with u and 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.

After the purchase

  • 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.

Languages

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.

For staff

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.

Rules the bot applies

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.

Clone this wiki locally