Exemple #1
0
def getsticker(message):
    args = extract_args(message)
    reply = message.reply_to_message
    if not reply or not reply.sticker:
        edit(message, f'`{get_translation("replySticker")}`')
        return

    video = False
    photo = False

    if reply.sticker and reply.sticker.is_animated or reply.sticker.is_video:
        video = download_media_wc(reply)
    else:
        photo = download_media_wc(reply, f'{get_download_dir()}/sticker.png')
        image = Image.open(photo)
        photo = f'{get_download_dir()}/sticker.png'
        image.save(photo)

    reply_doc(
        reply,
        video or photo,
        caption=f'**Sticker ID:** `{reply.sticker.file_id}'
        f'`\n**Emoji**: `{reply.sticker.emoji or get_translation("notSet")}`'
        if args == '-v' else '',
        delete_after_send=True,
    )
    message.delete()
Exemple #2
0
def rbg(message):
    if not RBG_APIKEY:
        return edit(
            message,
            get_translation('rbgApiMissing', ['**', 'Remove.BG', '`']),
            preview=False,
        )
    reply = message.reply_to_message

    if reply and (
        reply.photo or (reply.document and 'image' in reply.document.mime_type)
    ):
        edit(message, f'`{get_translation("processing")}`')
    else:
        edit(message, f'`{get_translation("rbgUsage")}`')
        return

    IMG_PATH = f'{DOWNLOAD_DIRECTORY}/image.png'

    if path.exists(IMG_PATH):
        remove(IMG_PATH)
    download_media_wc(reply, IMG_PATH)
    edit(message, f'`{get_translation("rbgProcessing")}`')
    try:
        remove_bg = RemoveBg(RBG_APIKEY, f'{get_translation("rbgLog")}')
        remove_bg.remove_background_from_img_file(IMG_PATH)
        rbg_img = IMG_PATH + '_no_bg.png'
        reply_doc(reply, rbg_img, caption=get_translation('rbgResult'))
        message.delete()
    except Exception as e:
        return edit(message, get_translation('banError', ['`', '**', e]))
def earrape(message):
    args = extract_args(message).split(' ', 1)
    reply = message.reply_to_message

    util = args[0].lower()
    if util == 'mp4':
        if not (reply.video or reply.video_note or
                (reply.document and 'video' in reply.document.mime_type)):
            edit(message, f'`{get_translation("wrongMedia")}`')
        else:
            edit(message, f'`{get_translation("applyEarrape")}`')
            media = download_media_wc(reply)
            process = Popen([
                'ffmpeg',
                '-i',
                f'{media}',
                '-af',
                'acrusher=.1:1:64:0:log',
                f'{media}.mp4',
            ])
            process.communicate()
            edit(message, f'`{get_translation("uploadMedia")}`')
            reply_video(
                reply if reply else message,
                f'{media}.mp4',
                delete_file=True,
            )
            remove(media)
            message.delete()
    elif util == 'mp3':
        if not (reply.video or reply.video_note or
                (reply.audio or reply.voice or
                 (reply.document and 'video' in reply.document.mime_type))):
            edit(message, f'`{get_translation("wrongMedia")}`')
        else:
            edit(message, f'`{get_translation("applyEarrape")}`')
            media = download_media_wc(reply)
            process = Popen([
                'ffmpeg',
                '-i',
                f'{media}',
                '-af',
                'acrusher=.1:1:64:0:log',
                f'{media}.mp3',
            ])
            process.communicate()
            edit(message, f'`{get_translation("uploadMedia")}`')
            reply_voice(
                reply if reply else message,
                f'{media}.mp3',
                delete_file=True,
            )
            remove(media)
            message.delete()
    else:
        edit(message, f'`{get_translation("wrongCommand")}`')
        return
def set_group_photo(message):
    reply = message.reply_to_message
    photo = None
    if (reply and reply.media and
        (reply.photo or (reply.sticker and not reply.sticker.is_animated) or
         (reply.document and 'image' in reply.document.mime_type))):
        photo = download_media_wc(reply, 'group_photo.jpg')
    else:
        edit(message, f'{get_translation("mediaInvalid")}`')
        return

    if photo:
        image = Image.open(photo)
        width, height = image.size
        maxSize = (640, 640)
        ratio = min(maxSize[0] / width, maxSize[1] / height)
        image = image.resize((int(width * ratio), int(height * ratio)))
        new_photo = f'{get_download_dir()}/group_photo_new.png'
        image.save(new_photo)
        try:
            chat = message.chat
            chat.set_photo(photo=new_photo)
            remove(photo)
            remove(new_photo)
            edit(message, f'`{get_translation("groupPicChanged")}`')
        except PhotoCropSizeSmall:
            edit(message, f'`{get_translation("ppSmall")}`')
        except ImageProcessFailed:
            edit(message, f'`{get_translation("ppError")}`')
        except BaseException as e:
            edit(message, get_translation('banError', ['`', '**', e]))
            return
    else:
        edit(message, f'`{get_translation("ppError")}`')
