A
A
Anatoly Belousov2021-04-29 21:24:44
Python
Anatoly Belousov, 2021-04-29 21:24:44

Faced such a problem that the bot does not respond to the but1_2 function?

Good day, I ran into such a problem that the bot does not respond to the but1_2 function? I write a bot for the first time and I don’t know a lot of things, so don’t judge strictly)

.......
def func_but(message):
    bot.send_message(message.chat.id, 'Кол-во голов команды ' + kom1 + ' в прошлой игре?')
    bot.register_next_step_handler(message, but1_1)

def but1_1(message):
    global i
    global ch
    i = int(message.text)
   ch = ch + i
    a.insert(0, i)
    markup = types.InlineKeyboardMarkup()
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
    markup.add(key_yes)
    key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
    markup.add(key_no)
    bot.send_message(message.chat.id, 'Хочешь ввести результат ещё одной игры?', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def but1_2(call):
     if call.data == 'yes':
        bot.register_next_step_handler(call.message, func_but)   #отсюда бот не возвращается на func_but
     elif call.data == 'no':
        bot.register_next_step_handler(call.message, result_1)    #и отсюда бот не идёт на след. функцию result1

def result_1(message):
    # вычисления
    # вывод вычеслений
bot.polling()

Answer the question

In order to leave comments, you need to log in

2 answer(s)
Y
Yupiter7575, 2021-04-29
@yupiter7575

There is little to understand from the code, because there is no syntax highlighting or indentation. I can assume that you did not add a decorator

G
Grandma Luda, 2021-04-29
@KirasiH

What is there to think?
First we declare a function

def func():
    #тело функции

and then call func()
In your case
def but1_1(message):
    global i
    global ch
    i = int(message.text)
   ch = ch + i
    a.insert(0, i)
    markup = types.InlineKeyboardMarkup()
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
    markup.add(key_yes)
    key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
    markup.add(key_no)
    bot.send_message(message.chat.id, 'Хочешь ввести результат ещё одной игры?', reply_markup=markup)

def func_but(message):
    bot.send_message(message.chat.id, 'Кол-во голов команды ' + kom1 + ' в прошлой игре?')
    bot.register_next_step_handler(message, but1_1)

@bot.callback_query_handler(func=lambda call: True)
def but1_2(call):
     if call.data == 'yes':
        bot.register_next_step_handler(call.message, func_but)   #отсюда бот не возвращается на func_but
     elif call.data == 'no':
        bot.register_next_step_handler(call.message, result_1)    #и отсюда бот не идёт на след. функцию result1

def result_1(message):
    # вычисления
    # вывод вычеслений
bot.polling()

Thank Grandpa!

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question