1. Есть бот на aiogram
2. Есть алгоритм, удаляющий присланную только-что команду пользователем и предыдущее сообщение, отправленное ботом пользователю, являющееся ответом на предыдущую команду пользователя.
2.1 id сообщения бота записывается в базу данных пользователя
2.2 Алгоритм извлекает из БД id и по нему удаляет сообщение
2.3 Сам алгоритм:
async def del_last_bot_message(*args):
'''
Удаление лишних сообщений для реализации "чистого интерфейса"
'''
print(f'ENTER MESSAGE: {args[0].message_id + 1}')
# Удаление сообщения пользователя
try:
await args[0].delete()
except:
Exception
# Удаление последнего сообщения бота по id
bmi = dict(ast.literal_eval(database.select_user_data(args[0])))
while len(bmi['bot_mes_id']) > 0:
bmi = dict(ast.literal_eval(database.select_user_data(args[0])))
for ids in bmi['bot_mes_id']:
try:
print(f'TRY DEL MES: {ids} OF {args[0].from_user.username}')
await bot.delete_message(args[0].chat.id, ids)
print(f'DONE DEL MES: {ids} OF {args[0].from_user.username}')
database.del_bmi_element(args[0], ids)
print(f'DONE DEL ELEM: {ids} OF {args[0].from_user.username}')
except:
print(f'FAILE DEL MESSAGE: {ids} OF {args[0].from_user.username}')
continue
if len(bmi['bot_mes_id']) == 0:
database.create_bmi_in_user_data(args[0])
print(f'LAST FOO: {args[0].message_id + 1} {args[0].from_user.username}')
2.4 Ситуация в терминале ("Чистый запуск" с обнулённой БД и историей чата):
3. Исходя из данных импровизированных логов, представленных выше, и работы бота, алгоритм работает как надо и для каждого пользователя, всё окей.
4. Проблема появляется, когда два и более пользователей ОДНОВРЕМЕННО присылают команду боту. После неё, алгоритм так же срабатывает как надо, но при следующей отправке команды перестаёт работать.
4.1 "Логи":
4.2 Исходя из логов, алгоритм не может удалить сообщение по id и пытается это сделать бесконечное количество раз, что очень странно, так как сообщение бота, соответствующее используемому id существует в чате:
2й день ломаю голову над проблемой, не понимаю, в чём дело.
Дополню информацию, если необходимо.
Заранее спасибо