def autopic(client, message):
    args = extract_args(message)
    autopic = KEY_AUTOPP in TEMP_SETTINGS
    if args == 'disable':
        if autopic:
            del TEMP_SETTINGS[KEY_AUTOPP]
            edit(message, f'`{get_translation("autoppDisabled")}`')
            return
        else:
            edit(message, f'`{get_translation("autoppDisabledAlready")}`')
            return
    elif autopic:
        edit(message, f'`{get_translation("autoppEnabledAlready")}`')
        return

    TEMP_SETTINGS[KEY_AUTOPP] = True

    edit(message, f'`{get_translation("autoppProcess")}`')

    FONT_FILE = 'sedenecem/fonts/GoogleSans.ttf'

    downloaded_file_name = 'oldpp.png'
    photo = 'newpp.png'

    if path.exists(downloaded_file_name):
        LOGS.info(get_translation('autoppLog'))
    else:
        if AUTO_PP and len(AUTO_PP) > 0:
            with open(downloaded_file_name, 'wb') as load:
                load.write(get(AUTO_PP).content)
        else:
            try:
                profile_photo = client.get_profile_photos('me', limit=1)
                downloaded_file_name = download_media_wc(
                    profile_photo[0], downloaded_file_name)
            except BaseException:
                edit(message, f'`{get_translation("autoppConfig")}`')
                return

    edit(message, f'`{get_translation("autoppResult")}`')

    while KEY_AUTOPP in TEMP_SETTINGS:
        try:
            current_time = datetime.now().strftime('%H:%M')
            img = Image.open(downloaded_file_name)
            drawn_text = ImageDraw.Draw(img)
            fnt = ImageFont.truetype(FONT_FILE, 70)
            size = drawn_text.multiline_textsize(current_time, font=fnt)
            drawn_text.text(
                ((img.width - size[0]) / 2, (img.height - size[1])),
                current_time,
                font=fnt,
                fill=(255, 255, 255),
            )
            img.save(photo)
            client.set_profile_photo(photo=photo)
            remove(photo)
            sleep(60)
        except BaseException:
            return
def barcode(message):
    input_str = extract_args(message)
    usage = get_translation('barcodeUsage', ['**', '`'])
    reply = message.reply_to_message
    if len(input_str) < 1 and not reply:
        edit(message, usage)
        return
    edit(message, f'`{get_translation("processing")}`')
    if reply:
        if reply.media:
            downloaded_file_name = download_media_wc(reply)
            media_list = None
            with open(downloaded_file_name, 'rb') as file:
                media_list = file.readlines()
            qrmsg = ''
            for media in media_list:
                qrmsg += media.decode('UTF-8') + '\r\n'
            remove(downloaded_file_name)
        else:
            qrmsg = reply
    else:
        qrmsg = input_str

    bar_code_type = 'code128'
    try:
        bar_code_mode_f = get(bar_code_type, qrmsg, writer=ImageWriter())
        filename = bar_code_mode_f.save(bar_code_type)
        reply_doc(message, filename, delete_after_send=True)
    except Exception as e:
        edit(message, str(e))
        return
    message.delete()
Exemple #7
0
def ocr(message):
    if not OCR_APIKEY:
        return edit(
            message, get_translation(
                'ocrApiMissing', [
                    '**', 'OCR Space', '`']), preview=False)

    match = extract_args(message)
    reply = message.reply_to_message

    if len(match) < 1:
        return edit(message, f'`{get_translation("wrongCommand")}`')

    if not reply.media:
        return edit(message, f'`{get_translation("wrongCommand")}`')

    edit(message, f'`{get_translation("ocrReading")}`')
    lang_code = extract_args(message)
    downloaded_file_name = download_media_wc(reply, sticker_orig=True)
    test_file = ocr_file(downloaded_file_name, lang_code)

    try:
        ParsedText = test_file['ParsedResults'][0]['ParsedText']
    except BaseException:
        edit(message, f'`{get_translation("ocrError")}`')
    else:
        edit(message, get_translation('ocrResult', ['`', ParsedText]))
    remove(downloaded_file_name)
def nightcore(message):
    # Copyright (c) @kisekinopureya | 2021
    reply = message.reply_to_message

    if not (reply and
            (reply.audio or reply.voice or
             (reply.document and 'audio' in reply.document.mime_type))):
        edit(message, f'`{get_translation("wrongMedia")}`')
    else:
        edit(message, f'`{get_translation("applyNightcore")}`')
        media = download_media_wc(reply)

        filename = f'{media}.mp3'
        if path.exists(filename):
            remove(filename)

        process = Popen([
            'ffmpeg',
            '-i',
            media,
            '-af',
            'asetrate=44100*1.16,aresample=44100,atempo=1',
            filename,
        ])
        process.communicate()
        edit(message, f'`{get_translation("uploadMedia")}`')
        reply_audio(reply or message, f'{media}.mp3', delete_file=True)
        remove(media)
        message.delete()
