import logging
from telegram import (
Update,
ReplyKeyboardMarkup,
KeyboardButton,
InlineKeyboardButton,
InlineKeyboardMarkup,
)
from telegram.ext import (
Application,
CommandHandler,
MessageHandler,
CallbackQueryHandler,
ContextTypes,
filters,
)
🔐 TOKEN (ENV ga qo‘y!)
TOKEN = "8753267268:AAG7BCk_gT0dxbn3vg15GH-TqtyYIzSmBXE"
ADMIN_ID = 123456789
logging.basicConfig(level=logging.INFO)
users = set()
bookings = []
🎨 MENYU
main_menu = ReplyKeyboardMarkup(
[
["🏨 Mehmonxona", "🛏 Xonalar"],
["💰 Narxlar", "🍽 Xizmatlar"],
["📸 Rasmlar", "📍 Manzil"],
["📞 Aloqa", "📅 Bron qilish"],
],
resize_keyboard=True,
)
back_btn = ReplyKeyboardMarkup([["🔙 Orqaga"]], resize_keyboard=True)
contact_btn = ReplyKeyboardMarkup(
[[KeyboardButton("📞 Raqam yuborish", request_contact=True)]],
resize_keyboard=True,
)
🚀 START
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
users.add(update.effective_user.id)
await update.message.reply_text(
"🔥 Premium mehmonxonaga xush kelibsiz!\n\n👇 Quyidagidan tanlang:",
reply_markup=main_menu,
)
📱 MENU
async def menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
text = update.message.text
if text == "🔙 Orqaga":
context.user_data.clear()
await update.message.reply_text("🏠 Menyu", reply_markup=main_menu)
elif text == "🏨 Mehmonxona":
await update.message.reply_text("🌟 Premium mehmonxona\n🕐 24/7 xizmat\n⭐ 5 yulduz")
elif text == "🛏 Xonalar":
keyboard = [
[InlineKeyboardButton("🛏 Standart", callback_data="standard")],
[InlineKeyboardButton("🌟 Komfort", callback_data="komfort")],
[InlineKeyboardButton("🔥 VIP", callback_data="vip")],
]
await update.message.reply_text(
"👇 Xonani tanlang:",
reply_markup=InlineKeyboardMarkup(keyboard),
)
elif text == "💰 Narxlar":
await update.message.reply_text(
"💵 Standart: 100k\n🌟 Komfort: 150k\n🔥 VIP: 250k"
)
elif text == "🍽 Xizmatlar":
await update.message.reply_text(
"🍽 Restoran\n🚗 Taxi\n📶 WiFi\n🛎 24/7 xizmat"
)
elif text == "📸 Rasmlar":
await update.message.reply_photo(
photo="https://picsum.photos/600/400",
caption="🏨 Premium mehmonxona",
)
elif text == "📍 Manzil":
await update.message.reply_location(41.3111, 69.2797)
elif text == "📞 Aloqa":
await update.message.reply_text("📞 +998 90 123 45 67")
elif text == "📅 Bron qilish":
context.user_data["step"] = "room"
keyboard = [
[InlineKeyboardButton("🛏 Standart", callback_data="bron_standard")],
[InlineKeyboardButton("🌟 Komfort", callback_data="bron_komfort")],
[InlineKeyboardButton("🔥 VIP", callback_data="bron_vip")],
]
await update.message.reply_text(
"👇 Xonani tanlang:",
reply_markup=InlineKeyboardMarkup(keyboard),
)
🎯 INLINE
async def inline(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()
if query.data in ["standard", "komfort", "vip"]:
await query.message.reply_text(f"✅ Tanlandi: {query.data.upper()}")
elif query.data.startswith("bron_"):
room = query.data.split("_")[1]
context.user_data["room"] = room
context.user_data["step"] = "name"
await query.message.reply_text("👤 Ismingizni yozing:", reply_markup=back_btn)
📅 BRON
async def booking(update: Update, context: ContextTypes.DEFAULT_TYPE):
step = context.user_data.get("step")
if step == "name":
context.user_data["name"] = update.message.text
context.user_data["step"] = "phone"
await update.message.reply_text(
"📞 Telefon yuboring:",
reply_markup=contact_btn,
)
elif step == "phone":
if update.message.contact:
context.user_data["phone"] = update.message.contact.phone_number
else:
context.user_data["phone"] = update.message.text
context.user_data["step"] = "date"
await update.message.reply_text("📅 Sana yozing:")
elif step == "date":
data = {
"name": context.user_data["name"],
"phone": context.user_data["phone"],
"date": update.message.text,
"room": context.user_data["room"],
}
bookings.append(data)
await context.bot.send_message(
chat_id=ADMIN_ID,
text=f"🔥 Yangi bron!\n\n👤 {data['name']}\n📞 {data['phone']}\n📅 {data['date']}\n🏨 {data['room']}",
)
await update.message.reply_text(
"✅ Bron olindi!",
reply_markup=main_menu,
)
context.user_data.clear()
🧠 HANDLER
async def handle(update: Update, context: ContextTypes.DEFAULT_TYPE):
if "step" in context.user_data:
await booking(update, context)
else:
await menu(update, context)
👨💼 ADMIN PANEL
async def admin(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_user.id != ADMIN_ID:
return
await update.message.reply_text(
f"📊 Statistika\n\n👥 Users: {len(users)}\n📅 Bronlar: {len(bookings)}"
)
🚀 RUN
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("admin", admin))
app.add_handler(CallbackQueryHandler(inline))
app.add_handler(MessageHandler(filters.TEXT | filters.CONTACT, handle))
print("🔥 BOT ISHLADI")
app.run_polling()
import logging
from telegram import (
Update,
ReplyKeyboardMarkup,
KeyboardButton,
InlineKeyboardButton,
InlineKeyboardMarkup,
)
from telegram.ext import (
Application,
CommandHandler,
MessageHandler,
CallbackQueryHandler,
ContextTypes,
filters,
)
🔐 TOKEN (ENV ga qo‘y!)
TOKEN = "8753267268:AAG7BCk_gT0dxbn3vg15GH-TqtyYIzSmBXE"
ADMIN_ID = 123456789
logging.basicConfig(level=logging.INFO)
users = set()
bookings = []
🎨 MENYU
main_menu = ReplyKeyboardMarkup(
[
["🏨 Mehmonxona", "🛏 Xonalar"],
["💰 Narxlar", "🍽 Xizmatlar"],
["📸 Rasmlar", "📍 Manzil"],
["📞 Aloqa", "📅 Bron qilish"],
],
resize_keyboard=True,
)
back_btn = ReplyKeyboardMarkup([["🔙 Orqaga"]], resize_keyboard=True)
contact_btn = ReplyKeyboardMarkup(
[[KeyboardButton("📞 Raqam yuborish", request_contact=True)]],
resize_keyboard=True,
)
🚀 START
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
users.add(update.effective_user.id)
📱 MENU
async def menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
text = update.message.text
🎯 INLINE
async def inline(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()
📅 BRON
async def booking(update: Update, context: ContextTypes.DEFAULT_TYPE):
step = context.user_data.get("step")
🧠 HANDLER
async def handle(update: Update, context: ContextTypes.DEFAULT_TYPE):
if "step" in context.user_data:
await booking(update, context)
else:
await menu(update, context)
👨💼 ADMIN PANEL
async def admin(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_user.id != ADMIN_ID:
return
🚀 RUN
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("admin", admin))
app.add_handler(CallbackQueryHandler(inline))
app.add_handler(MessageHandler(filters.TEXT | filters.CONTACT, handle))
print("🔥 BOT ISHLADI")
app.run_polling()