Как отреагировать на группу фото один раз?

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

@dp.message_handler(content_types=['text', 'photo', 'video', 'document'])
async def send_msg(message:types.Message):
    some_text = ['ключевое слово']
    for i in some_text:
        for i in range(1):
            if some_text:
                send = await bot.send_message(message.chat.id, "Этот текст, видит пользователь, в группе.".format(message.from_user, bot.get_me()), disable_notification=True, disable_web_page_preview=True, parse_mode='html')
                break

введите сюда описание изображения


Ответы (1 шт):

Автор решения: oleksandrigo

В общем вот способ который вроде как работает, для того чтобы на фотки реагировало только 1 раз.

import random

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from asyncio import sleep
from time import time

from data import config

bot = Bot(token=config.BOT_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


@dp.message_handler(content_types=["photo"])
async def get_foto(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if type(data.get('photo')) is list:
            data['photo'].append(message.photo[-1].file_id)
            data["time"] = time()
            return
        else:
            data['photo'] = [message.photo[-1].file_id]
            data["time"] = time()

    while time() - data["time"] < 3:
        await sleep(3)

    # в этот момент в data["photo"] лежат все фото которые мы получили, если что их можно куда-то переотправить
    some_text = ['ключевое слово']
    for i in some_text:
        for i in range(1):
            if some_text:
                send = await bot.send_message(message.chat.id, "Этот текст, видит пользователь, в группе.".format(message.from_user, bot.get_me()), disable_notification=True, disable_web_page_preview=True, parse_mode='html')
                break
    async with state.proxy() as data:
        del data["time"]
        del data["photo"]


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

→ Ссылка