Payment protectionDetails
- Revisions within the package are free.
- If you do not respond within 3 days of delivery, the work is accepted automatically.
The money is reserved when you pay and released only once you accept the work.

Example result
Telegram bot for booking haircuts at a barbershop
The bot in Telegram
A part of the code
async def booking_done(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
"""The last step of the form: thanks the client and passes the request on."""
request = context.user_data["booking"]
request["phone"] = update.message.text.strip()
await update.message.reply_text(TEXTS["booking_thanks"], reply_markup=main_menu())
await context.bot.send_message(settings.admin_chat_id, format_request(request))
sheet.append_row([datetime.now().isoformat(timespec="minutes"), *request.values()])
return ConversationHandler.END
All the answers and buttons are in texts.yaml, so the client changes a price or the hours without touching the code.
Files: a ZIP archive with bot.py, texts.yaml, settings.example.env (where the bot token and the sheet go, filled in by the client), requirements.txt and a README: creating the bot in Telegram, connecting the Google Sheet and running it on a small server or hosting. The bot sends the request but does not check the barbers' calendar: the owner confirms the time.
Client: a barbershop with 3 barbers that took bookings only by phone. Task: a Telegram bot with a menu: prices, address and hours, a booking form (service, day and time, name, phone) that sends each request to the owner's chat and adds it to a Google Sheet.
The client and all details are made up.
About this service
Barbershop clients write short messages: how much is a fade, is Alex free tomorrow, where do I park. This Telegram bot gives the answers from buttons: your services and prices, a few lines about each barber in your words, the address and how to get there. From Standard a short booking form asks for the service, the barber, the day and time and a phone, and sends it to your chat and a Google Sheet; whoever is at the desk confirms the time. The bot does not read your booking calendar, so it cannot see free chairs or hold a slot, and it takes no payments or tips, though it can link to your own payment page. The Python code comes with a texts file and a README on creating the bot in @BotFather and running it on your computer, server or a hosting. Running the bot and its token stay with you.
What is included
- What you getA ZIP archive with the Python code, a texts file with your services, prices and barbers, an example settings file and a README; the code is also shown on the order page.
- Services and pricesHaircut, beard, shave and combos, with your prices
- About each barberA few lines about each one, in your words
- Bookings to your chatService, barber, day and time, from Standard
- How to find youAddress, a map link and where to park
- Edits in one filePrices and texts sit apart from the code
How it works
- 1ScriptYou give the services, prices, barbers and the booking questions
- 2CodeWe write the bot and the guide to running it
- 3LaunchYou create the bot in @BotFather, add the token and run it
- 4ChangesYou ask for changes within your package
What we need from you
Your services and prices as text; the barbers' names and a line about each; address, hours, a map link and parking notes; the questions of the booking form, the chat where bookings should go and what the client reads after booking; a link to your payment page, if you use one. Never send the bot's token or any passwords: the README shows where you put them yourself.
We will ask you:
- Services and prices
- Barbers
- The booking form
- Address and how to find you
Compare packages
| Packages | BasicHaircuts and prices bot$25 | StandardBarber booking bot$50 | PremiumBarbershop bot with broadcasts$86 |
|---|---|---|---|
| Deadline | 1 day | 2 days | 3 days |
| Revisions | 1 | 2 | 3 |
| Platform | Telegram | Telegram | Telegram |
| Ready answers | up to 10 | up to 25 | up to 40 |
| Forms (request, booking, order) | No | up to 3 | up to 5 |
| Requests sent to your chat and a Google Sheet | No | Yes | Yes |
| Admin commands and broadcasts | No | No | Yes |
| Languages of the menu | 1 | 1 | 2 |
| Order Basic | Order Standard | Order Premium |
Payment protection
You pay when you order, but the money is released only for accepted work.
- Fixed priceThe package price does not change after you pay.
- The money is reservedWhen you pay, the amount is only reserved. It is released to the service once you accept the work.
- Checked before deliveryEvery result goes through a quality check before it reaches you, and you see it on the order page before accepting it.
- Free revisionsAsk for changes within your brief as many times as the package allows.
- Acceptance after 3 daysIf within 3 days of delivery you neither accept the work nor ask for changes, it is accepted automatically. If you write in the order chat after delivery, the order waits; once we answer, we may start the 3 days again and will say so in the chat.
- Redo or a full refundIf the result does not match your brief and the revisions did not fix it, or the work takes more than twice its deadline, write in the order chat: we will redo the work or refund the payment in full.
Questions and answers
Can a client pick a free time in the bot?
They pick the day and time they would like, and the request goes to you. The bot does not see your calendar and does not check whether the barber is free, so you confirm or offer another time.
Can the bot take a prepayment or tips?
No. It takes no payments; it can only give a link to your own payment page.
We have two locations. Can one bot serve both?
Yes: the client chooses the location first, and each request says which one it is for. The answers and addresses for each come from you.
Where does it run?
On your own computer, server or a hosting with Python; we do not host bots. The token is created and kept by you.
Can it work in WhatsApp?
No, this service makes Telegram bots. A WhatsApp bot needs the WhatsApp Business API and an approved business account.
Did not find your answer?
