Делаю телеграмм бота, в котором использую SimpleQiwi.
Суть:
1 Бот выдает счет
2 И запускает цикл по проверке
3 Если оплатил человек то все норм не ошибок ничего
4. Если же нажал /start или ёще что-то и отменил платёж, то бот перестаёт выставлять счёта не только одному пользователю, а всем. Но после того как кто то не важно кто отменил цикл, любой юзер то бот просто перестает выдавать новый счет, выдает ошибку "OverridingEx", я ее стал ловить что бы не вылетало но суть проблемы осталась.
Кто может сказать как решить проблему.
Сам цикл:
elif message.text == '100 рублей':
try:
mar = types.ReplyKeyboardMarkup(resize_keyboard=True) #keyboard (сумма пополнения)
item5 = types.KeyboardButton("/start")
mar.add(item5)
bot.send_message(message.chat.id, "Внимание! Если вы введёте неверный комментарий, то ваш платёж не будет засчитан. У вас есть 2 минуты на оплату.", reply_markup=mar)
price = 100 # Минимальное значение при котором счет будет считаться закрытым
comment = api.bill(price) # Создаем счет. Комментарий с которым должен быть платеж генерируется автоматически, но его можно задать
bot.send_message(message.chat.id, "Переведите %i рублей(-ь) на счет %s с комментарием '%s'" % (price, phone, comment))
api.start() #начинаю проверку
while True:
sleep(120)
bot.send_message(message.chat.id, "Время вышло, нажмите на /start")
api.stop() #останавливаю проверку
break
if api.check(comment): #если всё окей, то пишу следующее
bot.send_message(message.chat.id, "Платёж получен!")
break
sleep(1)
api.stop() # останавливаю проверку
except OverridingEx: #Ловлю ошибку
bot.send_message(message.chat.id, 'ERROR')
Ошибка:
2020-05-15 01:20:45,594 (util.py:68 WorkerThread2) ERROR - TeleBot: "OverridingEx occurred, args=('Overriding bill!',)
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "bot.py", line 75, in first
comment = api.bill(price) # ▒▒▒▒▒▒▒ ▒▒▒▒. ▒▒▒▒▒▒▒▒▒▒▒ ▒ ▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒, ▒▒ ▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\SimpleQIWI\Session.py", line 106, in bill
raise OverridingEx('Overriding bill!')
SimpleQIWI.Errors.OverridingEx: Overriding bill!
"
Traceback (most recent call last):
File "bot.py", line 93, in
bot.polling(none_stop=True)
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 415, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 439, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 111, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\six.py", line 703, in reraise
raise value
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "bot.py", line 75, in first
comment = api.bill(price) # ▒▒▒▒▒▒▒ ▒▒▒▒. ▒▒▒▒▒▒▒▒▒▒▒ ▒ ▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒, ▒▒ ▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\SimpleQIWI\Session.py", line 106, in bill
raise OverridingEx('Overriding bill!')
SimpleQIWI.Errors.OverridingEx: Overriding bill!
Прошу помочь. Если что-то непонятно в коде - пишите, обьясню.