@raycoolavers

Telegram бот не отвечает на сообщения?

Telegram бот не отвечает на сообщения, такая же проблема была на стадии выбора проблемы, но решилась через call.data.
Сейчас он не отвечает на сообщение с указанным текстом. Запускается без ошибок. Помогите пожалуйста.
import telebot

from telebot import types, TeleBot

bot = telebot.TeleBot('token')

sex = ''
name = ''


@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
    start = types.KeyboardButton('Начать')
    markup.add(start)
    bot.send_message(message.chat.id, 'Привет, я - бот помощник по тому-то тому...', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def sex(message):
    global sex
    if message.text == "Начать":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
        male = types.KeyboardButton('Мужской')
        female = types.KeyboardButton('Женский')
        markup.add(male, female)
        bot.send_message(message.from_user.id, "Укажите ваш пол.", reply_markup=markup)
        bot.register_next_step_handler(message, get_sex)


def get_sex(message):
    global sex
    sex = message.text
    if message.text == "Мужской":
        bot.send_message(message.from_user.id, "Укажите своё имя", parse_mode='html')
        bot.register_next_step_handler(message, get_name)
    elif message.text == "Женский":
        bot.send_message(message.from_user.id, "Укажите своё имя", parse_mode='html')
        bot.register_next_step_handler(message, get_name)
    else:
        bot.send_message(message.chat.id, "Повторите попытку", parse_mode='html')


def get_name(message):
    global name
    name = message.text
    keyboard = types.InlineKeyboardMarkup();  # наша клавиатура
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')  # кнопка «Да»
    keyboard.add(key_yes)  # добавляем кнопку в клавиатуру
    key_no = types.InlineKeyboardButton(text='Нет', callback_data='nosa')  # кнопка << Нет >>
    keyboard.add(key_no)
    question = f'Ваш пол - {sex}, а имя - {name}?'
    bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == 'yes':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
        prob1 = types.KeyboardButton('Problem 1')
        prob2 = types.KeyboardButton('Problem 2')
        prob3 = types.KeyboardButton('Problem 3')
        markup.add(prob1, prob2, prob3)
        bot.send_message(call.message.chat.id, 'Отлично, укажите свою проблему:', reply_markup=markup)
        bot.register_next_step_handler(call.message, get_problem)
    elif call.data == 'nosa':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
        male = types.KeyboardButton('Мужской')
        female = types.KeyboardButton('Женский')
        markup.add(male, female)
        bot.send_message(call.message.chat.id, "Укажите ваш пол.", reply_markup=markup)
        bot.register_next_step_handler(call.message, get_sex)
    else:
        bot.send_message(call.message.chat.id, "Повторите попытку", parse_mode='html')


@bot.message_handler(content_types=['text'])
def get_problem(message):
    global problem
    problem = message.text
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    yes = types.KeyboardButton('Да')
    markup.add(yes)
    no = types.KeyboardButton('Нет')
    markup.add(no)
    bot.send_message(message.from_user.id, f'Ваша проблема - {problem}?', parse_mode='html', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def resend_answer(message):
    if message.text == 'Да':
        bot.send_message(bot.chat.id, "Хорошо, перeсылаю...", parse_mode='html')


bot.polling(none_stop=True)
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 1
@hardux
#telegrambot
вместо bot.register_next_step_handler, используй bot, @bot.callback_query_handler(func=lambda call: True)
def handle_callback_query(call):
if call.data == ''
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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