Exemple #9
0
def drive_upload(message):

    if get(message.from_user.id) is None:
        return edit(message, f'`{get_translation("gauthFirstRun")}`')

    drive = Gdrive(message)
    reply = message.reply_to_message
    if reply and reply.document:
        file_name = reply.document.file_name

        start_time = time()
        progress = Progress(message, file_name, start_time)

        down_file = download_media_wc(reply,
                                      file_name,
                                      progress=progress.download)
        replace(path.join("downloads", file_name), file_name)

        drive.upload_to_gdrive(file_name)

    else:

        args = extract_args(message)
        if not args.startswith("https://" or "http://"):
            return edit(message, f"`Geçerli bir url girin.`")

        is_drive = match("^https://drive.google.com", args)
        if is_drive:
            return drive.copy_file_gdrive(args)
        else:
            dl = drive.download_link(args)

        drive.upload_to_gdrive(dl)
Exemple #10
0
def slowedtoperfection(message):
    # Copyright (c) @kisekinopureya | 2021
    reply = message.reply_to_message
    slowedtoperfection = 'slowedtoperfection'
    if path.isfile(slowedtoperfection):
        remove(slowedtoperfection)

    if not (reply.audio or reply.voice or
            (reply.document and 'audio' in reply.document.mime_type)):
        edit(message, f'`{get_translation("wrongMedia")}`')
    else:
        edit(message, f'`{get_translation("applySlowedtoperfection")}`')
        media = download_media_wc(reply, file_name=slowedtoperfection)
        process = Popen([
            'ffmpeg',
            '-i',
            f'{media}',
            '-af',
            'aecho=1.0:0.7:20:0.5,asetrate=44100*0.84,aresample=44100,atempo=1',
            f'{media}.mp3',
        ])
        process.communicate()
        edit(message, f'`{get_translation("uploadMedia")}`')
        reply_voice(message, f'{media}.mp3')
        remove(media)
        remove(f'{media}.mp3')
        message.delete()
Exemple #11
0
def nightcore(message):
    # Copyright (c) @kisekinopureya | 2021
    reply = message.reply_to_message
    nightcore = 'nightcore'
    if path.isfile(nightcore):
        remove(nightcore)

    if not (reply.audio or reply.voice or
            (reply.document and 'audio' in reply.document.mime_type)):
        edit(message, f'`{get_translation("wrongMedia")}`')
    else:
        edit(message, f'`{get_translation("applyNightcore")}`')
        media = download_media_wc(reply, file_name=nightcore)
        process = Popen([
            'ffmpeg',
            '-i',
            f'{media}',
            '-af',
            'asetrate=44100*1.16,aresample=44100,atempo=1',
            f'{media}.mp3',
        ])
        process.communicate()
        edit(message, f'`{get_translation("uploadMedia")}`')
        reply_voice(message, f'{media}.mp3')
        remove(media)
        remove(f'{media}.mp3')
        message.delete()
Exemple #12
0
def earrape(message):
    args = extract_args(message).split(' ', 1)
    reply = message.reply_to_message
    earrape = 'earrape'
    if path.isfile(earrape):
        remove(earrape)

    util = args[0].lower()
    if util == 'mp4':
        if not (reply.video or reply.video_note or
                (reply.document and 'video' in reply.document.mime_type)):
            edit(message, f'`{get_translation("wrongMedia")}`')
        else:
            edit(message, f'`{get_translation("applyEarrape")}`')
            media = download_media_wc(reply, earrape)
            process = Popen([
                'ffmpeg', '-i', f'{media}', '-af', 'acrusher=.1:1:64:0:log',
                f'{media}.mp4'
            ])
            final, _ = process.communicate()
            edit(message, f'`{get_translation("uploadMedia")}`')
            reply_doc(message,
                      f'{media}.mp4',
                      delete_after_send=True,
                      delete_orig=True)
            remove(media)
    elif util == 'mp3':
        if not (reply.video or reply.video_note or
                (reply.audio or reply.voice or
                 (reply.document and 'video' in reply.document.mime_type))):
            edit(message, f'`{get_translation("wrongMedia")}`')
        else:
            edit(message, f'`{get_translation("applyEarrape")}`')
            media = download_media_wc(reply, earrape)
            process = Popen([
                'ffmpeg', '-i', f'{media}', '-af', 'acrusher=.1:1:64:0:log',
                f'{media}.mp3'
            ])
            final, _ = process.communicate()
            edit(message, f'`{get_translation("uploadMedia")}`')
            reply_voice(message, f'{media}.mp3', delete_orig=True)
            remove(media)
            remove(f'{media}.mp3')
    else:
        edit(message, f'`{get_translation("wrongCommand")}`')
        return
