Работает только одна кнопка telebot
Пишу шоп-бота одноразак в Telegram, но работает только одна кнопка
import telebot
import config
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Арбуз ?")
item2 = types.KeyboardButton("Виноград ?")
item3 = types.KeyboardButton("Дыня ?")
item4 = types.KeyboardButton("Персик ?")
item5 = types.KeyboardButton("Манго ?")
item6 = types.KeyboardButton("Ледяная Мята ?")
markup.add(item1, item2, item3, item4, item5, item6)
bot.send_message(message.chat.id, "Привет, {0.first_name}!?\nВижу ты хочешь себе однаразку??\nТогда тебе повезло с выбором магазина!?\n\nМы только начинаем свой бизнес, но надеюсь тебе понравится наш ассортимент?\n\nВыбирай вкус?".format(message.from_user, bot.get_me()), reply_markup=markup)
@bot.message_handler(content_types=["text"])
def mes(message):
if message.text == "Арбуз ?":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Проверить ✅")
item2 = types.KeyboardButton("Отмена ❌")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Вкус: Арбуз ?\nЦена: 200 руб\n------------------------\nОтправляй деньги на QIWI - AVITU611\nВ комментариях напиши свой ник TG\nДальше мы спросим у тебя как тебе отправить и куда\nА после уже отправим", reply_markup=markup)
@bot.message_handler(content_types=['text'])
def mes1(message):
if message.text == "Дыня ?":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Проверить ✅")
item2 = types.KeyboardButton("Отмена ❌")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Вкус: Дыня ?\nЦена: 200 руб\n------------------------\nОтправляй деньги на QIWI - AVITU611\nВ комментариях напиши свой ник TG\nДальше мы спросим у тебя как тебе отправить и куда\nА после уже отправим", reply_markup=markup)
Ответы (1 шт):
Автор решения: Tehnorobot
→ Ссылка
Попробуйте добавить обработчик кнопок по 'ключу', а также замените ReplyKeyboardMarkup на InlineKeyboardMarkup:
@bot.message_handler(commands=['start'])
def welcome(message):
markup = types.InlineKeyboardMarkup()
item1 = types.InlineKeyboardButton(text="Арбуз ?", callback_data='Арбуз')
item2 = types.InlineKeyboardButton(text="Виноград ?", callback_data='Виноград')
# и т.д.
markup.add(item1, item2)
bot.send_message(message.chat.id, "Привет, {0.first_name}!?\nВижу ты хочешь себе однаразку??\nТогда тебе повезло с выбором магазина!?\n\nМы только начинаем свой бизнес, но надеюсь тебе понравится наш ассортимент?\n\nВыбирай вкус?".format(message.from_user), reply_markup=markup)
Также лучше обработчик кнопок записать в одну функцию:
@bot.callback_query_handler(func = lambda call: True)
def mes(call):
if call.data == "Арбуз":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Проверить ✅")
item2 = types.KeyboardButton("Отмена ❌")
markup.add(item1, item2)
bot.send_message(call.message.chat.id, "Вкус: Арбуз ?\nЦена: 200 руб\n------------------------\nОтправляй деньги на QIWI - AVITU611\nВ комментариях напиши свой ник TG\nДальше мы спросим у тебя как тебе отправить и куда\nА после уже отправим", reply_markup=markup)
elif call.data == "Дыня":
print('Дыня')
elif call.data == "Виноград":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Проверить ✅")
item2 = types.KeyboardButton("Отмена ❌")
markup.add(item1, item2)
bot.send_message(call.message.chat.id, "Вкус Винограда и т.д.", reply_markup=markup)
#И т. д.
bot.answer_callback_query(callback_query_id=call.id)
Далее обрабатывайте нажатия из функции @bot.callback_query_handler(func = lambda call: True):
@bot.message_handler(content_types=['text'])
def mes1(message):
if message.text == "Проверить ✅":
bot.send_message(message.chat.id, "ok")
elif message.text == "Отмена ❌":
bot.send_message(message.chat.id, 'no')
bot.polling()