Закачка аватаров пользователей
This commit is contained in:
48
BotCode/routers/downloads/download_user_avatar.py
Normal file
48
BotCode/routers/downloads/download_user_avatar.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# BotCode/routers/downloads/download_user_avatar.py
|
||||
# Закачка всех аватаров пользователей
|
||||
|
||||
import os
|
||||
from aiogram import Router, types
|
||||
from aiogram.types import UserProfilePhotos
|
||||
from BotLibrary import *
|
||||
|
||||
|
||||
# Создание роутера и настройка экспорта модулей
|
||||
__all__ = ("router", "download_user_photos",)
|
||||
router = Router(name="avatar_router")
|
||||
log_type = "AvatarUser"
|
||||
|
||||
|
||||
# Функция закачки аватарок пользователя
|
||||
async def download_user_photos(message: types.Message):
|
||||
try:
|
||||
# Получение ID пользователя
|
||||
user_id = message.from_user.id
|
||||
|
||||
# Получение аватарок пользователя
|
||||
user_profile_photos: UserProfilePhotos = await bot.get_user_profile_photos(user_id)
|
||||
|
||||
# Проверка на наличие в списке "важных" пользователей
|
||||
user_id = find_people_id(user_id)
|
||||
|
||||
# Проверка наличия фотографий
|
||||
if user_profile_photos.total_count == 0:
|
||||
return f"У пользователя {user_id} нет аватарок."
|
||||
|
||||
# Объявление пути и создание директории
|
||||
user_directory = f'{ImportantPath.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
|
||||
Reference in New Issue
Block a user