def who_is(client, message):
    user_info = extract_args(message)
    reply = message.reply_to_message
    edit(message, f'`{get_translation("whoisProcess")}`')
    media_perm = True
    if 'group' in message.chat.type:
        perm = message.chat.permissions
        media_perm = perm.can_send_media_messages

    if user_info:
        try:
            reply_user = client.get_users(user_info)
            reply_chat = client.get_chat(user_info)
        except Exception:
            edit(message, f'`{get_translation("whoisError")}`')
            return
    elif reply:
        reply_user = client.get_users(reply.from_user.id)
        reply_chat = client.get_chat(reply.from_user.id)
    else:
        edit(message, f'`{get_translation("whoisError")}`')
        return
    if reply_user or reply_chat is not None:
        try:
            user_photo = reply_user.photo.big_file_id
            photo = download_media_wc(user_photo, 'photo.png')
        except BaseException:
            photo = None
            pass

        first_name = reply_user.first_name or get_translation('notSet')
        last_name = reply_user.last_name or get_translation('notSet')
        username = f'@{reply_user.username}' if reply_user.username else get_translation(
            'notSet')
        user_id = reply_user.id
        photos = client.get_profile_photos_count(user_id)
        dc_id = reply_user.dc_id
        bot = reply_user.is_bot
        scam = reply_user.is_scam
        verified = reply_user.is_verified
        chats = len(client.get_common_chats(user_id))
        bio = reply_chat.bio or get_translation('notSet')
        status = reply_user.status
        last_seen = LastSeen(bot, status)

        caption = get_translation('whoisResult', [
            '**', '`', first_name, last_name, username, user_id, photos, dc_id,
            bot, scam, verified, chats, bio, last_seen
        ])

        if photo and media_perm:
            reply_img(message,
                      photo,
                      caption=caption,
                      delete_file=True,
                      delete_orig=True)
        else:
            return edit(message, caption)
Exemple #14
0
def rbg(message):
    if not RBG_APIKEY:
        return edit(
            message,
            get_translation('rbgApiMissing', ['**', 'Remove.BG', '`']),
            preview=False,
        )
    reply = message.reply_to_message

    if (
        reply
        and reply.media
        and (
            reply.photo
            or (reply.sticker and not reply.sticker.is_animated)
            or (reply.document and 'image' in reply.document.mime_type)
        )
    ):
        edit(message, f'`{get_translation("processing")}`')
    else:
        edit(message, f'`{get_translation("rbgUsage")}`')
        return

    IMG_PATH = f'{get_download_dir()}/image.png'

    if path.exists(IMG_PATH):
        remove(IMG_PATH)
    download_media_wc(reply, IMG_PATH)
    edit(message, f'`{get_translation("rbgProcessing")}`')

    if reply.sticker and not reply.sticker.is_animated:
        image = Image.open(IMG_PATH)
        IMG_PATH = f'{get_download_dir()}/image.png'
        image.save(IMG_PATH)

    try:
        remove_bg = RemoveBg(RBG_APIKEY, get_translation('rbgLog'))
        remove_bg.remove_background_from_img_file(IMG_PATH)
        rbg_img = f'{IMG_PATH}_no_bg.png'
        reply_doc(
            reply, rbg_img, caption=get_translation('rbgResult'), delete_after_send=True
        )
        message.delete()
    except Exception as e:
        return edit(message, get_translation('banError', ['`', '**', e]))
def meme_maker(message):
    args = extract_args(message).upper().split(',')
    reply = message.reply_to_message
    font = 'sedenecem/fonts/impact.ttf'
    if len(args) == 2:
        top, bottom = args[0], args[1]
    else:
        bottom = args[0 if args[1] == '' else 1]

    if (reply and reply.media and
        (reply.photo or (reply.sticker and not reply.sticker.is_animated) or
         (reply.document and 'image' in reply.document.mime_type))):
        media = download_media_wc(reply, f'{get_download_dir()}/image.jpg')
        image = Image.open(media)
        draw = ImageDraw.Draw(image)
        width, height = image.size
        estimated_font_size = find_font_size(''.join(args), font, image, 1)

        text_font = ImageFont.truetype(font, estimated_font_size)
        text_per_line = width // text_font.size
        top_text = wrap(top, width=(text_per_line + 5))
        bottom_text = wrap(bottom, width=(text_per_line + 5))
        y = 10
        for text in top_text:
            text_width, text_height = text_font.getsize(text)
            x = (width - text_width) / 2
            draw.text(
                (x, y),
                text,
                fill='white',
                font=text_font,
                stroke_width=3,
                stroke_fill='black',
            )
            y += text_height
        y = height - text_height * len(bottom_text) - 15
        for text in bottom_text:
            text_width, text_height = text_font.getsize(text)
            x = (width - text_width) / 2
            draw.text(
                (x, y),
                text,
                fill='white',
                font=text_font,
                stroke_width=3,
                stroke_fill='black',
            )
            y += text_height

        image.convert('RGB').save(media, 'JPEG')
        reply_img(reply or message, media, delete_file=True)
        message.delete()
    else:
        edit(message, 'Lütfen bir resim yanıtlayın.')
