45 lines
2.1 KiB
Python
45 lines
2.1 KiB
Python
# BotCode/routers/downloads/download_user_avatar.py
|
||
# Закачка всех аватаров пользователей
|
||
|
||
import os
|
||
from aiogram import types
|
||
from aiogram.types import UserProfilePhotos
|
||
from BotLibrary import *
|
||
|
||
|
||
# Создание роутера и настройка экспорта модулей
|
||
__all__ = ("download_user_photos",)
|
||
log_type = "AvatarUser"
|
||
|
||
|
||
# Функция закачки аватарок пользователя
|
||
async def download_user_photos(message: types.Message):
|
||
try:
|
||
# Проверка на наличие в списке "важных" пользователей
|
||
user_id = find_imp_id(message.from_user.id)
|
||
|
||
# Получение аватарок пользователя
|
||
user_profile_photos: UserProfilePhotos = await bot.get_user_profile_photos(message.from_user.id)
|
||
|
||
# Проверка наличия фотографий
|
||
if user_profile_photos.total_count == 0:
|
||
return f"У пользователя {user_id} нет аватарок."
|
||
|
||
# Объявление пути и создание директории
|
||
user_directory = f'{ProjectPath.user_avatar}/{user_id}'
|
||
os.makedirs(user_directory, exist_ok=True)
|
||
|
||
# Закачка аватарок пользователя
|
||
for index, photo_set in enumerate(user_profile_photos.photos):
|
||
for photo_index, photo in enumerate(photo_set):
|
||
file = await bot.get_file(photo.file_id)
|
||
# Путь для сохранения фотографии с началом индекса с 1
|
||
file_path = f'{user_directory}/{user_id}_{index + 1}.png'
|
||
await bot.download_file(file.file_path, file_path)
|
||
return f"Аватарки пользователя {user_id} успешно закачаны!"
|
||
|
||
except Exception as e:
|
||
text_error = f"Ошибка при закачке аватарок пользователя: {str(e)}"
|
||
logger.bind(log_type=log_type, user=f"@{message.from_user.username}").error(text_error)
|
||
return text_error
|