начинаю изучать питон, часть была написана с помощью ChatGPT(3), часть руками. Возникла следующая проблема:
При кнопке купить "Купить" появляется кнопка "Пополнить баланс" с call.data == 'balans'. Аналогичная кнопка появляется и при нажатии кнопки "Баланс". Вся остальная часть, кроме этой кнопки работает замечательно. Помогите пожалуйста найти причины неработоспособности.
import telebot
from telebot import types
import requests
TOKEN = '****'
bot = telebot.TeleBot(TOKEN)
# kurs
key = "https://api.binance.com/api/v3/ticker/price?symbol=BTCRUB"
data = requests.get(key)
data = data.json()
kurs = data['price']
kursstr = kurs.partition('.')[0]
kursint = int(kurs.partition('.')[0])
print(kursint)
# kurs
@bot.message_handler(commands=['start'])
def welcome_message(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Профиль')
btn2 = types.KeyboardButton('Купить')
btn3 = types.KeyboardButton('История заказов')
btn4 = types.KeyboardButton('Поддержка')
btn5 = types.KeyboardButton('Отзывы')
btn6 = types.KeyboardButton('Баланс')
markup.add(btn1, btn2, btn3, btn4, btn5, btn6)
bot.send_message(message.chat.id, 'Приветствуем, друг! Добро пожаловать в наш магазин \n Узнать о всех доступных вакансиях ты можешь у @milfmefhunter \n Удачных покупок и приятных эмоций', reply_markup=markup)
def podknopka1_submenu(call):
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton('Москва', callback_data='sub_podknopka1_1')
btn2 = types.InlineKeyboardButton('Санкт-Петербург', callback_data='sub_podknopka1_2')
btn3 = types.InlineKeyboardButton('Екатеринбург', callback_data='sub_podknopka1_3')
btn4 = types.InlineKeyboardButton('Доставка по РФ', callback_data='sub_podknopka1_4')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(call.message.chat.id, 'Выберите свой город:', reply_markup=markup)
def sbpnal(call):
if call.data == 'sub_podknopka1_2':
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Дунайская ', callback_data='sub_podknopka1_2_1')
btn2 = types.InlineKeyboardButton('Девяткино', callback_data='sub_podknopka1_2_2')
btn3 = types.InlineKeyboardButton('Старая Деревня', callback_data='sub_podknopka1_2_3')
btn4 = types.InlineKeyboardButton('Автово ', callback_data='sub_podknopka1_2_4')
btn5 = types.InlineKeyboardButton('Новочеркасская', callback_data='sub_podknopka1_2_5')
btn6 = types.InlineKeyboardButton('Площадь Восстания', callback_data='sub_podknopka1_2_6')
markup.add(btn1, btn2, btn3, btn4, btn5,btn6)
bot.send_message(call.message.chat.id, 'Выберите ближайшую станцию метро:', reply_markup=markup)
def msknal(call):
if call.data == 'sub_podknopka1_1':
mm = types.InlineKeyboardMarkup(row_width=2)
but1 = types.InlineKeyboardButton('Планерная', callback_data='sub_podknopka1_1_1')
but2 = types.InlineKeyboardButton('Лесопарковая', callback_data='sub_podknopka1_1_2')
but3 = types.InlineKeyboardButton('Битца', callback_data='sub_podknopka1_1_3')
but4 = types.InlineKeyboardButton('Ольховая', callback_data='sub_podknopka1_1_4')
but5 = types.InlineKeyboardButton('Римская', callback_data='sub_podknopka1_1_5')
but6 = types.InlineKeyboardButton('Медведково', callback_data='sub_podknopka1_1_6')
but7 = types.InlineKeyboardButton('Аминьевская', callback_data='sub_podknopka1_1_7')
but8 = types.InlineKeyboardButton('Минская', callback_data='sub_podknopka1_1_8')
but9 = types.InlineKeyboardButton('Ховрино', callback_data='sub_podknopka1_1_9')
but10 = types.InlineKeyboardButton('Тушинская', callback_data='sub_podknopka1_1_10')
but11 = types.InlineKeyboardButton('Бульвар Рокоссовского', callback_data='sub_podknopka1_1_11')
mm.add(but11, but10, but9, but8, but7, but6, but5, but4, but3, but2, but1)
bot.send_message(call.message.chat.id, 'Выберите ближайшую станцию метро:', reply_markup=mm)
def ekbnal(call):
if call.data == 'sub_podknopka1_3':
mm = types.InlineKeyboardMarkup(row_width=2)
but1 = types.InlineKeyboardButton('Солнечный Микрорайон', callback_data='sub_podknopka1_3_1')
but2 = types.InlineKeyboardButton('Вторая Больница', callback_data='sub_podknopka1_3_2')
but3 = types.InlineKeyboardButton('УрФУ', callback_data='sub_podknopka1_3_3')
but4 = types.InlineKeyboardButton('Метро Проспект Космонавтов', callback_data='sub_podknopka1_3_4')
mm.add(but4, but3, but2, but1)
bot.send_message(call.message.chat.id, 'Выберите ближайшую станцию метро:', reply_markup=mm)
def rfnal(call):
if call.data == 'sub_podknopka1_4':
mm = types.InlineKeyboardMarkup(row_width=2)
but1 = types.InlineKeyboardButton('Центральный ФО', callback_data='sub_podknopka1_4_1')
but2 = types.InlineKeyboardButton('Северо-Западный ФО', callback_data='sub_podknopka1_4_2')
but3 = types.InlineKeyboardButton('Южный ФО', callback_data='sub_podknopka1_4_3')
but4 = types.InlineKeyboardButton('Северо-Кавказский ФО', callback_data='sub_podknopka1_4_4')
but5 = types.InlineKeyboardButton('Приволжский ФО', callback_data='sub_podknopka1_4_5')
but6 = types.InlineKeyboardButton('Уральский ФО', callback_data='sub_podknopka1_4_6')
but7 = types.InlineKeyboardButton('Сибирский ФО', callback_data='sub_podknopka1_4_7')
but8 = types.InlineKeyboardButton('Дальневосточный ФО', callback_data='sub_podknopka1_4_8')
mm.add (but1, but2, but3, but4, but5, but6, but7, but8)
bot.send_message(call.message.chat.id, 'Выберите округ для доставки:', reply_markup=mm)
@bot.callback_query_handler(func=lambda call: call.data.startswith(('sub_podknopka1', 'podknopka1')))
def handle_callback_query(call):
if call.data == "podknopka1":
podknopka1_submenu(call)
elif call.data == "sub_podknopka1_1":
msknal(call)
elif call.data == "sub_podknopka1_2":
sbpnal(call)
elif call.data == "sub_podknopka1_3":
ekbnal(call)
elif call.data == "sub_podknopka1_4":
rfnal(call)
elif call.data == "balans":
print (2+2)
@bot.message_handler(func=lambda message: True)
def menu(message):
if message.text == 'Купить':
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Наличие', callback_data='podknopka1')
btn2 = types.InlineKeyboardButton('Пополнить баланс', callback_data='balans')
markup.add(btn1, btn2)
bot.send_message(message.chat.id, 'Выберите действие:', reply_markup=markup)
elif message.text == 'Профиль':
chat_id = str(message.chat.id)
bot.send_message(message.chat.id, '*Профиль* \n \nВаш ID: ' + chat_id + '\nВаш баланс: 0 руб.\nЗаказов: 0\nНа сумму: 0 руб.\nСредний чек: 0 руб.\nВаша скидка: 0%' , parse_mode = 'Markdown')
elif message.text == 'Поддержка':
bot.send_message(message.chat.id, '*По вопросам работы магазина, доступных вакансий и многого другого:*\n@milfmefhunter', parse_mode="Markdown")
elif message.text == 'История заказов':
bot.send_message(message.chat.id, '*Ваши последние заказы:*', parse_mode="Markdown")
elif message.text == 'Отзывы':
bot.send_message(message.chat.id, '*Все отзывы и новости публикуются в нашем основном канале:*\n@tgkvapeshop', parse_mode="Markdown")
elif message.text == 'Баланс':
markup = types.InlineKeyboardMarkup()
btn2 = types.InlineKeyboardButton('Пополнить баланс', callback_data='balans')
markup.add(btn2)
bot.send_message(message.chat.id, '*Ваш баланс:*\n0₽ ~ 0 BTC\nКурс биткоина на текущий момент: ' + kursstr + '₽', parse_mode="Markdown", reply_markup=markup)
bot.polling(none_stop=True)