Как исправить ошибку 'name "message" is not defined'? Pytelegrambotapi
Как убрать ошибку name "message" is not defined.? Я понимаю, что проблема в том, что я не могу зарегистрировать введенный текст пользователем и перейти в другую функцию, но мне это нужно обязательно. Как можно это исправить? Вот кусочек кода, где ошибка:
def knopki2(message):
knop2 = types.InlineKeyboardMarkup()
but1_2 = types.InlineKeyboardButton('2', callback_data = 'two')
but2_2 = types.InlineKeyboardButton('3', callback_data='three')
but2_3 = types.InlineKeyboardButton('4', callback_data='four')
knop2.add(but1_2, but2_2, but2_3)
input2 = bot.send_message(message.chat.id, text="Выбери кол-во декора и я подсчитаю материалы ?", reply_markup=knop2)
bot.register_next_step_handler(input2, lol2)
@bot.callback_query_handler(func=lambda call:True)
def lol2(call):
if call.message:
if(call.data == "two"):
podg = bot.send_message(message.chat.id, "Введи первое название мебели")
bot.register_next_step_handler(podg, pod01)
Ответы (2 шт):
Автор решения: Gawain
→ Ссылка
def lol2(call):
if call.message:
if call.data == "two":
podg = bot.send_message(message.chat.id, "Введи первое название мебели")
bot.register_next_step_handler(podg, pod01)
elif call.message.text == "/menu":
menu(call.message)
elif call.message.text == "/start":
start(call.message)
Я думаю что это не очень удачная идея, обрабатывать все сообщения в одной функции. Почитайте про message_handler
Автор решения: oleksandrigo
→ Ссылка
UPD2. Вы неправильно использовали register_next_step_handler
def knopki2(message: types.Message):
knop2 = types.InlineKeyboardMarkup()
but1_2 = types.InlineKeyboardButton('2', callback_data='two')
but2_2 = types.InlineKeyboardButton('3', callback_data='three')
but2_3 = types.InlineKeyboardButton('4', callback_data='four')
knop2.add(but1_2, but2_2, but2_3)
bot.send_message(message.chat.id,
text="Выбери кол-во декора и я подсчитаю материалы ?",
reply_markup=knop2)
# вообще не нужен
# bot.register_next_step_handler(message, lol2)
@bot.callback_query_handler(func=lambda call: True)
def lol2(call: types.CallbackQuery):
# бесполезное условие
# if call.message:
# не пихайте условие в скобки просто так
# if (call.data == "two"):
if call.data == "two":
bot.send_message(call.message.chat.id, "Введи первое название мебели")
bot.register_next_step_handler(call.message, pod01)