Exemplo n.º 1
0
def kang(bot: Bot, update: Update):
    msg = update.effective_message
    user = update.effective_user
    if msg.reply_to_message and msg.reply_to_message.sticker:
        file_id = msg.reply_to_message.sticker.file_id
        kang_file = bot.get_file(file_id)
        kang_file.download('kangsticker.png')
        hash = hashlib.sha1(bytearray(user.id)).hexdigest()
        packname = "a" + hash[:20] + "_by_"+bot.username
        if msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            bot.add_sticker_to_set(user_id=user.id, name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'), emojis=sticker_emoji)
            msg.reply_text("Sticker successfully added to [pack](t.me/addstickers/%s)" % packname,
                            parse_mode=ParseMode.MARKDOWN)
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('kangsticker.png', 'rb'), sticker_emoji, bot)
            print(e)
        os.remove("kangsticker.png")
    else:
        msg.reply_text("Please reply to a sticker for me to kang it.")
Exemplo n.º 2
0
def insert_sticker_in_pack(bot: Bot, msg: Message, user_id: int,
                           pack_name: str, emoji: str):
    sticker_id = msg.reply_to_message.sticker.file_id

    img_path = IMG_DIR / f'{IMG_PREFIX}{user_id}.jpg'
    try:
        sticker_file = bot.get_file(sticker_id)
        sticker_file.download(custom_path=str(img_path))
        # resize and save as png
        img_path = sticker_from_image(img_path)
        with open(img_path, 'rb') as png_sticker:
            bot.add_sticker_to_set(user_id=user_id,
                                   name=pack_name,
                                   png_sticker=png_sticker,
                                   emojis=emoji)
            sticker = bot.get_sticker_set(pack_name).stickers[-1]
            msg.reply_sticker(sticker)
    except Exception as exc:
        if isinstance(exc, telegram.error.BadRequest):
            exception_msg = exc.message.lower()
            if exception_msg in responses.TELEGRAM_ERROR_CODES:
                msg.reply_text(responses.TELEGRAM_ERROR_CODES[exception_msg])
                return True
        logger.error(
            "Exception inserting sticker in pack. User id %d Pack %s",
            user_id,
            pack_name,
        )
        logger.error(exc)
        return False
    return True
Exemplo n.º 3
0
def upload_sticker(bot: telegram.Bot, sticker_png: BinaryIO,
                   stickerset_template: str,
                   stickerset_title_template: str) -> str:
    sticker_file_id = bot.upload_sticker_file(owner_id, sticker_png).file_id
    offset = 0
    while True:
        offset += 1
        stickerset_name = stickerset_template.format(offset)
        try:
            bot.add_sticker_to_set(owner_id, stickerset_name, sticker_file_id,
                                   STICKER_EMOJIS)
            break
        except telegram.error.BadRequest as e:
            if e.message in [
                    'Stickerpack_stickers_too_much', 'Stickers_too_much'
            ]:
                continue  # Try to find next stickerset, maybe it has room for you :)
            elif e.message == 'Stickerset_invalid':
                # No stickerset, create it!
                stickerset_title = stickerset_title_template.format(offset)
                bot.create_new_sticker_set(owner_id, stickerset_name,
                                           stickerset_title, sticker_file_id,
                                           STICKER_EMOJIS)
                bot.send_message(
                    curators_chat_id,
                    f"Nuevo paquete de stickers: t.me/addstickers/{stickerset_name}"
                )
                break
            else:
                raise

    return sticker_file_id
