@Aztart

Почему не удаляется сообщение бота в чате?

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 Ситуация в терминале ("Чистый запуск" с обнулённой БД и историей чата):
60bfa4fbab00a669628128.jpeg

3. Исходя из данных импровизированных логов, представленных выше, и работы бота, алгоритм работает как надо и для каждого пользователя, всё окей.

4. Проблема появляется, когда два и более пользователей ОДНОВРЕМЕННО присылают команду боту. После неё, алгоритм так же срабатывает как надо, но при следующей отправке команды перестаёт работать.
4.1 "Логи":
60bfa6f4be571013119144.jpeg
4.2 Исходя из логов, алгоритм не может удалить сообщение по id и пытается это сделать бесконечное количество раз, что очень странно, так как сообщение бота, соответствующее используемому id существует в чате:
60bfa822dce03908561122.jpeg

2й день ломаю голову над проблемой, не понимаю, в чём дело.
Дополню информацию, если необходимо.
Заранее спасибо
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы