@DariaKorol
Интересуюсь питоном

Как исправить работу кнопок keyboardmarkup?

После нажатия кнопки выводится текст: выбор категории и дальше работа бота не идёт. Происходит как зацикливание выходит постоянно: выбор категории.
Где следует поправить?
import markup as markup  
import telebot  
from telebot import types  
import requests  
bot = telebot.TeleBot("")  
@bot.message_handler(commands=['start', 'help'])  
def start_message(message):  
    file = open('vl.png','rb')  
    bot.send_photo(message.chat.id, file, 'Поздравляем! Подписка прошла успешно! Узнавайте первыми о событиях!'  
                                        'Нажмите любую клавишу')  
@bot.message_handler(content_types=['text'])  
def get_user_text(message):  
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)  
    item1 = types.KeyboardButton('Спорт')  
    item_Child = types.KeyboardButton("Дети")  
    item3 = types.KeyboardButton('Театр')  
    item4 = types.KeyboardButton('Кино')  
    item5 = types.KeyboardButton('Туризм')  
    item6 = types.KeyboardButton('Мастер класс/Обучение')  
    item7 = types.KeyboardButton('Концерт')  
    item8 = types.KeyboardButton('Музеи и Галереи')  
    item9 = types.KeyboardButton('Вечеринки')  
    item10 = types.KeyboardButton('Впечатления')  
    item11 = types.KeyboardButton('Акции/Скидки')  
    markup.add(item1, item_Child, item3,item4,item5)  
    markup.add(item6,item7,item8,item9,item10, item11)  
    bot.send_message(message.chat.id,'выбор категории',reply_markup=markup)  
    bot.message_handler(content_types=["func"])  
def func(message):  
      if message.text=="Дети":  
          bot.send_message(message.chat.id,'ghbdtn')  
      elif message.text =="ЛО":  
          bot.send_message(message.chat.id, text='gjrf')
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
elchako
@elchako
Python разработчик
Я вижу это так

import telebot
from telebot import types

# рекомендую это всегда использовать в телеботе чтобы он не падал
telebot.apihelper.SESSION_TIME_TO_LIVE = 5 * 60
bot = telebot.TeleBot(TOKEN)

menu = ['Спорт', 'Дети', 'Театр', 'Кино', 'Туризм',
        'Мастер класс/Обучение', 'Концерт', 'Музеи и Галереи',
        'Вечеринки', 'Впечатления', 'Акции/Скидки']


def keyboard_menu(list_menu: list):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*list_menu)
    return keyboard


@bot.message_handler(commands=['start', 'help'])  
def start_message(message):
    chat_id = message.chat.id
    file = open('data/pic/testing.png', 'rb')
    bot.send_photo(chat_id, file, 'Поздравляем! Подписка прошла успешно! Узнавайте первыми о событиях!'  
                   'Нажмите любую клавишу')
    bot.send_message(chat_id, 'выбор категории', 
                     reply_markup=keyboard_menu(menu))


@bot.message_handler(content_types=['text'])
def choice(message):
    chat_id = message.chat.id
    index = menu.index(message.text)
    bot.send_message(chat_id, f'Выбран пункт {menu[index]}')  


bot.infinity_polling()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы