В приведенном коде имеется одна проблема - рекурсивный вызов функции `pay_aaio(call)` внутри блока `try-except`. Это может вызвать бесконечную рекурсию и привести к переполнению стека вызовов.
Для исправления этой проблемы, вам нужно включить условие выхода из рекурсии в ваш код. Например, вы можете использовать переменную `continue_processing`, которая будет устанавливаться в `False` для прерывания цикла рекурсии.
Измененный код будет выглядеть следующим образом:
```python
continue_processing = True
@bot.callback_query_handler(func=lambda call: call.data.startswith("pay_"))
async def pay_aaio(call):
user_id = call.from_user.id
global continue_processing
try:
# Code
while continue_processing:
# Отправляем запрос на проверку статуса оплаты
if '<span class="mb-2">Заказ просрочен. Оплатить заказ необходимо было' in response.content.decode():
await bot.send_message(user_id, "Срок ссылки истёк. Вы не успели оплатить =(")
continue_processing = False
elif '<span class="mb-2">Заказ успешно был оплачен</span>' in response.content.decode():
await bot.send_message(user_id, f'✅ Оплата на сумму *{amount}* прошла успешно! Ваш баланс пополнен.', parse_mode='Markdown')
continue_processing = False
else:
print("Заказ не оплачен.")
await asyncio.sleep(5)
except Exception as e:
print(e)
pass
if continue_processing:
await pay_aaio(call)
```
Таким образом, код будет возвращаться в начало функции только при установленном значении `continue_processing = True`, а при установке значения `False` цикл рекурсии будет прерван.