Бот отправляет в группу ТГ и на e-mail одну и ту же картинку, а должен отправлять ту которую получил. Подскажите пожалуйста как исправить

Бот отправляет в группу ТГ и на e-mail одну и ту же картинку. Ту которую получил первую после запуска бота. А должен отправлять сначала первую которую получил, затем вторую и т.д. Перезапуск бота дает то что он опять отправляет только ту фото, которую получает первой. Вполне возможно коряво написан код (первый мой бот). Отправка в группу и на e-mail должна осуществляться обязательно при прикреплении фото и после добавления комментария. Подскажите пожалуйста, как исправить. Советы по улучшению кода приветствуются.

import logging  # Для логирования на время отладки бота. ЗАТЕМ ОТКЛЮЧИТЬ ЛОГИРОВАНИЕ
import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from aiogram.filters import CommandStart

# Импорт библиотек и модулей для отправки сообщений на e-mail
import smtplib

from os.path import basename

from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart

import app.keyboards as kb

from config import TOKEN, CHAT_ID, FROM_EMAIL, TO_EMAIL, PASSWORD


bot = Bot(token=TOKEN)
dp = Dispatcher()


@dp.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer(f'Привет!\nВаше имя: {message.from_user.first_name}\n'
                        f'Ваше имя пользователя: {message.from_user.username}\n'
                        f'Ваш ID: {message.from_user.id}', reply_markup=kb.main)


@dp.message(F.text == 'Отправить фото')
async def near_miss(message: Message):
    await message.answer('Прикрепите фото ...')

    @dp.message(F.photo)
    async def get_photo(message: Message):
        await message.reply('Спасибо за фото. Напишите комментарии, пояснения к данному фото ...')
        photo_file_id = message.photo[-1].file_id
        print(photo_file_id)
        name_file = f"tmp/{message.photo[-1].file_id}.jpg"
        await bot.download(message.photo[-1],
                           destination=name_file)  # Сохраняется в папку tmp в папке программы на компе/сервере

        @dp.message(F.text)
        async def get_text(message: Message):
            await message.reply('Спасибо, все данные отправленны')
            await bot.send_message(chat_id=CHAT_ID,
                                   text='<b>ОТПРАВКА ФОТОГРАФИИ</b>',
                                   parse_mode='HTML')   # Как вариант сообщение надо сделать формата:
                                                                        # 'ОТПРАВКА ФОТОГРАФИИ от Ф.И.О. и № телефона'
            await bot.send_photo(chat_id=CHAT_ID, photo=photo_file_id)
            await bot.send_message(chat_id=CHAT_ID, text=message.text)

            # Отправка на e-mail
            from_email = FROM_EMAIL
            to_email = TO_EMAIL
            subject = 'Фото от ...'

            msg = MIMEMultipart()
            msg['From'] = from_email
            msg['To'] = ', '.join(to_email) # Для отправки списком (несколько получателеЙ) ОБЯЗАТЕЛЬНО сделать через join
            msg['Subject'] = subject

            # Подготовка картинки к отправке
            with open(name_file, "rb") as media:
                file = MIMEApplication(media.read(), Name=basename("file.jpg"))

            # Отправка картинки
            msg.attach(file)
            # Отправка текста
            msg.attach(MIMEText(message.text))

            with smtplib.SMTP('smtp.yandex.ru', 587) as smtp:
                smtp.starttls()
                smtp.login(from_email, PASSWORD)
                smtp.sendmail(from_email, to_email, msg.as_string())
                smtp.quit()

@dp.message(F.text == 'О боте')
async def about_us(message: Message):
    await message.answer('Для отображения кнопок бота набрать и отправить сообщение - /start\n\n'
                         'Бот предоставляет возможность отправить фотографию,'
                         ' а также комментарий к ней.')


@dp.message(F.text == 'О нас')
async def about_us(message: Message):
    await message.answer('Тут текс будет потом')

async def main():
    await dp.start_polling(bot)


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)     # Для логирования на время отладки бота. ЗАТЕМ ОТКЛЮЧИТЬ ЛОГИРОВАНИ
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print('Бот выключен!')

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