Exemplo n.º 4
0
def kang(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    if msg.reply_to_message and msg.reply_to_message.sticker:
        file_id = msg.reply_to_message.sticker.file_id
        kang_file = bot.get_file(file_id)
        kang_file.download('kangsticker.png')
        hash = hashlib.sha1(bytearray(user.id)).hexdigest()
        packname = "a" + hash[:20] + "_by_" + bot.username
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            os.remove("kangsticker.png")
            msg.reply_text(
                "Sticker successfully added to [pack](t.me/addstickers/%s)" %
                packname,
                parse_mode=ParseMode.MARKDOWN)
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                msg.reply_text("Use /makepack to create a pack first.")
            elif e.message == "Sticker_png_dimensions":
                msg.reply_text("Invalid sticker dimensions.")
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Not a valid emoji.")
            print(e)
    else:
        msg.reply_text("Please reply to a sticker for me to kang it.")
Exemplo n.º 5
0
def add_text(bot: Bot, msg: Message, user_id: int, pack_name: str, emoji: str):
    forward = msg.reply_to_message.forward_from
    if forward is not None:
        username = forward.first_name
        other_user_id = forward.id
        msg_time = msg.reply_to_message.forward_date.strftime('%H:%M')
    else:
        username = msg.reply_to_message.from_user.first_name
        other_user_id = msg.reply_to_message.from_user.id
        msg_time = msg.reply_to_message.date.strftime('%H:%M')
    photos = bot.get_user_profile_photos(other_user_id, limit=1).photos
    avatar_path = ''
    try:
        photo = photos[0][0]
        avatar_path = IMG_DIR / f'{AVATAR_PREFIX}{other_user_id}.jpg'
        bot.get_file(photo.file_id).download(custom_path=avatar_path)
    except Exception:
        msg.reply_text(responses.ERROR_DOWNLOAD_PHOTO)
        avatar_path = ''

    text = msg.reply_to_message.text
    # save as png
    img_path = sticker_from_text(user_id, username, text, avatar_path,
                                 msg_time)
    try:
        with open(img_path, 'rb') as png_sticker:
            bot.add_sticker_to_set(user_id=user_id,
                                   name=pack_name,
                                   png_sticker=png_sticker,
                                   emojis=emoji)
            sticker = bot.get_sticker_set(pack_name).stickers[-1]
            msg.reply_sticker(sticker)
    except Exception as exc:
        if isinstance(exc, telegram.error.BadRequest):
            exception_msg = exc.message.lower()
            if exception_msg in responses.TELEGRAM_ERROR_CODES:
                msg.reply_text(responses.TELEGRAM_ERROR_CODES[exception_msg])
                return True
        logger.error(
            "Exception on add_text. User %s (id %d) Pack %s",
            username,
            user_id,
            pack_name,
        )
        logger.error(exc)
        return False
    finally:
        if os.path.exists(img_path):
            os.remove(img_path)
        if os.path.exists(avatar_path):
            os.remove(avatar_path)

    return True
Exemplo n.º 6
0
def add_document(bot: Bot, msg: Message, user_id: int, pack_name: str, emoji: str, replied: bool):
    if replied:
        doc = msg.reply_to_message.document
    else:
        doc = msg.document

    try:
        bot.add_sticker_to_set(
            user_id=user_id, name=pack_name, png_sticker=doc.file_id, emojis=emoji
        )
        sticker = bot.get_sticker_set(pack_name).stickers[-1]
        msg.reply_sticker(sticker)
    except Exception:
        msg.reply_text(responses.INVALID_DOC)
        return False
    return True
Exemplo n.º 7
0
def add_photo(bot: Bot, msg: Message, user_id: int, pack_name: str, emoji: str, replied: bool):
    if replied:
        photo = msg.reply_to_message.photo[-1]
    else:
        photo = msg.photo[-1]
    img_path = IMG_DIR / f'{IMG_PREFIX}{user_id}.jpg'
    try:
        bot.get_file(photo.file_id).download(custom_path=img_path)
        # resize and save as png
        img_path = sticker_from_image(img_path)
        with open(str(img_path), 'rb') as png_sticker:
            bot.add_sticker_to_set(
                user_id=user_id, name=pack_name, png_sticker=png_sticker, emojis=emoji
            )
            sticker = bot.get_sticker_set(pack_name).stickers[-1]
            msg.reply_sticker(sticker)
    except Exception as e:
        return False
    return True
Exemplo n.º 8
0
def add_document(bot: Bot, msg: Message, user_id: int, pack_name: str,
                 emoji: str, replied: bool):
    if replied:
        doc = msg.reply_to_message.document
    else:
        doc = msg.document

    try:
        bot.add_sticker_to_set(user_id=user_id,
                               name=pack_name,
                               png_sticker=doc.file_id,
                               emojis=emoji)
        sticker = bot.get_sticker_set(pack_name).stickers[-1]
        msg.reply_sticker(sticker)
    except telegram.error.BadRequest as exc:
        exception_msg = exc.message.lower()
        if exception_msg in responses.TELEGRAM_ERROR_CODES:
            msg.reply_text(responses.TELEGRAM_ERROR_CODES[exception_msg])
    except Exception:
        msg.reply_text(responses.INVALID_DOC)
        return False
    return True
Exemplo n.º 9
0
def insert_sticker_in_pack(bot: Bot, msg: Message, user_id: int, pack_name: str, emoji: str):
    sticker_id = msg.reply_to_message.sticker.file_id

    img_path = IMG_DIR / f'{IMG_PREFIX}{user_id}.jpg'
    try:
        sticker_file = bot.get_file(sticker_id)
        sticker_file.download(custom_path=str(img_path))
        # resize and save as png
        img_path = sticker_from_image(img_path)
        with open(img_path, 'rb') as png_sticker:
            bot.add_sticker_to_set(
                user_id=user_id, name=pack_name, png_sticker=png_sticker, emojis=emoji
            )
            sticker = bot.get_sticker_set(pack_name).stickers[-1]
            msg.reply_sticker(sticker)
    except Exception as exc:
        logger.error(
            "Exception inserting sticker in pack. User id %d Pack %s", user_id, pack_name,
        )

        logger.error(exc)
        return False
    return True
Exemplo n.º 10
0
def steal(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    packnum = 0
    packname = "a" + str(user.id) + "_by_" + bot.username
    packname_found = 0
    max_stickers = 120
    while packname_found == 0:
        try:
            stickerset = bot.get_sticker_set(packname)
            if len(stickerset.stickers) >= max_stickers:
                packnum += 1
                packname = "a" + str(packnum) + "_" + str(
                    user.id) + "_by_" + bot.username
            else:
                packname_found = 1
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                packname_found = 1
    stolensticker = "stolensticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        else:
            msg.reply_text("Sim, eu não posso roubar isso.")
        stolen_file = bot.get_file(file_id)
        stolen_file.download('stolensticker.png')
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(stolensticker, "PNG")
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('stolensticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                f"Sticker adicionado com sucesso a o [pack](t.me/addstickers/{packname})"
                + f"\nEmoji: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Eu so posso kangar imagens.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('stolensticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum)
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'stolensticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    f"Sticker adicionado com sucesso a o [pack](t.me/addstickers/{packname})"
                    + f"\nEmoji: {sticker_emoji}",
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Sticker adicionado com sucesso a o [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, stolensticker)
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(stolensticker, "PNG")
            msg.reply_photo(photo=open('stolensticker.png', 'rb'))
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('stolensticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                f"Sticker adicionado com sucesso a o [pack](t.me/addstickers/{packname})"
                + f"\nEmoji is: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Eu só posso roubar imagens, cara.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('stolensticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum)
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'stolensticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Sticker adicionado com sucesso a o [pack](t.me/addstickers/%s)"
                    % packname + "\n" + "Emoji:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Sticker adicionado com sucesso a o [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            print(e)
    else:
        packs = "Por favor, responda a um adesivo ou imagem para roubá-lo ao seu pacote!\nOh a propósito, aqui estão seus pacotes:\n"
        if packnum > 0:
            firstpackname = "a" + str(user.id) + "_by_" + bot.username
            for i in range(0, packnum + 1):
                if i == 0:
                    packs += f"[pack](t.me/addstickers/{firstpackname})\n"
                else:
                    packs += f"[pack{i}](t.me/addstickers/{packname})\n"
        else:
            packs += f"[pack](t.me/addstickers/{packname})"
        msg.reply_text(packs, parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("stolensticker.png"):
        os.remove("stolensticker.png")
Exemplo n.º 11
0
def steal(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    packnum = 0
    packname = "a" + str(user.id) + "_by_" + bot.username
    packname_found = 0
    max_stickers = 120
    while packname_found == 0:
        try:
            stickerset = bot.get_sticker_set(packname)
            if len(stickerset.stickers) >= max_stickers:
                packnum += 1
                packname = "a" + str(packnum) + "_" + str(
                    user.id) + "_by_" + bot.username
            else:
                packname_found = 1
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                packname_found = 1
    stolensticker = "stolensticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        else:
            msg.reply_text("Yea, I can't steal that.")
        stolen_file = bot.get_file(file_id)
        stolen_file.download('stolensticker.png')
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "😎"
        try:
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(stolensticker, "PNG")
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('stolensticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                f"Stiker telah ditambahkan ke [pack anda](t.me/addstickers/{packname})"
                + f"\nEmotnya adalah: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Saya hanya bisa menyimpan gambar, Boss.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('stolensticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum)
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'stolensticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    f"Stiker telah ditambahkan ke [pack anda](t.me/addstickers/{packname})"
                    + f"\nEmotnya adalah: {sticker_emoji}",
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Stiker sukses ditambahkan ke [pack anda](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emotnya adalah:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "😎"
            urllib.urlretrieve(png_sticker, stolensticker)
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(stolensticker, "PNG")
            msg.reply_photo(photo=open('stolensticker.png', 'rb'))
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('stolensticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                f"Stiker telah ditambahkan ke [pack anda](t.me/addstickers/{packname})"
                + f"\nEmotnya adalah: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Saya hanya bisa menyimpan gambar, Boss.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('stolensticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum)
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'stolensticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Stiker sukses ditambahkan ke [pack anda](t.me/addstickers/%s)"
                    % packname + "\n" + "Emotnya adalah:" + " " +
                    sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Stiker sukses ditambahkan ke [pack anda](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emotnya adalah:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            print(e)
    else:
        packs = "Reply stiker atau foto yang ingin ditambahkan ke pack anda!\nJika ingin melihat pack anda, silahkan klik:\n"
        if packnum > 0:
            firstpackname = "a" + str(user.id) + "_by_" + bot.username
            for i in range(0, packnum + 1):
                if i == 0:
                    packs += f"[disini](t.me/addstickers/{firstpackname})\n"
                else:
                    packs += f"[disini{i}](t.me/addstickers/{packname})\n"
        else:
            packs += f"[disini](t.me/addstickers/{packname})"
        msg.reply_text(packs, parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("stolensticker.png"):
        os.remove("stolensticker.png")
Exemplo n.º 12
0
def kang(bot: Bot, update: Update, args: List[str]):
    chat = update.effective_chat
    msg = update.effective_message
    user = update.effective_user
    packnum = 0
    packname = "c" + str(user.id) + "_by_" + bot.username
    packname_found = 0
    max_stickers = 120
    while packname_found == 0:
        try:
            stickerset = bot.get_sticker_set(packname)
            if len(stickerset.stickers) >= max_stickers:
                packnum += 1
                packname = "c" + str(packnum) + "_" + str(
                    user.id) + "_by_" + bot.username
            else:
                packname_found = 1
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                packname_found = 1
    kangsticker = "images/kangsticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        else:
            msg.reply_text(tld(chat.id, 'stickers_kang_error'))
        kang_file = bot.get_file(file_id)
        kang_file.download('images/kangsticker.png')
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(kangsticker, "PNG")
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('images/kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                packname, sticker_emoji),
                           parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text(tld(chat.id, 'stickers_kang_only_img'))
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('images/kangsticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum, chat)
            elif e.message == "Sticker_png_dimensions":
                im.save(kangsticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'images/kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                    packname, sticker_emoji),
                               parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text(tld(chat.id, 'stickers_kang_invalid_emoji'))
            elif e.message == "Stickers_too_much":
                msg.reply_text(tld(chat.id, 'stickers_kang_too_much'))
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                    packname, sticker_emoji),
                               parse_mode=ParseMode.MARKDOWN)
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, kangsticker)
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(kangsticker, "PNG")
            msg.reply_photo(photo=open('images/kangsticker.png', 'rb'))
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('images/kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                packname, sticker_emoji),
                           parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text(tld(chat.id, 'stickers_kang_only_img'))
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('images/kangsticker.png', 'rb'),
                                  sticker_emoji, bot, packname, packnum, chat)
            elif e.message == "Sticker_png_dimensions":
                im.save(kangsticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'images/kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                    packname, sticker_emoji),
                               parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text(tld(chat.id, 'stickers_kang_invalid_emoji'))
            elif e.message == "Stickers_too_much":
                msg.reply_text(tld(chat.id, 'stickers_kang_too_much'))
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(tld(chat.id, 'stickers_kang_success').format(
                    packname, sticker_emoji),
                               parse_mode=ParseMode.MARKDOWN)
            print(e)
    else:
        packs = tld(chat.id, 'stickers_kang_no_reply')
        if packnum > 0:
            firstpackname = "c" + str(user.id) + "_by_" + bot.username
            for i in range(0, packnum + 1):
                if i == 0:
                    packs += f"[pack](t.me/addstickers/{firstpackname})\n"
                else:
                    packs += f"[pack{i}](t.me/addstickers/{packname})\n"
        else:
            packs += f"[pack](t.me/addstickers/{packname})"
        msg.reply_text(packs, parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("images/kangsticker.png"):
        os.remove("images/kangsticker.png")
Exemplo n.º 13
0
def kang(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    if msg.reply_to_message and msg.reply_to_message.sticker:
        file_id = msg.reply_to_message.sticker.file_id
        kang_file = bot.get_file(file_id)
        kang_file.download('kangsticker.png')
        hash = hashlib.sha1(bytearray(user.id)).hexdigest()
        packname = "a" + hash[:20] + "_by_" + bot.username
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                "Sticker successfully added to [pack](t.me/addstickers/%s)" %
                packname,
                parse_mode=ParseMode.MARKDOWN)
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('kangsticker.png', 'rb'),
                                  sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                msg.reply_text("Invalid sticker dimensions.")
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached. Press F to pay respecc.")
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, kangsticker)
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(kangsticker, "PNG")
            msg.reply_photo(photo=open('kangsticker.png', 'rb'))
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                "Sticker successfully added to [pack](t.me/addstickers/%s)" %
                packname + "\n"
                "Emoji is:" + " " + sticker_emoji,
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("I can only kang images m8.")
            print(e)
        os.remove("kangsticker.png")
    else:
        msg.reply_text("Please reply to a sticker for me to kang it.")
Exemplo n.º 14
0
def kang(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    _hash = hashlib.sha1(bytearray(user.id)).hexdigest()
    packname = "a" + _hash[:20] + "_by_" + bot.username
    kangsticker = "kangsticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        kang_file = bot.get_file(file_id)
        kang_file.download('kangsticker.png')
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(kangsticker, "PNG")
            with open('kangsticker.png', 'rb') as sticker:
                bot.add_sticker_to_set(user_id=user.id, name=packname,
                                       png_sticker=sticker, emojis=sticker_emoji)
            msg.reply_text(f"Etiket başarıyla eklendi [pack](t.me/addstickers/{packname})\n"
                           f"Emoji is:" + " " + sticker_emoji,
                           parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Ben sadece kang görüntüleri m8.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                with open('kangsticker.png', 'rb') as sticker:
                    makepack_internal(msg, user, sticker, sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                im.save(kangsticker, "PNG")
                with open('kangsticker.png', 'rb') as sticker:
                    bot.add_sticker_to_set(user_id=user.id, name=packname,
                                           png_sticker=sticker, emojis=sticker_emoji)
                msg.reply_text(f"Etiket başarıyla eklendi [pack](t.me/addstickers/{packname})\n"
                               f"Emoji is: {sticker_emoji}",
                               parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Geçersiz etiket emojileri":
                msg.reply_text("Geçersiz emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Maksimum paket boyutuna ulaşıldı. İlgili ödemeyi yapmak için F tuşuna basın.")
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, kangsticker)
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(kangsticker, "PNG")
            with open('kangsticker.png', 'rb') as sticker:
                msg.reply_photo(photo=sticker)
            with open('kangsticker.png', 'rb') as sticker:
                bot.add_sticker_to_set(user_id=user.id, name=packname,
                                       png_sticker=sticker, emojis=sticker_emoji)
            msg.reply_text(
                f"Etiket başarıyla eklendi [pack](t.me/addstickers/{packname})\n"
                f"Emoji is: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("Ben sadece kang görüntüleri m8.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                with open('kangsticker.png', 'rb') as sticker:
                    makepack_internal(msg, user, sticker, sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                msg.reply_text("Görüntü doğru boyutlara göre yeniden boyutlandırılamadı.")
            elif e.message == "Geçersiz etiket emojileri":
                msg.reply_text("Geçersiz emoji(s).")
            print(e)
    else:
        msg.reply_text(
            f"Lütfen bir çıkartmaya veya kang için resme cevap verin!\n"
            f"Oh, bu arada. Paketiniz bulunabilir [here](t.me/addstickers/{packname})",
            parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("kangsticker.png"):
        im.close()
        os.remove("kangsticker.png")
Exemplo n.º 15
0
def add_sticker(bot: Bot, update: Update):
    message = update.effective_message
    user = update.effective_user
    chat = update.effective_chat
    try:
        args = message.text.split(' ')[1]
    except:
        args = 'personal'
    if args.lower() == 'group':
        set_name = 'pack_' + str(chat.id)[1:] + '_by_' + bot.username
    else:
        set_name = 'pack_' + str(user.id)[1:] + '_by_' + bot.username
    if message.reply_to_message.sticker:
        file_id = message.reply_to_message.sticker.file_id
        sticker_file = bot.get_file(file_id)
        sticker_file.download('sticker_input.png')
    elif message.reply_to_message.photo:
        file_id = message.reply_to_message.photo[-1].file_id
        sticker_file = bot.get_file(file_id)
        sticker_file.download('sticker_input.png')
        sticker = Image.open('sticker_input.png')
        if sticker.width < 512 and sticker.height < 512:
            if sticker.width < sticker.height:
                asp_ratio = sticker.width / sticker.height
                sticker = sticker.resize((ceil(asp_ratio * 512), 512))
            else:
                asp_ratio = sticker.height / sticker.width
                sticker = sticker.resize((512, ceil(asp_ratio * 512)))
        else:
            sticker.thumbnail((512, 512))
        sticker.save('sticker_input.png')
    elif message.reply_to_message.text:
        target_text = message.reply_to_message.text
        target_from = message.reply_to_message.from_user
        target_name = target_from.first_name
        target_file = str(message.reply_to_message.message_id) + '.png'
        target_ppic = target_from.get_profile_photos().photos[0][0].get_file()
        target_ppic.download(target_file)
        parts = []
        padding = 100
        linelen = 0
        offset = 20
        nrows = 1
        ncols = 1
        line = ''
        for word in target_text.split(' '):
            linelen += len(word)
            if linelen < 35:
                line = line + word + ' '
                if linelen > ncols:
                    ncols = linelen
            else:
                parts.append(line.strip())
                linelen = 0
                line = word + ' '
        parts.append(line)
        nrows = len(parts)
        if len(target_name) > ncols:
            ncols = len(target_name)

        IMG_WIDTH = ncols * 11 + padding + 30
        IMG_HEIGHT = (nrows + 1) * 20 + padding - 40
        BUBBLE_WIDTH = ncols * 11 + padding + 20
        BUBBLE_HEIGHT = (nrows + 1) * 20 + padding - 50
        corner = Image.new('RGB', (10, 10), (0, 0, 0))
        drawcorner = ImageDraw.Draw(corner)
        drawcorner.pieslice((0, 0, 20, 20), 180, 270, fill='#212121')
        bubble = Image.new('RGB', (IMG_WIDTH, IMG_HEIGHT), (0, 0, 0))
        fnt_name = ImageFont.truetype('Roboto-Medium.ttf', 18)
        fnt_msg = ImageFont.truetype('Roboto-Regular.ttf', 18)
        draw = ImageDraw.Draw(bubble)
        draw.rectangle(((60, 10), (BUBBLE_WIDTH, BUBBLE_HEIGHT)),
                       fill='#212121')
        bubble.paste(corner, (60, 10))
        bubble.paste(corner.rotate(90), (60, BUBBLE_HEIGHT - 9))
        bubble.paste(corner.rotate(180), (BUBBLE_WIDTH - 9, BUBBLE_HEIGHT - 9))
        bubble.paste(corner.rotate(270), (BUBBLE_WIDTH - 9, 10))
        draw.text((75, 22), target_name, font=fnt_name)
        for idx, inp in enumerate(parts):
            draw.text((75, 48 + (offset * idx)), inp, font=fnt_msg)
        ppic = Image.open(target_file)
        ppic.resize((40, 40))
        bigsize = (ppic.size[0] * 3, ppic.size[1] * 3)
        mask = Image.new('L', bigsize, 0)
        drawmask = ImageDraw.Draw(mask)
        drawmask.ellipse((0, 0) + bigsize, fill=255)
        mask = mask.resize(ppic.size, Image.ANTIALIAS)
        ppic.putalpha(mask)
        ppic_circ = ImageOps.fit(ppic, mask.size, centering=(0.5, 0.5))
        ppic_circ.putalpha(mask)
        ppic_circ.thumbnail((36, 36))
        bubble.paste(ppic_circ, (10, IMG_HEIGHT - 50))
        if bubble.width < 512 and bubble.height < 512:
            if bubble.width < bubble.height:
                asp_ratio = bubble.width / bubble.height
                bubble = bubble.resize((ceil(asp_ratio * 512), 512))
            else:
                asp_ratio = bubble.height / bubble.width
                bubble = bubble.resize((512, ceil(asp_ratio * 512)))
        else:
            bubble.thumbnail((512, 512))
        bubble.save(str(message.message_id) + '.webp')
        bot.send_document(message.chat.id,
                          document=open(
                              str(message.message_id) + '.webp', 'rb'),
                          reply_to_message_id=message.message_id)
        os.remove(target_file)
        os.remove(str(message.message_id) + '.webp')
        return
    else:
        message.reply_text('bruh')
        return
    sticker_target = 'sticker_input.png'
    sticker_emoji = '👌'

    try:
        set_target = bot.get_sticker_set(set_name)
        sticker_added = bot.add_sticker_to_set(user_id=user.id,
                                               name=set_name,
                                               png_sticker=open(
                                                   sticker_target, 'rb'),
                                               emojis=sticker_emoji)
        if sticker_added:
            bot.send_message(
                message.chat.id,
                'Added to [%s](t.me/addstickers/%s).' %
                (set_target.title, set_name),
                parse_mode=ParseMode.MARKDOWN,
                reply_to_message_id=message.reply_to_message.message_id)
    except RetryAfter:
        bot.send_message(message.chat.id,
                         'Slow down! Try again in 10 seconds.')
    except:
        if args.lower() == 'group':
            set_title = str(chat.title) + ' Stickers'
        else:
            set_title = str(user.username) + '\'s Stickers'
        try:
            set_created = bot.create_new_sticker_set(user_id=user.id,
                                                     name=set_name,
                                                     title=set_title,
                                                     png_sticker=open(
                                                         sticker_target, 'rb'),
                                                     emojis=sticker_emoji)
        except:
            set_created = bot.create_new_sticker_set(
                user_id=UNIV_STICKER_OWNER_ID,
                name=set_name,
                title=set_title,
                png_sticker=open(sticker_target, 'rb'),
                emojis=sticker_emoji)
        if set_created:
            bot.send_message(
                message.chat.id,
                'Added to new pack: [%s](t.me/addstickers/%s).' %
                (set_title, set_name),
                parse_mode=ParseMode.MARKDOWN,
                reply_to_message_id=message.reply_to_message.message_id)

    os.remove('sticker_input.png')
Exemplo n.º 16
0
def kang(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    packname = "a" + str(user.id) + "_by_" + bot.username
    kangsticker = "kangsticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        else:
            msg.reply_text("Yea, I can't kang that.")
        kang_file = bot.get_file(file_id)
        kang_file.download('kangsticker.png')
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(kangsticker, "PNG")
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                "Sticker successfully added to [pack](t.me/addstickers/%s)" %
                packname + "\n"
                "Emoji is:" + " " + sticker_emoji,
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("I can only kang images m8.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('kangsticker.png', 'rb'),
                                  sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                im.save(kangsticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached. Press F to pay respecc.")
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, kangsticker)
            im = Image.open(kangsticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(kangsticker, "PNG")
            msg.reply_photo(photo=open('kangsticker.png', 'rb'))
            bot.add_sticker_to_set(user_id=user.id,
                                   name=packname,
                                   png_sticker=open('kangsticker.png', 'rb'),
                                   emojis=sticker_emoji)
            msg.reply_text(
                "Sticker successfully added to [pack](t.me/addstickers/%s)" %
                packname + "\n"
                "Emoji is:" + " " + sticker_emoji,
                parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("I can only kang images m8.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('kangsticker.png', 'rb'),
                                  sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                msg.reply_text(
                    "Could not resize image to the correct dimensions.")
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            print(e)
    else:
        msg.reply_text(
            "Please reply to a sticker, or image to kang it!" + "\n"
            "Oh, by the way. Your pack can be found [here](t.me/addstickers/%s)"
            % packname,
            parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("kangsticker.png"):
        os.remove("kangsticker.png")
Exemplo n.º 17
0
def steal(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    packnum = 0
    packname = "a" + str(user.id) + "_by_" + bot.username
    packname_found = 0
    max_stickers = 120
    while packname_found == 0:
        try:
            stickerset = bot.get_sticker_set(packname)
            if len(stickerset.stickers) >= max_stickers:
                packnum += 1
                packname = ("a" + str(packnum) + "_" + str(user.id) + "_by_" +
                            bot.username)
            else:
                packname_found = 1
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                packname_found = 1
    stolensticker = "stolensticker.png"
    if msg.reply_to_message:
        if msg.reply_to_message.sticker:
            file_id = msg.reply_to_message.sticker.file_id
        elif msg.reply_to_message.photo:
            file_id = msg.reply_to_message.photo[-1].file_id
        elif msg.reply_to_message.document:
            file_id = msg.reply_to_message.document.file_id
        else:
            msg.reply_text("Yea, I can't steal that.")
        stolen_file = bot.get_file(file_id)
        stolen_file.download("stolensticker.png")
        if args:
            sticker_emoji = str(args[0])
        elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
            sticker_emoji = msg.reply_to_message.sticker.emoji
        else:
            sticker_emoji = "🤔"
        try:
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            if not msg.reply_to_message.sticker:
                im.save(stolensticker, "PNG")
            bot.add_sticker_to_set(
                user_id=user.id,
                name=packname,
                png_sticker=open("stolensticker.png", "rb"),
                emojis=sticker_emoji,
            )
            msg.reply_text(
                f"Sticker successfully added to [pack](t.me/addstickers/{packname})"
                + f"\nEmoji is: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN,
            )
        except OSError as e:
            msg.reply_text("I can only steal images, dude.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(
                    msg,
                    user,
                    open("stolensticker.png", "rb"),
                    sticker_emoji,
                    bot,
                    packname,
                    packnum,
                )
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(
                    user_id=user.id,
                    name=packname,
                    png_sticker=open("stolensticker.png", "rb"),
                    emojis=sticker_emoji,
                )
                msg.reply_text(
                    f"Sticker successfully added to [pack](t.me/addstickers/{packname})"
                    + f"\nEmoji is: {sticker_emoji}",
                    parse_mode=ParseMode.MARKDOWN,
                )
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN,
                )
            print(e)
    elif args:
        try:
            try:
                urlemoji = msg.text.split(" ")
                png_sticker = urlemoji[1]
                sticker_emoji = urlemoji[2]
            except IndexError:
                sticker_emoji = "🤔"
            urllib.urlretrieve(png_sticker, stolensticker)
            im = Image.open(stolensticker)
            maxsize = (512, 512)
            if (im.width and im.height) < 512:
                size1 = im.width
                size2 = im.height
                if im.width > im.height:
                    scale = 512 / size1
                    size1new = 512
                    size2new = size2 * scale
                else:
                    scale = 512 / size2
                    size1new = size1 * scale
                    size2new = 512
                size1new = math.floor(size1new)
                size2new = math.floor(size2new)
                sizenew = (size1new, size2new)
                im = im.resize(sizenew)
            else:
                im.thumbnail(maxsize)
            im.save(stolensticker, "PNG")
            msg.reply_photo(photo=open("stolensticker.png", "rb"))
            bot.add_sticker_to_set(
                user_id=user.id,
                name=packname,
                png_sticker=open("stolensticker.png", "rb"),
                emojis=sticker_emoji,
            )
            msg.reply_text(
                f"Sticker successfully added to [pack](t.me/addstickers/{packname})"
                + f"\nEmoji is: {sticker_emoji}",
                parse_mode=ParseMode.MARKDOWN,
            )
        except OSError as e:
            msg.reply_text("I can only steal images, dude.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(
                    msg,
                    user,
                    open("stolensticker.png", "rb"),
                    sticker_emoji,
                    bot,
                    packname,
                    packnum,
                )
            elif e.message == "Sticker_png_dimensions":
                im.save(stolensticker, "PNG")
                bot.add_sticker_to_set(
                    user_id=user.id,
                    name=packname,
                    png_sticker=open("stolensticker.png", "rb"),
                    emojis=sticker_emoji,
                )
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n" + "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN,
                )
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached.")
            elif e.message == "Internal Server Error: sticker set not found (500)":
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN,
                )
            print(e)
    else:
        packs = "Please reply to a sticker or image to steal it to your pack!\nOh by the way, here are your packs:\n"
        if packnum > 0:
            firstpackname = "a" + str(user.id) + "_by_" + bot.username
            for i in range(0, packnum + 1):
                if i == 0:
                    packs += f"[pack](t.me/addstickers/{firstpackname})\n"
                else:
                    packs += f"[pack{i}](t.me/addstickers/{packname})\n"
        else:
            packs += f"[pack](t.me/addstickers/{packname})"
        msg.reply_text(packs, parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("stolensticker.png"):
        os.remove("stolensticker.png")
Exemplo n.º 18
0
def add_sticker(bot: Bot, update: Update):
    message = update.effective_message
    user = update.effective_user
    chat = update.effective_chat
    set_name = 'pack_' + str(chat.id)[1:] + '_by_' + bot.username
    if message.reply_to_message.sticker:
        file_id = message.reply_to_message.sticker.file_id
        sticker_file = bot.get_file(file_id)
        sticker_file.download('sticker_input.png')
    elif message.reply_to_message.photo:
        file_id = message.reply_to_message.photo[-1].file_id
        sticker_file = bot.get_file(file_id)
        sticker_file.download('sticker_input.png')
        sticker = Image.open('sticker_input.png')
        print(sticker.width, sticker.height)
        if sticker.width < 512 and sticker.height < 512:
            print('what the f**k')
            if sticker.width < sticker.height:
                print('what the f**k 2')
                asp_ratio = sticker.width / sticker.height
                sticker = sticker.resize((ceil(asp_ratio * 512), 512))
            else:
                print('what the f**k 3')
                asp_ratio = sticker.height / sticker.width
                sticker = sticker.resize((512, ceil(asp_ratio * 512)))
        else:
            sticker.thumbnail((512, 512))
        sticker.save('sticker_input.png')
        print(sticker.width, sticker.height)
    else:
        message.reply_text('bruh')
        return
    sticker_target = 'sticker_input.png'
    sticker_emoji = '👌'

    try:
        set_target = bot.get_sticker_set(set_name)
        sticker_added = bot.add_sticker_to_set(user.id,
                                               set_name,
                                               png_sticker=open(
                                                   sticker_target, 'rb'),
                                               emojis=sticker_emoji)
        if sticker_added:
            bot.send_message(
                message.chat.id,
                'Added to [%s](t.me/addstickers/%s).' %
                (set_target.title, set_name),
                parse_mode=ParseMode.MARKDOWN,
                reply_to_message_id=message.reply_to_message.message_id)
    except:
        set_title = str(chat.title) + ' Stickers'
        set_created = bot.create_new_sticker_set(user.id,
                                                 set_name,
                                                 set_title,
                                                 png_sticker=open(
                                                     sticker_target, 'rb'),
                                                 emojis=sticker_emoji)
        if set_created:
            bot.send_message(
                message.chat.id,
                'Added to new pack: [%s](t.me/addstickers/%s).' %
                (set_title, set_name),
                parse_mode=ParseMode.MARKDOWN,
                reply_to_message_id=message.reply_to_message.message_id)

    os.remove('sticker_input.png')
Exemplo n.º 19
0
def kang(bot: Bot, update: Update, args: List[str]):
    if os.path.isfile("kangsticker.png"):
        os.remove("kangsticker.png")

    msg = update.effective_message
    user = update.effective_user
    packname = f"c{user.id}_by_{bot.username}"
    kangsticker = "kangsticker.png"

    reply = msg.reply_to_message
    if reply:
        if reply.sticker:
            file_id = reply.sticker.file_id
        elif reply.photo:
            file_id = reply.photo[-1].file_id
        elif reply.document:
            file_id = reply.document.file_id
        else:
            msg.reply_text("Reply to an image or sticker to kang it.")
            return
        kang_file = bot.get_file(file_id)
        kang_file.download(kangsticker)
        if args:
            sticker_emoji = str(args[0])
        elif reply.sticker and reply.sticker.emoji:
            sticker_emoji = reply.sticker.emoji
        else:
            sticker_emoji = "🤔"
    elif args and not reply:
        urlemoji = msg.text.split(" ")
        if len(urlemoji) == 3:
            png_sticker = urlemoji[1]
            sticker_emoji = urlemoji[2]
        elif len(urlemoji) == 2:
            png_sticker = urlemoji[1]
            sticker_emoji = "🤔"
        else:
            msg.reply_text("/kang <link> <emoji(s) [Optional]>")
            return
        try:
            urllib.urlretrieve(png_sticker, kangsticker)
        except HTTPError as HE:
            if HE.reason == 'Not Found':
                msg.reply_text("Image not found.")
                return
            elif HE.reason == 'Forbidden':
                msg.reply_text(
                    "Couldn't access the provided link, The website might have blocked accessing to the website by bot or the website does not existed."
                )
                return
        except URLError as UE:
            msg.reply_text(f"{UE.reason}")
            return
        except ValueError as VE:
            msg.reply_text(
                f"{VE}\nPlease try again using http or https protocol.")
            return
    else:
        msg.reply_text(
            "Please reply to a sticker, or an image to kang it!\nDo you know that you can kang image from website too? `/kang [picturelink] <emoji(s)>`.",
            parse_mode=ParseMode.MARKDOWN)
        return

    try:
        im = imresize(kangsticker)
        im.save(kangsticker, "PNG")
        bot.add_sticker_to_set(user_id=user.id,
                               name=packname,
                               png_sticker=open('kangsticker.png', 'rb'),
                               emojis=sticker_emoji)
        msg.reply_text("I've added this sticker to your pack." + "\n"
                       "Emoji(s):" + " " + sticker_emoji,
                       parse_mode=ParseMode.MARKDOWN,
                       reply_markup=InlineKeyboardMarkup([[
                           InlineKeyboardButton(
                               text="I've added this sticker to your pack",
                               url=f"t.me/addstickers/{packname}")
                       ]]))
    except OSError as e:
        msg.reply_text("I can only kang images sir.")
        print(e)
        return
    except TelegramError as e:
        if e.message == "Stickerset_invalid":
            makepack_internal(msg, user, open('kangsticker.png', 'rb'),
                              sticker_emoji, bot)
        elif e.message == "Invalid sticker emojis":
            msg.reply_text("Invalid emoji(s).")
        elif e.message == "Stickers_too_much":
            msg.reply_text("Max packsize reached. Press F to pay respect.")
        print(e)
Exemplo n.º 20
0
def kang(bot: Bot, update: Update, args: List[str]):
    msg = update.effective_message
    user = update.effective_user
    packnum = "1"
    packname = "a" + packnum + "_" + str(user.id) + "_by_" + bot.username
    kangsticker = "kangsticker.png"
    if msg.reply_to_message or args:
        try:
            if msg.reply_to_message:
                if msg.reply_to_message.sticker:
                    file_id = msg.reply_to_message.sticker.file_id
                elif msg.reply_to_message.photo:
                    file_id = msg.reply_to_message.photo[-1].file_id
                elif msg.reply_to_message.document:
                    file_id = msg.reply_to_message.document.file_id
                kang_file = bot.get_file(file_id)
                kang_file.download('kangsticker.png')
                if args:
                    sticker_emoji = str(args[0])
                elif msg.reply_to_message.sticker and msg.reply_to_message.sticker.emoji:
                    sticker_emoji = msg.reply_to_message.sticker.emoji
                else:
                    sticker_emoji = "🤔"
                resize(kangsticker)
                if not msg.reply_to_message.sticker:
                    im.save(kangsticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            elif args:
                try:
                    urlemoji = msg.text.split(" ")
                    png_sticker = urlemoji[1]
                    sticker_emoji = urlemoji[2]
                except IndexError:
                    sticker_emoji = "🤔"
                urllib.urlretrieve(png_sticker, kangsticker)
                resize(kangsticker)
                im.save(kangsticker, "PNG")
                msg.reply_photo(photo=open('kangsticker.png', 'rb'))
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
        except OSError as e:
            msg.reply_text("I can only kang images m8.")
            print(e)
            return
        except TelegramError as e:
            if e.message == "Stickerset_invalid":
                makepack_internal(msg, user, open('kangsticker.png', 'rb'),
                                  sticker_emoji, bot)
            elif e.message == "Sticker_png_dimensions":
                im.save(kangsticker, "PNG")
                bot.add_sticker_to_set(user_id=user.id,
                                       name=packname,
                                       png_sticker=open(
                                           'kangsticker.png', 'rb'),
                                       emojis=sticker_emoji)
                msg.reply_text(
                    "Sticker successfully added to [pack](t.me/addstickers/%s)"
                    % packname + "\n"
                    "Emoji is:" + " " + sticker_emoji,
                    parse_mode=ParseMode.MARKDOWN)
            elif e.message == "Invalid sticker emojis":
                msg.reply_text("Invalid emoji(s).")
            elif e.message == "Stickers_too_much":
                msg.reply_text("Max packsize reached. Press F to pay respecc.")
    else:
        msg.reply_text(
            "Please reply to a sticker, or image to kang it!" + "\n"
            "Oh, by the way. Your pack can be found [here](t.me/addstickers/%s)"
            % packname,
            parse_mode=ParseMode.MARKDOWN)
    if os.path.isfile("kangsticker.png"):
        os.remove("kangsticker.png")