как принимать введенный текст пользователе телеграм бот (Python, Telebot)
подскажите как можно принять введённый текст пользователя
import telebot
bot = telebot.TeleBot('token')
keyboard = telebot.types.ReplyKeyboardMarkup(True, True)
keyboard1 = telebot.types.ReplyKeyboardMarkup(True)
keyboard.row('СМС', 'Звонки')
keyboard1.row('Назад')
phone = ''
@bot.message_handler(commands=['start'])
def start_messages(message):
bot.send_message(message.from_user.id, "Какой тип сообщения вы бы хотели сделать ?", reply_markup = keyboard)
@bot.message_handler(content_types=['text'])
def after_text(message):
if message.text == 'СМС':
input1 = message.text
bot.send_message(message.from_user.id, 'Введите номер телефона: ', reply_markup = keyboard1)
bot.register_next_step_handler(message, after_text)
elif message.text == 'Звонки':
bot.send_message(message.from_user.id, 'Скоро будет...', reply_markup = keyboard1)
elif message.text == 'Назад':
bot.send_message(message.from_user.id, 'Какой тип сообщения вы бы хотели сделать ?', reply_markup = keyboard)
else:
bot.send_message(message.from_user.id, 'Я вас не понимаю')
bot.polling(none_stop=True, interval=0)
Видел в интернете пишут что надо использовать bot.register_next_step_handler(message, after_text) А что дальше то, как сделать что бы переменная phone принимала значение введённого номера человека ?
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
@bot.message_handler(content_types=['text'])
def after_text(message):
if message.text == 'СМС':
msg = bot.send_message(message.from_user.id, 'Введите номер телефона: ', reply_markup = keyboard1)
bot.register_next_step_handler(msg, after_text_2)
...
def after_text_2(message):
print('введённый пользователем номер телефона на шаге "смс":', message.text)
bot.register_next_step_handler принимает два аргумента:
- кому\куда/что отправить
- к какому шагу (функции) перейти
после отправки msg выполняется ожидание ввода, с последующим "пробросом" в функцию указанную вторым аргументом.
это если на пальцах.