def deepfry(message):

    text = (message.text or message.caption).split(' ', 1)
    fry = parse_cmd(text[0]) == 'fry'

    try:
        frycount = int(text[1])
        if frycount < 1:
            raise ValueError
    except BaseException:
        frycount = 1

    MAX_LIMIT = 5
    if frycount > MAX_LIMIT:
        frycount = MAX_LIMIT

    reply = message.reply_to_message

    if not reply and message.caption:
        reply = message

    if reply:
        data = check_media(reply)

        if not data:
            edit(message, f'`{get_translation("deepfryError")}`')
            return
    else:
        edit(
            message,
            get_translation('deepfryNoPic',
                            ['`', f'{"f" if fry else "deepf"}ry']),
        )
        return

    # Download Media
    edit(message, f'`{get_translation("deepfryDownload")}`')
    image_file = download_media_wc(reply, 'image.png')
    image = Image.open(image_file)
    remove(image_file)

    # Apply effect to media
    edit(message,
         get_translation('deepfryApply', ['`', f'{"" if fry else "deep"}']))
    for _ in range(frycount):
        image = deepfry_media(image, fry)

    fried_io = open('image.jpeg', 'w+')
    image.save(fried_io, 'JPEG')
    fried_io.close()

    reply_img(reply or message, 'image.jpeg', delete_file=True)
    message.delete()
Exemple #17
0
def getsticker(message):
    reply = message.reply_to_message
    if not reply or not reply.sticker:
        edit(message, f'`{get_translation("replySticker")}`')
        return

    photo = download_media_wc(reply)

    reply_doc(message,
              photo,
              caption=f'**Sticker ID:** `{reply.sticker.file_id}'
              f'`\n**Emoji**: `{reply.sticker.emoji}`',
              delete_after_send=True,
              delete_orig=True)
def img_to_ascii(message):
    reply = message.reply_to_message
    edit(message, f'`{get_translation("processing")}`')
    if not reply:
        edit(message, f'`{get_translation("wrongCommand")}`')
        return

    if not (reply.photo or (reply.sticker and not reply.sticker.is_animated) or
            (reply.document and 'image' in reply.document.mime_type)):
        edit(message, f'`{get_translation("wrongMedia")}`')
    else:
        media = download_media_wc(reply, file_name='ascii.png')
        ImageToAscii(imagePath=media, outputFile="output.txt")
        reply_doc(reply, 'output.txt', delete_after_send=True)
        message.delete()
        remove(media)
Exemple #19
0
def set_profilepic(client, message):
    reply = message.reply_to_message
    photo = None
    if (reply and reply.media
            and (reply.photo or
                 (reply.document and 'image' in reply.document.mime_type))):
        photo = download_media_wc(reply, 'profile_photo.jpg')
    else:
        edit(message, f'`{INVALID_MEDIA}`')

    if photo:
        client.set_profile_photo(photo=photo)
        remove(photo)
        edit(message, f'`{PP_CHANGED}`')
    else:
        edit(message, f'`{PP_ERROR}`')
Exemple #20
0
def getsticker(message):
    reply = message.reply_to_message
    if not reply or not reply.sticker:
        edit(message, f'`{get_translation("replySticker")}`')
        return

    photo = download_media_wc(reply)

    reply_doc(
        reply,
        photo,
        caption=
        f'**Sticker ID:** `{reply.sticker.file_id}`\n**Emoji**: `{reply.sticker.emoji}`'
    )
    message.delete()
    remove(photo)
def parseqr(message):
    reply = message.reply_to_message
    if (reply and reply.media and
        (reply.photo or (reply.sticker and not reply.sticker.is_animated) or
         (reply.document and 'image' in reply.document.mime_type))):
        edit(message, f'`{get_translation("processing")}`')
    else:
        edit(message, f'`{get_translation("wrongCommand")}`')
        return

    output = download_media_wc(reply, f'{get_download_dir()}/decode.png')

    if reply.sticker and not reply.sticker.is_animated:
        image = Image.open(output)
        output = f'{get_download_dir()}/decode.png'
        image.save(output)

    dw = open(output, 'rb')
    files = {'f': dw.read()}
    t_response = None

    try:
        http = PoolManager()
        t_response = http.request('POST',
                                  'https://zxing.org/w/decode',
                                  fields=files)
        t_response = t_response.data
        http.clear()
        dw.close()
    except BaseException:
        pass

    remove(output)
    if not t_response:
        edit(message, f'`{get_translation("decodeFail")}`')
        return
    try:
        soup = BeautifulSoup(t_response, 'html.parser')
        qr_contents = soup.find_all('pre')[0].text
        edit(message, qr_contents)
    except BaseException:
        edit(message, f'`{get_translation("decodeFail")}`')
