Files
limoka/cryptexctl/modules-mirror/avaclone.py
2025-08-10 01:17:09 +00:00

101 lines
4.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

__version__ = (1, 1, 2)
#
# 88
# ,d ,d 88
# 88 88 88
# ,adPPYba, 8b,dPPYba, 8b d8 8b,dPPYba, MM88MMM ,adPPYba, 8b, ,d8 ,adPPYba, MM88MMM 88
# a8" "" 88P' "Y8 `8b d8' 88P' "8a 88 a8P_____88 `Y8, ,8P' a8" "" 88 88
# 8b 88 `8b d8' 88 d8 88 8PP""""""" )888( 8b 88 88
# "8a, ,aa 88 `8b,d8' 88b, ,a8" 88, "8b, ,aa ,d8" "8b, "8a, ,aa 88, 88
# `"Ybbd8"' 88 Y88' 88`YbbdP"' "Y888 `"Ybbd8"' 8P' `Y8 `"Ybbd8"' "Y888 88
# d8' 88
# d8' 88
# © Copyright 2024
# https://t.me/cryptexctl
#
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# avaclone.py
# meta developer: @systemxplore
# scope: hikka_only
# scope: hikka_min 1.6.3
import asyncio
from telethon.tl.functions.photos import UploadProfilePhotoRequest
from telethon.errors.rpcerrorlist import PhotoCropSizeSmallError, FilePartsInvalidError
from telethon.tl.types import InputFile
from .. import loader, utils
class AvaCloneMod(loader.Module):
"""Устанавливает фото/видео/гиф аватарку многократно.\nОсторожно: возможен бан или флудвейт."""
strings = {"name": "AvaClone"}
@loader.command()
async def avaclone(self, message):
"""
Устанавливает аватарку указанное количество раз.
Используйте: .avaclone <количество> [ответ на файл/ссылка]
"""
args = utils.get_args(message)
if len(args) < 1:
await utils.answer(message, "Укажите количество раз и прикрепите файл.")
return
try:
count = int(args[0])
if count <= 0:
raise ValueError
except ValueError:
await utils.answer(message, "Некорректное количество раз.")
return
reply = await message.get_reply_message()
media = None
if reply and reply.media:
media = await self.client.download_media(reply.media)
elif len(args) > 1:
media = args[1]
else:
await utils.answer(message, "Ответьте на файл или укажите ссылку на файл.")
return
extension = media.split(".")[-1].lower()
if extension not in ["jpg", "jpeg", "png", "gif", "mp4"]:
await utils.answer(message, "❌ Формат не поддерживается. Используйте JPG, PNG, GIF или MP4.")
return
success_count = 0
for i in range(count):
try:
uploaded_file = await self.client.upload_file(media)
if extension in ["gif", "mp4"]:
await self.client(UploadProfilePhotoRequest(
file=InputFile(
id=uploaded_file.id,
parts=uploaded_file.parts,
name=media,
md5_checksum=uploaded_file.md5_checksum
)
))
else:
await self.client(UploadProfilePhotoRequest(file=uploaded_file))
success_count += 1
await asyncio.sleep(2)
except PhotoCropSizeSmallError:
await utils.answer(message, "❌ Файл слишком маленький.")
break
except FilePartsInvalidError:
await utils.answer(message, "❌ Неверный файл.")
break
except Exception as e:
await utils.answer(message, f"Ошибка: {e}")
break
if success_count > 0:
await utils.answer(
message,
f"✅ Установлено {success_count} раз(а). Возможен флудвейт, подождите 3 минуты перед следующим использованием."
)
else:
await utils.answer(message, "Не удалось установить аватарку.")