mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-16 06:24:18 +02:00
101 lines
4.8 KiB
Python
101 lines
4.8 KiB
Python
__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, "❌ Не удалось установить аватарку.") |