Exemple #22
0
def download(message):
    reply = message.reply_to_message
    if not reply or not reply.media:
        edit(message, f'`{get_translation("downloadReply")}`')
        return

    def progress(current, total):
        edit(
            message,
            get_translation('updownDownload',
                            ['`', '(½{:.2f})'.format(current * 100 / total)]))

    edit(message, f'`{get_translation("downloadMedia")}`')
    media = download_media_wc(reply, progress=progress)

    if not media:
        edit(message, f'`{get_translation("downloadMediaError")}`')
        return

    edit(message, get_translation('updownDownloadSuccess', ['`', media]))
def parseqr(message):
    reply = message.reply_to_message
    if not reply:
        return edit(message, f'`{get_translation("wrongCommand")}`')

    if not (reply.photo or reply.sticker or
            (reply.document and 'image' in reply.document.mime_type)):
        edit(message, f'`{get_translation("wrongCommand")}`')
        return

    downloaded_file_name = download_media_wc(reply)

    dw = open(downloaded_file_name, 'rb')
    files = {'f': dw.read()}
    t_response = None

    try:
        http = PoolManager()
        t_response = http.request('POST',
                                  'https://zxing.org/w/decode',
                                  fields=files)
        t_response = t_response.data
        http.clear()
        dw.close()
    except BaseException:
        pass

    remove(downloaded_file_name)
    if not t_response:
        edit(message, f'`{get_translation("decodeFail")}`')
        return
    try:
        soup = BeautifulSoup(t_response, 'html.parser')
        qr_contents = soup.find_all('pre')[0].text
        edit(message, qr_contents)
    except BaseException:
        edit(message, f'`{get_translation("decodeFail")}`')
def makeqr(message):
    input_str = extract_args(message)
    usage = get_translation('makeqrUsage', ['**', '`'])
    reply = message.reply_to_message
    if len(input_str) < 1 and not reply:
        edit(message, usage)
        return
    edit(message, f'`{get_translation("processing")}`')
    if reply:
        if reply.media:
            downloaded_file_name = download_media_wc(reply)
            media_list = None
            with open(downloaded_file_name, 'rb') as file:
                media_list = file.readlines()
            qrmsg = ''
            for media in media_list:
                qrmsg += media.decode('UTF-8') + '\r\n'
            remove(downloaded_file_name)
        else:
            qrmsg = reply
    else:
        qrmsg = input_str

    try:
        qr = QRCode(version=1,
                    error_correction=constants.ERROR_CORRECT_L,
                    box_size=10,
                    border=4)
        qr.add_data(qrmsg)
        qr.make(fit=True)
        img = qr.make_image(fill_color='black', back_color='white')
        img.save('img_file.webp', 'PNG')
        reply_doc(message, 'img_file.webp', delete_after_send=True)
    except Exception as e:
        edit(message, str(e))
        return
    message.delete()
Exemple #25
0
def set_profilepic(client, message):
    reply = message.reply_to_message
    photo = None
    if (reply and reply.media
            and (reply.photo or
                 (reply.document and 'image' in reply.document.mime_type))):
        photo = download_media_wc(reply, 'profile_photo.jpg')
    else:
        edit(message, f'`{INVALID_MEDIA}`')

    if photo:
        image = Image.open(photo)
        width, height = image.size
        maxSize = (640, 640)
        ratio = min(maxSize[0] / width, maxSize[1] / height)
        image = image.resize((int(width * ratio), int(height * ratio)))
        new_photo = 'downloads/profile_photo_new.png'
        image.save(new_photo)
        client.set_profile_photo(photo=new_photo)
        remove(photo)
        remove(new_photo)
        edit(message, f'`{PP_CHANGED}`')
    else:
        edit(message, f'`{PP_ERROR}`')
Exemple #26
0
    posix = time()
    TEMP_SETTINGS[f'upload_{posix}'] = posix

    def progress(current, total):
        if (curr_posix := time()) - TEMP_SETTINGS[f'upload_{posix}'] > 5:
            TEMP_SETTINGS[f'upload_{posix}'] = curr_posix
            edit(
                message,
                get_translation(
                    'updownDownload',
                    ['`', '(½{:.2f})'.format(current * 100 / total)]),
            )

    edit(message, f'`{get_translation("downloadMedia")}`')
    media = download_media_wc(reply, progress=progress)

    if not media:
        edit(message, f'`{get_translation("downloadMediaError")}`')
        return

    edit(message, get_translation('updownDownloadSuccess', ['`', media]))
    del TEMP_SETTINGS[f'upload_{posix}']


@sedenify(pattern='^.upload')
def upload(message):
    args = extract_args(message)

    if len(args) < 1:
        edit(message, f'`{get_translation("uploadReply")}`')
