call.data проблемы в телеграм боте как сделать что бы call.data сработала внутри цикла
Как сделать что бы внутри цикла принималась последний call.data, а не первоначальный главный call.data
@bot.callback_query_handler(func=lambda call: True)
def wellll_in_the_aki(call):
if call.data == 'g11':
q = aki.start_game(language='ru')
serts = types.InlineKeyboardMarkup(row_width=3)
item1 = types.InlineKeyboardButton('иа', callback_data='y')
item2 = types.InlineKeyboardButton("жоқ", callback_data='n')
item3 = types.InlineKeyboardButton("idk(білмеймін)", callback_data='idk')
item4 = types.InlineKeyboardButton("back", callback_data='back')
serts.add(item1, item3, item2, item4)
while aki.progression <= 80:
photo1 = open('staies/maxresdefault.jpg', 'rb')
photo2 = open('staies/maxresdefault22.jpg', 'rb')
photochange = [photo1, photo2]
bot.send_photo(call.message.chat.id, random.choice(photochange))
bot.send_message(call.message.chat.id, q + "\n\t", reply_markup=serts)
sleep(5)
if call.data == "back":
try:
q = aki.back()
except akinator.CantGoBackAnyFurther:
pass
elif call.data == "y":
q = aki.answer("yes")
elif call.data == "n":
q = aki.answer("no")
elif call.data == "idk":
q = aki.answer("idk")
else:
bot.send_message(call.message.chat.id, call.data)
aki.win()
bot.send_message(call.message.chat.id,
f"Это {aki.first_guess['name']} ({aki.first_guess['description']})! Я прав?\n{aki.first_guess['absolute_picture_path']}\n\t")
bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="?")
Ответы (1 шт):
Автор решения: shalor1k
→ Ссылка
Ваша проблема заключается в том, что вы проверяете call.data внутри ещё одной проверки call.data, вам нужно сместить внутренние проверки на уровень основной функции, к примеру так:
if call.data == 'g11':
q = aki.start_game(language='ru')
serts = types.InlineKeyboardMarkup(row_width=3)
item1 = types.InlineKeyboardButton('иа', callback_data='y')
item2 = types.InlineKeyboardButton("жоқ", callback_data='n')
item3 = types.InlineKeyboardButton("idk(білмеймін)", callback_data='idk')
item4 = types.InlineKeyboardButton("back", callback_data='back')
serts.add(item1, item3, item2, item4)
while aki.progression <= 80:
photo1 = open('staies/maxresdefault.jpg', 'rb')
photo2 = open('staies/maxresdefault22.jpg', 'rb')
photochange = [photo1, photo2]
bot.send_photo(call.message.chat.id, random.choice(photochange))
bot.send_message(call.message.chat.id, q + "\n\t", reply_markup=serts)
sleep(5)
if call.data == "back":
try:
q = aki.back()
except akinator.CantGoBackAnyFurther:
pass
elif call.data == "y":
q = aki.answer("yes")
elif call.data == "n":
q = aki.answer("no")
elif call.data == "idk":
q = aki.answer("idk")
else:
bot.send_message(call.message.chat.id, call.data)