Не выполняться функция отлова следующего сообщения

Работаю с PyTelegramBotAPI cовсем недавно. Возникла следующая задача: пользователь выбирает какую характеристику открыть с помощью клавиатуры, отправляется сообщение, я пытаюсь его словить с помощью register_next_step_handler, но по-моему предположении он не работает, т.к. изначально у меня нет хэндлера в метода, который отправляет сообщение с запросом ввода, но это не точно.

@classmethod
def start_game_session(cls):
    for player in cls.players:
        player.gen_abils()
        player.send_msg_with_stat()
        msg = bot.bot.send_message(player.u_id, "Что будем открывать?", reply_markup=gen_markup())
        bot.bot.register_next_step_handler(message=msg, callback=lambda x: cls.choose_abil_to_open(x))



@classmethod
def choose_abil_to_open(cls, msg):
    msg_text = msg.text.lower()
    print(msg)

Метод choose_abil_to_open не вызывается вообще: нет ни принта, ни исключения. P.S. bot.bot используется потому, что объект бота находится в другом файле


Ответы (1 шт):

Автор решения: Zhymabek Roman

Я перечитал ваш вопрос неколько раз, и ниего не понял что вам нужно, особенно что делает ваш код, вы кинули только часть вашего кода, но все же примерно понял что вы имеете ввиду (если вообще правильно понял я). Изучите как лучше задавать вопрос: https://ru.stackoverflow.com/help/how-to-ask

Вернусь к вашему коду. Из-за того что вы отправили участок кода, не понятно что оно делает. Я так понял по вашему вопросу вы от пользывателя запрашиваете персонжа игры, про которого юзер хочет получить характеристику. Вот сам код:

#!/usr/bin/python

import telebot
import logging
from telebot import types
import re

API_TOKEN = 'BOT TOKEN HERE'

bot = telebot.TeleBot(API_TOKEN)

logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG)

@bot.message_handler(commands=['start'])
def send_welcome(message):
    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    markup.add('Характеристика Джидая')
    markup.add('Характеристика Ван-Гомера')

    msg = bot.reply_to(message, "Привет! Что будем открывать?", reply_markup=markup)
    bot.register_next_step_handler(msg, process_characteristic_step)

def process_characteristic_step(message):
    djiday = re.search('Джидая', message.text)
    van_gomer= re.search('Ван-Гомера', message.text)
    if djiday:
      bot.reply_to(message, "Вы нажали на Джидай")
    elif van_gomer:
      bot.reply_to(message, "Вы нажали на Ван-Гомер")

bot.polling()

Если я не правильно понял что вы хотели, тогда пожалуйста пришлите весь код и попробуйте еще раз обьяснить что вам нужно. Удачи!

→ Ссылка