Exemple #27
0
def who_is(client, message):
    find_user = extract_user(message)
    reply = message.reply_to_message
    media_perm = None
    edit(message, f'`{get_translation("whoisProcess")}`')

    if len(find_user) < 1:
        return edit(message, f'`{get_translation("banFailUser")}`')

    if message.chat.type in [enums.ChatType.SUPERGROUP, enums.ChatType.GROUP]:
        perm = message.chat.permissions
        media_perm = perm.can_send_media_messages

    for reply_user in find_user:
        try:
            reply_chat = client.get_chat(reply_user.id)
        except Exception:
            return edit(message, f'`{get_translation("whoisError")}`')
        if reply_user or reply_chat is not None:
            try:
                user_photo = reply_user.photo.big_file_id
                photo = download_media_wc(user_photo, 'photo.png')
            except BaseException:
                photo = None
                pass

            first_name = reply_user.first_name or get_translation('notSet')
            last_name = reply_user.last_name or get_translation('notSet')
            username = (f'@{reply_user.username}'
                        if reply_user.username else get_translation('notSet'))
            user_id = reply_user.id
            photos = client.get_chat_photos_count(user_id)
            dc_id = reply_user.dc_id or get_translation('notSet')
            bot = reply_user.is_bot
            chats = len(client.get_common_chats(user_id))
            premium = reply_user.is_premium
            bio = reply_chat.bio or get_translation('notSet')
            status = reply_user.status
            last_seen = LastSeen(bot, status)
            sudo = SudoCheck(user_id)
            blacklist = BlacklistCheck(user_id)

            caption = get_translation(
                'whoisResult',
                [
                    '**',
                    '`',
                    first_name,
                    last_name,
                    username,
                    user_id,
                    photos,
                    dc_id,
                    chats,
                    premium,
                    bio,
                    last_seen,
                    sudo if sudo else '',
                    blacklist if blacklist else '',
                ],
            )

    if photo and media_perm:
        reply_img(reply or message, photo, caption=caption, delete_file=True)
        message.delete()
    else:
        return edit(message, caption)
Exemple #28
0
def get_chat_info(client, message):
    args = extract_args(message)
    reply = message.reply_to_message
    chat_id = message.chat.id
    media_perm = None
    edit(message, f'`{get_translation("processing")}`')

    try:
        reply_chat = client.get_chat(args or chat_id)
        peer = client.resolve_peer(args or chat_id)
    except PeerIdInvalid:
        edit(message, f'`{get_translation("groupNotFound")}`')
        return

    if message.chat.type in [enums.ChatType.SUPERGROUP, enums.ChatType.GROUP]:
        perm = message.chat.permissions
        media_perm = perm.can_send_media_messages

    try:
        online_users = client.invoke(GetOnlines(peer=peer))
        online = online_users.onlines
    except PeerIdInvalid:
        edit(message, f'`{get_translation("groupNotFound")}`')
        return

    try:
        group_photo = reply_chat.photo.big_file_id
        photo = download_media_wc(group_photo, 'photo.png')
    except BaseException:
        photo = None
        pass

    title = reply_chat.title or get_translation('notSet')
    username = (f'**@{reply_chat.username}**'
                if reply_chat.username else f'`{get_translation("notFound")}`')
    chat_id = reply_chat.id
    dc_id = reply_chat.dc_id or get_translation('notFound')
    group_type = reply_chat.type
    sticker_pack = (
        f'**[Pack](https://t.me/addstickers/{reply_chat.sticker_set_name})**'
        if reply_chat.sticker_set_name else f'`{get_translation("notSet")}`')
    members = reply_chat.members_count
    description = (f'\n{reply_chat.description}'
                   if reply_chat.description else get_translation('notSet'))

    caption = get_translation(
        'groupinfoResult',
        [
            '**',
            '`',
            title,
            chat_id,
            dc_id,
            group_type,
            members,
            online,
            sticker_pack,
            username,
            description,
        ],
    )
    if photo and media_perm:
        reply_img(reply or message, photo, caption=caption, delete_file=True)
        message.delete()
    else:
        edit(message, caption, preview=False)
