Добрый вечер, у меня такая проблема, при нажатии пользователя на кнопку «Сделать заказ», бот просит фотографию товара, и пока пользователь не отправит фотографию и не оформит заказ, он не успокоится, помогает только перезагрузка бота, вот мне нужно, чтобы после кнопки «сделать заказ» можно было нажать на кнопку «вернуться в главное меню» и бот смог вернуть человека на главный экран, заранее спасибо
Вот код:
import telebot
from telebot import types
# Создайте бота и укажите его токен
bot = telebot.TeleBot('')
# Словарь для хранения данных о заказе каждого пользователя
order_data = {}
# Обработчик команды /start и создание кнопок
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, f"Добро пожаловать, {message.from_user.first_name}! Я ваш бот для онлайн заказов.")
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Сделать заказ")
item2 = types.KeyboardButton("Скачать Poizon")
item3 = types.KeyboardButton("Оставить отзыв")
item4 = types.KeyboardButton("Поддержка🙋")
item5 = types.KeyboardButton("Узнать цену")
item6 = types.KeyboardButton("Узнать курс Юаня и Лиры")
item7 = types.KeyboardButton("Предоплаченные карты PlayStation")
markup.add(item1)
markup.add(item2, item3)
markup.add(item4, item5)
markup.add(item6)
markup.add(item7)
bot.send_message(message.chat.id, "Выберите действие:", reply_markup=markup)
# Обработчик нажатия кнопки "Сделать заказ"
@bot.message_handler(func=lambda message: message.text == "Сделать заказ")
def handle_order_start(message):
chat_id = message.chat.id
bot.send_message(chat_id, "Для оформления заказа, пожалуйста, пришлите фотографию товара.")
bot.register_next_step_handler(message, process_order_photo, chat_id)
def process_order_photo(message, chat_id):
if message.photo:
order_data[chat_id] = {"photo": message.photo[-1].file_id}
bot.send_message(chat_id, "Отлично! Теперь введите ваше ФИО:")
bot.register_next_step_handler(message, process_order_fullname, chat_id)
else:
bot.send_message(chat_id, "Пожалуйста, отправьте фотографию товара.")
bot.register_next_step_handler(message, process_order_photo, chat_id)
def process_order_fullname(message, chat_id):
fullname = message.text
order_data[chat_id]["fullname"] = fullname
bot.send_message(chat_id, "Хорошо! Теперь введите ваш адрес:")
bot.register_next_step_handler(message, process_order_address, chat_id)
def process_order_address(message, chat_id):
address = message.text
order_data[chat_id]["address"] = address
# Получаем короткое имя пользователя
username = message.from_user.username
# Отправляем данные владельцу бота
owner_chat_id = "" # Замените на ID вашего аккаунта
order_info = order_data[chat_id]
photo_id = order_info['photo']
fullname = order_info['fullname']
address = order_info['address']
# После отправки заказа, спрашиваем пользователя о корректности данных
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Да")
item2 = types.KeyboardButton("Нет")
markup.add(item1, item2)
bot.send_message(chat_id, "Проверьте корректность ваших данных:\n"
f"ФИО: {fullname}\n"
f"Адрес: {address}\n"
"Всё верно?", reply_markup=markup)
bot.register_next_step_handler(message, process_order_confirmation, chat_id)
def process_order_confirmation(message, chat_id):
if message.text.lower() == "да":
# Отправляем изображение и имя пользователя
username = message.from_user.username
owner_chat_id = "-4092636907" # Замените на ID вашего аккаунта
order_info = order_data[chat_id]
photo_id = order_info['photo']
fullname = order_info['fullname']
address = order_info['address']
bot.send_photo(owner_chat_id, photo_id, caption=f"Новый заказ от @{username}:\nФИО: {fullname}\nАдрес: {address}")
bot.send_message(chat_id, "Спасибо! Ваш заказ успешно оформлен. Нажмите /start, чтобы вернуться на главную страницу")
else:
bot.send_message(chat_id, "Пожалуйста, введите данные заново.")
handle_order_start(message) # Начинаем процесс оформления заново
# Обработчик нажатия кнопок
@bot.message_handler(func=lambda message: True)
def handle_buttons(message):
if message.text == "Сделать заказ":
bot.send_message(message.chat.id, "Переход на страницу заказа: https://t.me/ordernexus")
elif message.text == "Скачать Poizon":
bot.send_message(message.chat.id, f"Переход на страницу скачивания Poizon:\nВерсия для iPhone - https://apps.apple.com/app/id1012871328\nВерсия для Anroid - https://a.app.qq.com/o/simple.jsp?pkgname=com")
elif message.text == "Оставить отзыв":
bot.send_message(message.chat.id, "Переход на страницу для отзывов: https://t.me/feedbacknexus")
elif message.text == "Поддержка🙋":
bot.send_message(message.chat.id, "Переход на страницу поддержки: https://t.me/nexushelp")
elif message.text == "Узнать курс Юаня и Лиры":
bot.send_message(message.chat.id, "Курс ¥: 14₽, Курс ₺: 5₽")
elif message.text == "Предоплаченные карты PlayStation":
bot.send_message(message.chat.id, "Вы можете приобрести турецкие карты для пополнения кошелька в PlayStation Store от 300₺ до 2700₺, для оформления заказа перейдите по ссылке: https://t.me/nexushelp")
elif message.text == "Узнать цену":
# Здесь добавим обработчик для запроса цены товара
bot.send_message(message.chat.id, "Введите цену товара в ¥:")
bot.register_next_step_handler(message, process_price_input)
def process_price_input(message):
try:
price = int(message.text)
# Здесь можно добавить логику для расчета полной стоимости с доставкой и комиссией
# и отправить ответ пользователю
total_cost = calculate_total_cost(price)
bot.send_message(message.chat.id, f"Примерная стоимость заказа с доставкой и комиссией: {total_cost}₽\nТочную цену узнаете при оформлении заказа")
except ValueError:
bot.send_message(message.chat.id, "Пожалуйста, введите корректную цену товара.")
def calculate_total_cost(price):
return price * 14 + 2000
bot.polling()
Вот код:
import telebot
from telebot import types
# Создайте бота и укажите его токен
bot = telebot.TeleBot('')
# Словарь для хранения данных о заказе каждого пользователя
order_data = {}
# Обработчик команды /start и создание кнопок
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, f"Добро пожаловать, {message.from_user.first_name}! Я ваш бот для онлайн заказов.")
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Сделать заказ")
item2 = types.KeyboardButton("Скачать Poizon")
item3 = types.KeyboardButton("Оставить отзыв")
item4 = types.KeyboardButton("Поддержка🙋")
item5 = types.KeyboardButton("Узнать цену")
item6 = types.KeyboardButton("Узнать курс Юаня и Лиры")
item7 = types.KeyboardButton("Предоплаченные карты PlayStation")
markup.add(item1)
markup.add(item2, item3)
markup.add(item4, item5)
markup.add(item6)
markup.add(item7)
bot.send_message(message.chat.id, "Выберите действие:", reply_markup=markup)
# Обработчик нажатия кнопки "Сделать заказ"
@bot.message_handler(func=lambda message: message.text == "Сделать заказ")
def handle_order_start(message):
chat_id = message.chat.id
bot.send_message(chat_id, "Для оформления заказа, пожалуйста, пришлите фотографию товара.")
bot.register_next_step_handler(message, process_order_photo, chat_id)
def process_order_photo(message, chat_id):
if message.photo:
order_data[chat_id] = {"photo": message.photo[-1].file_id}
bot.send_message(chat_id, "Отлично! Теперь введите ваше ФИО:")
bot.register_next_step_handler(message, process_order_fullname, chat_id)
else:
bot.send_message(chat_id, "Пожалуйста, отправьте фотографию товара.")
bot.register_next_step_handler(message, process_order_photo, chat_id)
def process_order_fullname(message, chat_id):
fullname = message.text
order_data[chat_id]["fullname"] = fullname
bot.send_message(chat_id, "Хорошо! Теперь введите ваш адрес:")
bot.register_next_step_handler(message, process_order_address, chat_id)
def process_order_address(message, chat_id):
address = message.text
order_data[chat_id]["address"] = address
# Получаем короткое имя пользователя
username = message.from_user.username
# Отправляем данные владельцу бота
owner_chat_id = "" # Замените на ID вашего аккаунта
order_info = order_data[chat_id]
photo_id = order_info['photo']
fullname = order_info['fullname']
address = order_info['address']
# После отправки заказа, спрашиваем пользователя о корректности данных
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Да")
item2 = types.KeyboardButton("Нет")
markup.add(item1, item2)
bot.send_message(chat_id, "Проверьте корректность ваших данных:\n"
f"ФИО: {fullname}\n"
f"Адрес: {address}\n"
"Всё верно?", reply_markup=markup)
bot.register_next_step_handler(message, process_order_confirmation, chat_id)
def process_order_confirmation(message, chat_id):
if message.text.lower() == "да":
# Отправляем изображение и имя пользователя
username = message.from_user.username
owner_chat_id = "-4092636907" # Замените на ID вашего аккаунта
order_info = order_data[chat_id]
photo_id = order_info['photo']
fullname = order_info['fullname']
address = order_info['address']
bot.send_photo(owner_chat_id, photo_id, caption=f"Новый заказ от @{username}:\nФИО: {fullname}\nАдрес: {address}")
bot.send_message(chat_id, "Спасибо! Ваш заказ успешно оформлен. Нажмите /start, чтобы вернуться на главную страницу")
else:
bot.send_message(chat_id, "Пожалуйста, введите данные заново.")
handle_order_start(message) # Начинаем процесс оформления заново
# Обработчик нажатия кнопок
@bot.message_handler(func=lambda message: True)
def handle_buttons(message):
if message.text == "Сделать заказ":
bot.send_message(message.chat.id, "Переход на страницу заказа: https://t.me/ordernexus")
elif message.text == "Скачать Poizon":
bot.send_message(message.chat.id, f"Переход на страницу скачивания Poizon:\nВерсия для iPhone - https://apps.apple.com/app/id1012871328\nВерсия для Anroid - https://a.app.qq.com/o/simple.jsp?pkgname=com")
elif message.text == "Оставить отзыв":
bot.send_message(message.chat.id, "Переход на страницу для отзывов: https://t.me/feedbacknexus")
elif message.text == "Поддержка🙋":
bot.send_message(message.chat.id, "Переход на страницу поддержки: https://t.me/nexushelp")
elif message.text == "Узнать курс Юаня и Лиры":
bot.send_message(message.chat.id, "Курс ¥: 14₽, Курс ₺: 5₽")
elif message.text == "Предоплаченные карты PlayStation":
bot.send_message(message.chat.id, "Вы можете приобрести турецкие карты для пополнения кошелька в PlayStation Store от 300₺ до 2700₺, для оформления заказа перейдите по ссылке: https://t.me/nexushelp")
elif message.text == "Узнать цену":
# Здесь добавим обработчик для запроса цены товара
bot.send_message(message.chat.id, "Введите цену товара в ¥:")
bot.register_next_step_handler(message, process_price_input)
def process_price_input(message):
try:
price = int(message.text)
# Здесь можно добавить логику для расчета полной стоимости с доставкой и комиссией
# и отправить ответ пользователю
total_cost = calculate_total_cost(price)
bot.send_message(message.chat.id, f"Примерная стоимость заказа с доставкой и комиссией: {total_cost}₽\nТочную цену узнаете при оформлении заказа")
except ValueError:
bot.send_message(message.chat.id, "Пожалуйста, введите корректную цену товара.")
def calculate_total_cost(price):
return price * 14 + 2000
bot.polling()