@dmitriy8720

Почему Цикл неправильно завершается?

почему цикл не правильно завершается, так как при отправке 5 фото без подписи, удаляется только 1, а должны удалятся все, что отправит пользователь, в группу телеграм.

@dp.message_handler(content_types=["photo"])
async def handler_photo(message: types.Message, state: FSMContext):
    user_id = message.from_user.id
    username = message.from_user.username
    first_name = message.from_user.first_name
    last_name = message.from_user.last_name
    name = message.from_user.full_name
 
    async with state.proxy() as data:
        if type(data.get('photo')) is list:
            data['photo'].append(message.photo[-1].file_id)
            return
        else:
            data['photo'] = [message.photo[-1].file_id]

    for i in range(1):
        if message.photo:
            await bot.send_message(message.chat.id, f"Текст для пользователя.".format(message.from_user), parse_mode='html', disable_notification=True)
            await message.delete()
            return
    async with state.proxy() as data:
        del data["photo"]


Нужно, чтобы один раз появился текст, как сейчас и чтобы все фото удалялись, чтобы ни одна, не оставалась в группе от пользователь, при публикации до 10 фото, как галерея, с подписью или без.
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что есть этот кусок кода:

async with state.proxy() as data:
        if type(data.get('photo')) is list:
            data['photo'].append(message.photo[-1].file_id)
            return
        else:
            data['photo'] = [message.photo[-1].file_id]


если тип - список:
    выйти из функции
если не список:
    сделать списком


Прилетает первое фото - делаете объект списком, прилетает второе и последующие фото - выходите из функции

Ну и помимо них есть зачем-то такие куски:
for i in range(1): - просто зачем?
if message.photo: - условие не может не выполниться в контексте этого хэндлера
async with state.proxy() as data:
        del data["photo"]
- выполнение никогда не дойдет сюда
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы