Почему не удаляется сообщение бота в чате?
Есть telegram-bot на aiogram и sqlite.
Есть алгоритм, удаляющий присланную только-что команду пользователем и предыдущее сообщение, отправленное ботом пользователю, являющееся ответом на предыдущую команду пользователя.
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 Алгоритм создания id сообщения и помещения его в БД:
class DataBase(): ... def create_bmi_in_user_data(self, message): '''Создание id сообщения бота и помещение его в user_data''' user_data_dict = dict(ast.literal_eval(database.select_user_data(message))) try: user_id = message.chat.id except: user_id = message.from_user.id user_data_dict['bot_mes_id'].append(message.message_id + 1) try: with self.connection: return self.cursor.execute(f'''UPDATE users_table SET user_data = "{user_data_dict}" WHERE user_id = "{user_id}"''') except: Exception def del_bmi_element(self, message, element): '''Удаление id сообщения бота из словаря и возвращение словаря в user_data''' user_data_dict = dict(ast.literal_eval(database.select_user_data(message))) try: user_id = message.chat.id except: user_id = message.from_user.id user_data_dict['bot_mes_id'].remove(element) with self.connection: return self.cursor.execute(f'''UPDATE users_table SET user_data = "{user_data_dict}" WHERE user_id = "{user_id}"''') def select_user_data(self, message): '''Выделение user_data пользователя в БД''' try: user_id = message.chat.id except: user_id = message.from_user.id with self.connection: return self.cursor.execute(f'''SELECT user_data FROM users_table WHERE user_id = "{user_id}"''').fetchone()[0]2.5 Ситуация в терминале ("Чистый запуск" с обнулённой БД и историей чата):

Исходя из данных импровизированных логов, представленных выше, и работы бота, алгоритм работает как надо и для каждого пользователя, всё окей.
Проблема появляется, когда два и более пользователей ОДНОВРЕМЕННО присылают команду боту. После неё, алгоритм так же срабатывает как надо, но при следующей отправке команды перестаёт работать.
4.1 Логи:
4.2 Исходя из логов, алгоритм не может удалить сообщение по id и пытается это сделать бесконечное количество раз, что очень странно, так как сообщение бота, соответствующее используемому id существует в чате:
4.3 Если убрать конструкцию try/except из алгоритма 2.3 пункта, интерпретатор выдаёт ошибку
File "..\main.py", line 1503, in del_last_bot_message await bot.delete_message(args[0].chat.id, ids) aiogram.utils.exceptions.MessageToDeleteNotFound: Message to delete not found
3й день ломаю голову над проблемой, не понимаю, в чём дело. Дополню информацию, если необходимо. Заранее спасибо.

