@dp.callback_query_handler(lambda c: c.data == 'profile') async def process_profile(callback_query: types.CallbackQuery): user_id = callback_query.from_user.id chat_id = callback_query.message.chat.id first_name = callback_query.from_user.first_name language_code = callback_query.from_user.language_code premium = callback_query.from_user.is_premium # тут запрашиваем массив ссылок status, code, links = await request_op( user_id, chat_id, first_name=first_name, language_code=language_code, premium=premium ) if links: # тут формируется блок подписок если ссылки есть subscription_text = "<b>Для доступа к профилю подпишитесь на следующие ресурсы:</b>\n" for link in links: subscription_text += f"• {link}\n" keyboard = InlineKeyboardMarkup(row_width=1) keyboard.add(InlineKeyboardButton("Главное меню", callback_data="no_action")) await bot.edit_message_text( subscription_text, chat_id, callback_query.message.message_id, parse_mode="HTML", reply_markup=keyboard ) # если массив ссылок не пустой формируется блок подписок и останавливается дальнейшее выполнение return # тут если при запросе массив ссылок пустой мы выводим сам профиль await bot.delete_message(chat_id, callback_query.message.message_id) await show_profile(callback_query) Python @dp.callback_query_handler(lambda c: c.data == 'profile') async def process_profile(callback_query: types.CallbackQuery): user_id = callback_query.from_user.id chat_id = callback_query.message.chat.id first_name = callback_query.from_user.first_name language_code = callback_query.from_user.language_code premium = callback_query.from_user.is_premium # тут запрашиваем массив ссылок status, code, links = await request_op( user_id, chat_id, first_name=first_name, language_code=language_code, premium=premium ) if links: # тут формируется блок подписок если ссылки есть subscription_text = "<b>Для доступа к профилю подпишитесь на следующие ресурсы:</b>\n" for link in links: subscription_text += f"• {link}\n" keyboard = InlineKeyboardMarkup(row_width=1) keyboard.add(InlineKeyboardButton("Главное меню", callback_data="no_action")) await bot.edit_message_text( subscription_text, chat_id, callback_query.message.message_id, parse_mode="HTML", reply_markup=keyboard ) # если массив ссылок не пустой формируется блок подписок и останавливается дальнейшее выполнение return # тут если при запросе массив ссылок пустой мы выводим сам профиль await bot.delete_message(chat_id, callback_query.message.message_id) await show_profile(callback_query) Мне надо что бы при нажатии запрашивался массив ссылок у сервиса, если массив ссылок не пустой тогда формируется блок подписок как в коде и по идее выполнение на этом должно закончится, но оно почему то продолжает и выводит сам профиль хотя этого происходить не должно, в чем проблема Надо что бы если массив ссылок был не пустой формировался только блок подписок и ничего не происходило, если массив ссылок пустой тогда блок подписок не выводится и появляется сам профиль
await bot.answer_callback_query(callback_query.id) воткни перед return, также залогируй то что лежит в векторе links, проверь точно ли отсюда вызывается show_profile, тож можешь логнуть ну или принтами обложить хотяб
output этого можно? status, code, links = await request_op( user_id, chat_id, first_name=first_name, language_code=language_code, premium=premium )
Попробовал логировать массив ссылок полученный [] в нём должны быть links то есть ссылки, но там нихуя нету, а блок подписок формируется, массив пустой но ссылки есть тут вообще хуй знает что куда
beta, а как ты понял что у тебя блок подписок создаваться начинает? Ты его тоже логировал? Ну после if links:
doublepurpose, короче посмотрел я и понял что тут всё нахуй не надо и вызвать блок подписок можно только await request_op без всякой хуйни, и это я еблан в итоге
Попробуй. Поправил. @dp.callback_query_handler(lambda c: c.data == 'profile') async def process_profile(callback_query: types.CallbackQuery): user_id = callback_query.from_user.id chat_id = callback_query.message.chat.id first_name = callback_query.from_user.first_name language_code = callback_query.from_user.language_code premium = callback_query.from_user.is_premium status, code, links = await request_op( user_id, chat_id, first_name=first_name, language_code=language_code, premium=premium ) if links and isinstance(links, (list, tuple)) and len(links) > 0: subscription_text = "<b>Для доступа к профилю подпишитесь на следующие ресурсы:</b>\n" for link in links: subscription_text += f"• {link}\n" keyboard = InlineKeyboardMarkup(row_width=1) keyboard.add(InlineKeyboardButton("Главное меню", callback_data="no_action")) await bot.edit_message_text( subscription_text, chat_id, callback_query.message.message_id, parse_mode="HTML", reply_markup=keyboard ) return await bot.delete_message(chat_id, callback_query.message.message_id) await show_profile(callback_query) Python @dp.callback_query_handler(lambda c: c.data == 'profile') async def process_profile(callback_query: types.CallbackQuery): user_id = callback_query.from_user.id chat_id = callback_query.message.chat.id first_name = callback_query.from_user.first_name language_code = callback_query.from_user.language_code premium = callback_query.from_user.is_premium status, code, links = await request_op( user_id, chat_id, first_name=first_name, language_code=language_code, premium=premium ) if links and isinstance(links, (list, tuple)) and len(links) > 0: subscription_text = "<b>Для доступа к профилю подпишитесь на следующие ресурсы:</b>\n" for link in links: subscription_text += f"• {link}\n" keyboard = InlineKeyboardMarkup(row_width=1) keyboard.add(InlineKeyboardButton("Главное меню", callback_data="no_action")) await bot.edit_message_text( subscription_text, chat_id, callback_query.message.message_id, parse_mode="HTML", reply_markup=keyboard ) return await bot.delete_message(chat_id, callback_query.message.message_id) await show_profile(callback_query)
n1s_01, ай брад спасибо но там проблема была в том что эта часть кода вообще не использовалась а блок подписок выводил subgram сервис а не мой код