@maksimpythonn

Как сделать так что бы ответ от пользователя попал в переменную?

Помогите пожалуйста!
Я уже второй день пытаюсь сделать так чтобы ответ от пользователя попал в переменную.
Я пишу бота в котором можно будет создавать аукционы. В начале есть 5 кнопок. Одна из них: "Создать аукцион". после того как пользователь нажал на эту кнопку его спрашивают на какую тематику. И появляются 50 различных кнопок. С разными тематиками. И нужно чтобы в переменную theme саписалать тематика которую выбрал пользователь.

#переменные
theme = None


@bot.message_handler(commands=['start'])
def start(message):
    markup=types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1=types.KeyboardButton(' Создать аукцион')
    btn2=types.KeyboardButton(' Мои аукционы')
    btn3=types.KeyboardButton('❓ Что тут делать')
    btn4=types.KeyboardButton(' Разместить рекламу')
    btn5=types.KeyboardButton('✉️ ТехПоддержка')
    markup.add(btn1, btn2, btn3, btn4, btn5)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}!".format(message.from_user), reply_markup=markup)

@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == " Создать аукцион"):
        global theme
        bot.register_next_step_handler(message, theme)
        theme = message.text
        bot.register_next_step_handler(message, theme)
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton(" Авто")                   
        btn2 = types.KeyboardButton(" Бизнес")                 
        btn3 = types.KeyboardButton(" Блог")                   
        btn4 = types.KeyboardButton(" Видеоигры")              
        btn5 = types.KeyboardButton(" Дети")                   
        btn6 = types.KeyboardButton(" Животные")               
        btn7 = types.KeyboardButton(" Еда")                    
        btn8 = types.KeyboardButton(" Здоровье")               
        btn9 = types.KeyboardButton(" ‍Знаменитости")          
        btn10 = types.KeyboardButton(" Инвестиции")            
        btn11 = types.KeyboardButton("️ Интернет")             
        btn12 = types.KeyboardButton("‍ Искусство")           
        btn13 = types.KeyboardButton(" История")               
        btn14 = types.KeyboardButton(" Кино")                  
        btn15 = types.KeyboardButton(" Книги")                 
        btn16 = types.KeyboardButton(" Красота")               
        btn17 = types.KeyboardButton(" Криптовалюта")          
        btn18 = types.KeyboardButton(" Культура")              
        btn19 = types.KeyboardButton("️ Маркетинг")            
        btn20 = types.KeyboardButton(" Медицина")              
        btn21 = types.KeyboardButton(" Мода")                  
        btn22 = types.KeyboardButton("️ Мото")                 
        btn23 = types.KeyboardButton(" Мотивация")             
        btn24 = types.KeyboardButton(" Саморазвитие")          
        btn25 = types.KeyboardButton(" Музыка")                
        btn26 = types.KeyboardButton(" Наука")                 
        btn27 = types.KeyboardButton("️ Недвижимость")         
        btn28 = types.KeyboardButton(" Новости")               
        btn29 = types.KeyboardButton(" Образование")           
        btn30 = types.KeyboardButton("️ Отдых")                
        btn31 = types.KeyboardButton(" Психология")            
        btn32 = types.KeyboardButton(" Путешествия")           
        btn33 = types.KeyboardButton(" Работа")                
        btn34 = types.KeyboardButton("✡ Религия")               
        btn35 = types.KeyboardButton("♨️Развличения")           
        btn36 = types.KeyboardButton("️ Скидки")               
        btn37 = types.KeyboardButton("‍♀ Спорт")               
        btn38 = types.KeyboardButton(" Ставки")               
        btn39 = types.KeyboardButton("⚒️Строительство")         
        btn40 = types.KeyboardButton(" Трейдинг")              
        btn41 = types.KeyboardButton(" Фитнес")                
        btn42 = types.KeyboardButton(" Хобби")                 
        btn43 = types.KeyboardButton(" Экономика")             
        btn44 = types.KeyboardButton(" Экономия")              
        btn45 = types.KeyboardButton(" Финансы")               
        btn46 = types.KeyboardButton(" Юмор")                  
        btn47 = types.KeyboardButton(" Мемы")                  
        btn48 = types.KeyboardButton(" Юриспруденция")         
        btn49 = types.KeyboardButton(" Языки")                
        btn50 = types.KeyboardButton("Другое▫️▫️")              
        btn51 = types.KeyboardButton("⬅️Назад")                 
        markup.add(btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19, btn20, btn21, btn22, btn23, btn24, btn25, btn26, btn27, btn28, btn29, btn30, btn31, btn32, btn33, btn34, btn35, btn36, btn37, btn38, btn39, btn40, btn41, btn42, btn43, btn44, btn45, btn46, btn47, btn48, btn49, btn50, btn51)
        bot.send_message(message.chat.id, text="Выберите тематику", reply_markup=markup)
        if theme != None:
            def send_welcome(message):
                bot.reply_to(message, 'Ваша тематика '+ theme)
    return theme

bot.polling(none_stop=True)
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Не надо внутри функции объявлять другую функцию! Это делают в некоторых специфических случаях (например, создание нового декоратора), но чаще всего это категорически неправильно и никаких задач не решает. В том числе и в этом случае никак это не поможет.

Что касается задачи, то это типичный FSM https://github.com/eternnoir/pyTelegramBotAPI/blob...

Использовать одну глобальную переменную тут бессмысленно, так как с ботом взаимодействует много пользователей, и у каждого должно быть своё значение. А не одно на всех.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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