AlexDolls
@AlexDolls
Python/Django Developer

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

Нужно написать бота-опросника в телеграмм. При написании команды /go бот отправляет сообщение с вопросом и появляется KeyBoardMarkup. Текст, который будет записан в переменную зависит от нажатой кнопки.
Main.py
import const
import telebot
import markups
from telebot import types

arr_answers = []

bot = telebot.TeleBot(const.token)

@bot.message_handler(commands=['start'])
def start_handler(message):
    bot.send_message(message.chat.id, "Привет, я простой бот")

@bot.message_handler(commands=['go'])
def start_answer(message):
    chat_id = message.chat.id
    bot.send_message(message.chat.id, 'В каком районе ищите кв?', reply_markup=markups.source_markup)


markups.py
from telebot import types
source_markup = types.ReplyKeyboardMarkup(row_width=1)
source_markup_butt1 = types.KeyboardButton(text = "Голосіївський")
source_markup_butt2 = types.KeyboardButton(text = "Дарницький")
source_markup_butt3 = types.KeyboardButton(text = "Деснянський")
source_markup_butt4 = types.KeyboardButton(text = "Дніпровський")
source_markup_butt5 = types.KeyboardButton(text = "Оболонський")
source_markup_butt6 = types.KeyboardButton(text = "Печерський")
source_markup_butt7 = types.KeyboardButton(text = "Подільський")
source_markup_butt8 = types.KeyboardButton(text = "Святошинський")
source_markup_butt9 = types.KeyboardButton(text = "Солом'янський")
source_markup_butt10 = types.KeyboardButton(text = "Шевченківський")
source_markup.add(source_markup_butt1, source_markup_butt2, source_markup_butt3, source_markup_butt4, source_markup_butt5, source_markup_butt6,source_markup_butt7,source_markup_butt8,source_markup_butt9,source_markup_butt10)
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
@SwitcherN
Начинаю изучать python
Добавь обработчик поступающих текстовых сообщений:

@bot.message_handler(content_types=["text"])
def i_read_your_message (message): #название функции не имеет значение
    if message.text == "Голосіївський":
        #do_something
    elif message.text == "Дарницький":
        #do_something_else


Можно делать клавиатуру в виде InlineKeyboard (то есть выводится не вместо родной клавиатуру, а прямо под сообщением в окне чата). Там обратка несколько другая. Если надо - напишу пример.

Есть еще вариант регистрировать введеный текст, а нажатие кнопки == вводу просто текста, который написан на кнопке, через метод
.register_next_step_handler ("сообщение на которое реагируем", "функция, которая обрабатывает ответ").

Но у меня "не заводится". Вопрос задал тут, но пока ответа нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Stormx480
Python Backend Developer
Либо добавь условный оператор, либо делай инлайн кнопки с коллбэками.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы