|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import random |
|
|
|
from telethon import errors |
|
from telethon.errors.rpcerrorlist import StickersetInvalidError |
|
from telethon.tl.functions.messages import GetStickerSetRequest as GetSticker |
|
from telethon.tl.functions.messages import UploadMediaRequest |
|
from telethon.tl.functions.stickers import AddStickerToSetRequest as AddSticker |
|
from telethon.tl.functions.stickers import CreateStickerSetRequest |
|
from telethon.tl.types import InputPeerSelf |
|
from telethon.tl.types import InputStickerSetItem as SetItem |
|
from telethon.tl.types import InputStickerSetShortName, User |
|
from telethon.utils import get_display_name, get_input_document |
|
|
|
from pyUltroid.fns.misc import Quotly |
|
from pyUltroid.fns.tools import TgConverter |
|
|
|
from . import LOGS, asst, asst_cmd, udB |
|
|
|
|
|
@asst_cmd( |
|
pattern="kang", |
|
) |
|
async def kang_cmd(ult): |
|
sender = await ult.get_sender() |
|
if not isinstance(sender, User): |
|
return |
|
if not ult.is_reply: |
|
return await ult.eor("`Reply to a sticker/photo..`", time=5) |
|
reply = await ult.get_reply_message() |
|
if sender.username: |
|
pre = sender.username[:4] |
|
else: |
|
pre = random.random_string(length=3) |
|
animated, dl, video = None, None, None |
|
try: |
|
emoji = ult.text.split(maxsplit=1)[1] |
|
except IndexError: |
|
emoji = None |
|
if reply.sticker: |
|
file = get_input_document(reply.sticker) |
|
emoji = emoji or reply.file.emoji |
|
name = reply.file.name |
|
if name.endswith(".tgs"): |
|
animated = True |
|
dl = await reply.download_media() |
|
elif name.endswith(".webm"): |
|
video = True |
|
dl = await reply.download_media() |
|
elif reply.photo: |
|
dl = await reply.download_media() |
|
name = "sticker.webp" |
|
image = TgConverter.resize_photo_sticker(dl) |
|
image.save(name, "WEBP") |
|
elif reply.text: |
|
dl = await Quotly().create_quotly(reply) |
|
else: |
|
return await ult.eor("`Reply to sticker or text to add it in your pack...`") |
|
if not emoji: |
|
emoji = "π΅" |
|
if dl: |
|
upl = await ult.client.upload_file(dl) |
|
file = get_input_document( |
|
await ult.client(UploadMediaRequest(InputPeerSelf(), upl)) |
|
) |
|
get_ = udB.get_key("STICKERS") or {} |
|
type_ = "anim" if animated else "static" |
|
if not get_.get(ult.sender_id) or not get_.get(ult.sender_id, {}).get(type_): |
|
sn = f"{pre}_{ult.sender_id}" |
|
title = f"{get_display_name(sender)}'s Kang Pack" |
|
if animated: |
|
type_ = "anim" |
|
sn += "_anim" |
|
title += " (Animated)" |
|
elif video: |
|
type_ = "vid" |
|
sn += "_vid" |
|
title += " (Video)" |
|
sn += f"_by_{asst.me.username}" |
|
try: |
|
await asst(GetSticker(InputStickerSetShortName(sn), hash=0)) |
|
sn = sn.replace(str(ult.sender_id), f"{ult.sender_id}_{ult.id}") |
|
except StickersetInvalidError: |
|
pass |
|
try: |
|
pack = await ult.client( |
|
CreateStickerSetRequest( |
|
user_id=sender.id, |
|
title=title, |
|
short_name=sn, |
|
stickers=[SetItem(file, emoji=emoji)], |
|
videos=video, |
|
animated=animated, |
|
software="@TeamUltroid", |
|
) |
|
) |
|
except Exception as er: |
|
return await ult.eor(str(er)) |
|
sn = pack.set.short_name |
|
if not get_.get(ult.sender_id): |
|
get_.update({ult.sender_id: {type_: [sn]}}) |
|
else: |
|
get_[ult.sender_id].update({type_: [sn]}) |
|
udB.set_key("STICKERS", get_) |
|
return await ult.reply( |
|
f"**Kanged Successfully!\nEmoji :** {emoji}\n**Link :** [Click Here](https://t.me/addstickers/{sn})" |
|
) |
|
name = get_[ult.sender_id][type_][-1] |
|
try: |
|
await asst(GetSticker(InputStickerSetShortName(name), hash=0)) |
|
except StickersetInvalidError: |
|
get_[ult.sender_id][type_].remove(name) |
|
try: |
|
await asst( |
|
AddSticker(InputStickerSetShortName(name), SetItem(file, emoji=emoji)) |
|
) |
|
except (errors.StickerpackStickersTooMuchError, errors.StickersTooMuchError): |
|
sn = f"{pre}{ult.sender_id}_{ult.id}" |
|
title = f"{get_display_name(sender)}'s Kang Pack" |
|
if animated: |
|
sn += "_anim" |
|
title += " (Animated)" |
|
elif video: |
|
sn += "_vid" |
|
title += "(Video)" |
|
sn += f"_by_{asst.me.username}" |
|
try: |
|
pack = await ult.client( |
|
CreateStickerSetRequest( |
|
user_id=sender.id, |
|
title=title, |
|
short_name=sn, |
|
stickers=[SetItem(file, emoji=emoji)], |
|
animated=animated, |
|
) |
|
) |
|
except Exception as er: |
|
return await ult.eor(str(er)) |
|
get_[ult.sender_id][type_].append(pack.set.short_name) |
|
udB.set_key("STICKERS", get_) |
|
return await ult.reply( |
|
f"**Created New Kang Pack!\nEmoji :** {emoji}\n**Link :** [Click Here](https://t.me/addstickers/{sn})" |
|
) |
|
except Exception as er: |
|
LOGS.exception(er) |
|
return await ult.reply(str(er)) |
|
await ult.reply( |
|
f"Sticker Added to Pack Successfully\n**Link :** [Click Here](https://t.me/addstickers/{name})" |
|
) |
|
|
|
|
|
@asst_cmd(pattern="listpack") |
|
async def do_magic(ult): |
|
ko = udB.get_key("STICKERS") or {} |
|
if not ko.get(ult.sender_id): |
|
return await ult.reply("No Sticker Pack Found!") |
|
al_ = [] |
|
ul = ko[ult.sender_id] |
|
for _ in ul.keys(): |
|
al_.extend(ul[_]) |
|
msg = "β’ **Stickers Owned by You!**\n\n" |
|
for _ in al_: |
|
try: |
|
pack = await ult.client(GetSticker(InputStickerSetShortName(_), hash=0)) |
|
msg += f"β’ [{pack.set.title}](https://t.me/addstickers/{_})\n" |
|
except StickerSetInvalidError: |
|
if ul.get("anim") and _ in ul["anim"]: |
|
ul["anim"].remove(_) |
|
elif ul.get("vid") and _ in ul["vid"]: |
|
ul["vid"].remove(_) |
|
else: |
|
ul["static"].remove(_) |
|
udB.set_key("STICKERS", ko) |
|
await ult.reply(msg) |
|
|