# ---------------------------------------------------------------------------------
# Author: @shiro_hikka
# Name: Sticker stealer
# Description: Emoji / Sticker pickpocket
# Commands: steal
# ---------------------------------------------------------------------------------
# © Copyright 2025
#
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# ---------------------------------------------------------------------------------
# scope: hikka_only
# meta developer: @shiro_hikka
# meta banner: https://0x0.st/s/FIR0RnhUN5pZV5CZ6sNFEw/8KBz.jpg
# ---------------------------------------------------------------------------------
__version__ = (1, 0, 1)
from .. import loader, utils
from telethon.tl.types import Message
import asyncio
@loader.tds
class StickerStealer(loader.Module):
"""Emoji / Sticker pickpocket"""
strings = {
"name": "StickerStealer",
"incorrect": "🤨 It's not a sticker or emoji"
}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"Emoji pack",
"emsaved",
lambda: "Specify a name of your emoji pack",
),
loader.ConfigValue(
"Animated sticker pack",
"vssaved",
lambda: "Specify a name of your animated sticker pack"
),
loader.ConfigValue(
"Static sticker pack",
"sssaved",
lambda: "Specify a name of your static sticker pack"
)
)
def checkType(self, reply, message):
if hasattr(reply, "media"):
if hasattr(reply.media, "document"):
mime_type = reply.media.document.mime_type.split('/')
if mime_type[1] == "webp":
return 3
elif mime_type[1] == "webm":
return 2
if reply.entities:
return 1
else:
return 0
async def stealcmd(self, message: Message):
""" - add an emoji or sticker to your pack
Emoji: one type of emoji only is possible to be used at time"""
await utils.answer(message, "....")
reply = await message.get_reply_message()
bot = "Stickers"
cfg_ref = {
1: self.config["Emoji pack"],
2: self.config["Animated sticker pack"],
3: self.config["Static sticker pack"]
}
entity_type = {
1: "An emoji",
2: "A sticker",
3: "A sticker"
}
async with self.client.conversation(bot) as bot:
_entity_type = self.checkType(reply, message)
if _entity_type == 0:
return await utils.answer(message, self.strings["incorrect"])
elif _entity_type == 1:
outgoing = await bot.send_message("/addemoji")
else:
outgoing = await bot.send_message("/addsticker")
response = await bot.get_response()
await asyncio.sleep(2)
await outgoing.delete()
await response.delete()
if _entity_type == 1:
outgoing = await bot.send_message(self.config["emoji"])
elif _entity_type == 2:
outgoing = await bot.send_message(self.config["video_sticker"])
else:
outgoing = await bot.send_message(self.config["static_sticker"])
response = await bot.get_response()
await asyncio.sleep(2)
await response.delete()
await outgoing.delete()
if response.text == "Не выбран набор стикеров.":
return await utils.answer(message, f"Create {entity_type[_entity_type].lower()} pack with a public name {cfg_ref[_entity_type]}")
if _entity_type == 1:
emoji = reply.message
toSend = reply
else:
emoji = reply.media.document.attributes[1].alt
toSend = reply
outgoing = await bot.send_message(toSend)
response = await bot.get_response()
await asyncio.sleep(2)
await outgoing.delete()
await response.delete()
outgoing = await bot.send_message(emoji)
response = await bot.get_response()
await asyncio.sleep(2)
await outgoing.delete()
await response.delete()
await utils.answer(message, f"{entity_type[_entity_type]} added")