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()
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()
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()
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)
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()
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()
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)
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()
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)
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}`')
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")}`')
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()
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}`')
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")}`')
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)
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)
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]))
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]))