Answer the question
In order to leave comments, you need to log in
How, when pressing a button in a telegram bot, allow the user to enter the required data?
Help me complete the code, I spent half a day on this, but did not understand how to implement what is written in the comments. I will be very grateful!
import telebot
from telebot import types
TeleB = telebot.TeleBot('Token')
@TeleB.message_handler(commands=['start'])
def Start(Messages):
markup = types.InlineKeyboardMarkup()
key_1 = types.InlineKeyboardButton(text = 'Создать заказ', callback_data="Order")
markup.add(key_1)
TeleB.send_message(Messages.chat.id, 'Пожелание', reply_markup = markup)
@ExTorg.callback_query_handler(func=lambda call: True)
def Handler(CallBack):
if CallBack.data == 'Order':
Order = list()
TeleB.send_message(CallBack.id, 'Введите название товара: ')
## Ожидаем отправку сообщения с именем товара от пользователя и заносим текст сообщения в список Order.append('Текст отправленного сообщения'), после чего удаляем сообщение отправленное пользователем, затем продолжаем выполнение кода
TeleB.edit_message_text(chat_id = CallBack.id, message_id = CallBack.message.id, text = 'Введите стоймость товара: ')
## Ожидаем отправку сообщения со стоймостью товара от пользователя и заносим текст сообщения в список Order.append('Текст отправленного сообщения'), после чего удаляем сообщение отправленное пользователем, затем продолжаем выполнение кода
TeleB.edit_message_text(chat_id = CallBack.id, message_id = CallBack.message.id, text = 'Введите описание товара: ')
## Ожидаем отправку сообщения с описанием товара от пользователя и заносим текст сообщения в список Order.append('Текст отправленного сообщения'), после чего удаляем сообщение отправленное пользователем, затем продолжаем выполнение кода
Blank = f'Имя товара: {Order[0]}\nСтоймость товара: {Order[1]}\nОписание товара: {Order[2]}\n\nСохранить позицию?'
markup = types.InlineKeyboardMarkup()
key_1 = types.InlineKeyboardButton(text = 'Да', callback_data="Order_Yes")
key_2 = types.InlineKeyboardButton(text = 'Нет', callback_data="Order_No")
markup.add(key_1, key_2)
TeleB.edit_message_text(chat_id = CallBack.id, message_id = CallBack.message.id, text = 'Введите название товара: ', reply_markup = markup)
## Ожидаем подтверждения. Если нажата кнопка 'Да', то переменная Order передаётся в функцию Save, иначе действие завершается без сохранения
def Save(Order):
print(Order)
Answer the question
In order to leave comments, you need to log in
Hello, if I'm correct, the interaction will take the form of a dialogue. You can use the function Teleb.register_next_step_handler(message, "function to handle"). That is, when you enter the next message from the user, it goes to the processing of the function that is the argument. And that's it, then you process it, write it down somewhere and everything should be fine.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question