Exemple #29
0
def reverse(message):
    photo = 'reverse.png'
    if path.isfile(photo):
        remove(photo)

    reverse = message.reply_to_message
    revfile = None
    if reverse and reverse.media:
        revfile = download_media_wc(reverse, photo)
    else:
        edit(message, f'`{get_translation("reverseUsage")}`')
        return

    if photo:
        edit(message, f'`{get_translation("processing")}`')
        try:
            image = Image.open(revfile)
        except OSError:
            edit(message, f'`{get_translation("reverseError")}`')
            return
        image.save(photo, 'PNG')
        image.close()
        # https://stackoverflow.com/questions/23270175/google-reverse-image-search-using-post-request#28792943
        searchUrl = 'https://www.google.com/searchbyimage/upload'
        multipart = {
            'encoded_image': (photo, open(photo, 'rb')),
            'image_content': ''
        }
        response = post(searchUrl, files=multipart, allow_redirects=False)
        fetchUrl = response.headers['Location']

        if response != 400:
            edit(message, f'`{get_translation("reverseProcess")}`')
        else:
            edit(message, f'`{get_translation("reverseGoogle")}`')
            return

        remove(photo)
        match = ParseSauce(fetchUrl + '&preferences?hl=en&fg=1#languages')
        guess = match['best_guess']
        imgspage = match['similar_images']

        if guess and imgspage:
            edit(message,
                 get_translation("reverseResult", [guess, fetchUrl, '`']))
        else:
            edit(message, f'`{get_translation("reverseError2")}`')
            return

        msg = extract_args(message)
        if len(msg) > 1 and msg.isdigit():
            lim = msg
        else:
            lim = 3
        images = scam(match, lim)
        yeet = []
        for i in range(len(images)):
            k = get(images[i])
            n = f'reverse_{i}.png'
            file = open(n, 'wb')
            file.write(k.content)
            file.close()
            yeet.append(InputMediaPhoto(n))
        reply_doc(message, yeet)
        edit(message,
             get_translation("reverseResult", [guess, fetchUrl, imgspage]))
Exemple #30
0
def kang(client, message):
    myacc = TEMP_SETTINGS['ME']
    kanger = myacc.username or myacc.first_name
    if myacc.username:
        kanger = f'@{kanger}'
    args = extract_args(message)

    reply = message.reply_to_message
    if not reply:
        edit(message, f'`{get_translation("stickerUsage")}`')
        return

    anim = False
    media = None

    if reply.photo or reply.document or reply.sticker:
        edit(message, f'`{choice(DIZCILIK)}`')
        anim = reply.sticker and reply.sticker.is_animated
        media = download_media_wc(reply, sticker_orig=anim)
    else:
        edit(message, f'`{get_translation("stickerError")}`')
        return

    if len(args) < 1:
        args = '1'

    emoji = '🤤'
    pack = 1

    for item in args.split():
        if item.isdigit():
            pack = int(item)
            args = args.replace(item, '').strip()
        elif 'e=' in item.lower():
            emoji = item.replace('e=', '')
            args = args.replace(item, '').strip()

    pname = (
        PACKNAME.replace(' ', '')
        if PACKNAME
        else f'a{myacc.id}_by_{myacc.username}_{pack}'
    )
    pnick = PACKNICK or f"{kanger}'s UserBot pack {pack}"

    limit = '50' if anim else '120'

    def pack_created(name):
        try:
            set_name = InputStickerSetShortName(short_name=name)
            set = GetStickerSet(stickerset=set_name)
            client.send(data=set)
            return True
        except BaseException as e:
            return False

    def create_new(conv, pname, pnick):
        cmd = f'/new{"animated" if anim else "pack"}'

        try:
            send_recv(conv, cmd)
        except Exception as e:
            raise e
        msg = send_recv(conv, pnick)
        if msg.text == 'Invalid pack selected.':
            pack += 1
            return create_new(conv)
        msg = send_recv(conv, media, doc=True)
        if 'Sorry, the file type is invalid.' in msg.text:
            edit(message, f'`{get_translation("stickerError")}`')
            return
        send_recv(conv, emoji)
        send_recv(conv, '/publish')
        if anim:
            send_recv(conv, f'<{pnick}>')
        send_recv(conv, '/skip')
        send_recv(conv, pname)

    def add_exist(conv, pack, pname, pnick):
        try:
            send_recv(conv, '/addsticker')
        except Exception as e:
            raise e

        status = send_recv(conv, pname)

        if limit in status.text:
            pack += 1
            pname = (
                PACKNAME.replace(' ', '')
                if PACKNAME
                else f'a{myacc.id}_by_{myacc.username}_{pack}'
            )
            pnick = PACKNICK or f"{kanger}'s UserBot pack {pack}"
            edit(message, get_translation('packFull', ['`', '**', str(pack)]))
            if pack_created(pname):
                return add_exist(conv, pack, pname, pnick)
            else:
                return create_new(conv, pname, pnick)

        send_recv(conv, media, doc=True)
        send_recv(conv, emoji)
        send_recv(conv, '/done')
        return True

    if anim:
        pname += '_anim'
        pnick += ' (Animated)'
    else:
        if not reply.sticker:
            media = resizer(media)

    with PyroConversation(client, 'Stickers') as conv:
        send_recv(conv, '/cancel')
        if pack_created(pname):
            ret = add_exist(conv, pack, pname, pnick)
            if not ret:
                return
        else:
            create_new(conv, pname, pnick)

    edit(message, get_translation('stickerAdded', ['`', pname]))