Example #1
0
async def webss(message: Message):
    if Config.GOOGLE_CHROME_BIN is None:
        await message.err("need to install Google Chrome. Module Stopping")
        return
    link_match = match(r'\bhttps?://.*\.\S+', message.input_str)
    if not link_match:
        await message.err("`I need a valid link to take screenshots from.`")
        return
    link = link_match.group()
    await message.edit("`Processing ...`")
    chrome_options = webdriver.ChromeOptions()
    chrome_options.binary_location = Config.GOOGLE_CHROME_BIN
    chrome_options.add_argument('--ignore-certificate-errors')
    chrome_options.add_argument("--test-type")
    chrome_options.add_argument("--headless")
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.get(link)
    height = driver.execute_script(
        "return Math.max(document.body.scrollHeight, document.body.offsetHeight, "
        "document.documentElement.clientHeight, document.documentElement.scrollHeight, "
        "document.documentElement.offsetHeight);")
    width = driver.execute_script(
        "return Math.max(document.body.scrollWidth, document.body.offsetWidth, "
        "document.documentElement.clientWidth, document.documentElement.scrollWidth, "
        "document.documentElement.offsetWidth);")
    driver.set_window_size(width + 125, height + 125)
    wait_for = height / 1000
    await message.edit(f"`Generating screenshot of the page...`"
                       f"\n`Height of page = {height}px`"
                       f"\n`Width of page = {width}px`"
                       f"\n`Waiting ({int(wait_for)}s) for the page to load.`")
    await asyncio.sleep(int(wait_for))
    im_png = driver.get_screenshot_as_png()
    driver.close()
    message_id = message.message_id
    if message.reply_to_message:
        message_id = message.reply_to_message.message_id
    file_path = os.path.join(Config.DOWN_PATH, "webss.png")
    async with aiofiles.open(file_path, 'wb') as out_file:
        await out_file.write(im_png)
    await asyncio.gather(
        message.delete(),
        userge.send_document(chat_id=message.chat.id,
                             document=file_path,
                             caption=link,
                             reply_to_message_id=message_id)
    )
    os.remove(file_path)
    driver.quit()
Example #2
0
async def carbon_(message: Message):
    if Config.GOOGLE_CHROME_BIN is None:
        replied = message.reply_to_message
        if replied:
            text = replied.text
        else:
            text = message.text
        if not text:
            await message.err("need input text!")
            return
        await message.edit("`Sedang Mengcarbon Sayang...`")
        async with userge.conversation("CarbonNowShBot", timeout=30) as conv:
            try:
                await conv.send_message(text)
            except YouBlockedUser:
                await message.edit('first **unblock** @CarbonNowShBot')
                return
            response = await conv.get_response(mark_read=True)
            while not response.reply_markup:
                response = await conv.get_response(mark_read=True)
            await response.click(x=random.randint(0, 2),
                                 y=random.randint(0, 8))
            response = await conv.get_response(mark_read=True)
            while not response.media:
                response = await conv.get_response(mark_read=True)
            caption = "\n".join(response.caption.split("\n")[0:2])
            file_id = response.document.file_id
            await asyncio.gather(
                message.delete(),
                userge.send_document(chat_id=message.chat.id,
                                     document=file_id,
                                     caption='`' + caption + '`',
                                     reply_to_message_id=replied.message_id
                                     if replied else None))
    else:
        input_str = message.filtered_input_str
        replied = message.reply_to_message
        theme = 'seti'
        lang = 'auto'
        red = message.flags.get('r', random.randint(0, 255))
        green = message.flags.get('g', random.randint(0, 255))
        blue = message.flags.get('b', random.randint(0, 255))
        alpha = message.flags.get('a', random.randint(0, 100))
        bg_ = f"rgba({red}, {green}, {blue}, {alpha})"
        if replied and (replied.text or
                        (replied.document
                         and 'text' in replied.document.mime_type)):
            message_id = replied.message_id
            if replied.document:
                await message.edit("`Downloading File...`")
                path_ = await message.client.download_media(
                    replied, file_name=Config.DOWN_PATH)
                async with aiofiles.open(path_) as file_:
                    code = await file_.read()
                os.remove(path_)
            else:
                code = replied.text
            if input_str:
                if '|' in input_str:
                    args = input_str.split('|')
                    if len(args) == 2:
                        theme = args[0].strip()
                        lang = args[1].strip()
                else:
                    theme = input_str
        elif input_str:
            message_id = message.message_id
            if '|' in input_str:
                args = input_str.split('|')
                if len(args) == 3:
                    theme = args[0].strip()
                    lang = args[1].strip()
                    code = args[2].strip()
                elif len(args) == 2:
                    theme = args[0].strip()
                    code = args[1].strip()
            else:
                code = input_str
        else:
            await message.err("Masukan Text Dulu Dong Sayang !")
            return
        await message.edit(
            "`Oke Perintah Di Terima Sayang , Aku akan Ngeproses Carbon Mu Sayang...`"
        )
        code = quote_plus(code)
        await message.edit("`Proses Sudah 20% Sayang`")
        carbon_path = os.path.join(Config.DOWN_PATH, "carbon.png")
        if os.path.isfile(carbon_path):
            os.remove(carbon_path)
        url = CARBON.format(theme=theme, lang=lang, code=code, bg=bg_)
        if len(url) > 2590:
            await message.err("input too large!")
            return
        chrome_options = webdriver.ChromeOptions()
        chrome_options.binary_location = Config.GOOGLE_CHROME_BIN
        chrome_options.add_argument("--headless")
        chrome_options.add_argument("--window-size=1920x1080")
        chrome_options.add_argument("--disable-dev-shm-usage")
        chrome_options.add_argument("--no-sandbox")
        chrome_options.add_argument("--disable-gpu")
        prefs = {'download.default_directory': Config.DOWN_PATH}
        chrome_options.add_experimental_option('prefs', prefs)
        driver = webdriver.Chrome(chrome_options=chrome_options)
        driver.get(url)
        await message.edit("`Proses Sudah 40% Sayang`")
        driver.command_executor._commands["send_command"] = (  # pylint: disable=protected-access
            "POST", '/session/$sessionId/chromium/send_command')
        params = {
            'cmd': 'Page.setDownloadBehavior',
            'params': {
                'behavior': 'allow',
                'downloadPath': Config.DOWN_PATH
            }
        }
        driver.execute("send_command", params)
        # driver.find_element_by_xpath("//button[contains(text(),'Export')]").click()
        driver.find_element_by_id("export-menu").click()
        await asyncio.sleep(1)
        await message.edit("`Proses Sudah 60% Sayang`")
        driver.find_element_by_xpath("//button[contains(text(),'4x')]").click()
        await asyncio.sleep(1)
        driver.find_element_by_xpath(
            "//button[contains(text(),'PNG')]").click()
        await message.edit("`Proses Sudah 80% Sayang`")
        while not os.path.isfile(carbon_path):
            await asyncio.sleep(0.5)
        await message.edit("`Proses Sudah 100% Sayang`")
        await message.edit("`Mengupload Hasil Carbon Mu Sayang!...`")
        await asyncio.gather(
            message.delete(),
            message.client.send_photo(chat_id=message.chat.id,
                                      photo=carbon_path,
                                      reply_to_message_id=message_id))
        os.remove(carbon_path)
        driver.quit()
Example #3
0
async def carbon_(message: Message):
    if Config.GOOGLE_CHROME_BIN is None:
        replied = message.reply_to_message
        if replied:
            text = replied.text
        else:
            text = message.text
        if not text:
            await message.err("need input text!")
            return
        await message.edit("`Creating a Carbon...`")
        async with userge.conversation("CarbonNowShBot", timeout=30) as conv:
            try:
                await conv.send_message(text)
            except YouBlockedUser:
                await message.edit("first **unblock** @CarbonNowShBot")
                return
            response = await conv.get_response(mark_read=True)
            while not response.reply_markup:
                response = await conv.get_response(mark_read=True)
            await response.click(x=random.randint(0, 2), y=random.randint(0, 8))
            response = await conv.get_response(mark_read=True)
            while not response.media:
                response = await conv.get_response(mark_read=True)
            caption = "\n".join(response.caption.split("\n")[0:2])
            file_id = response.document.file_id
            await asyncio.gather(
                message.delete(),
                userge.send_document(
                    chat_id=message.chat.id,
                    document=file_id,
                    caption="`" + caption + "`",
                    reply_to_message_id=replied.message_id if replied else None,
                ),
            )
    else:
        input_str = message.filtered_input_str
        replied = message.reply_to_message
        theme = "seti"
        lang = "auto"
        red = message.flags.get("r", random.randint(0, 255))
        green = message.flags.get("g", random.randint(0, 255))
        blue = message.flags.get("b", random.randint(0, 255))
        alpha = message.flags.get("a", random.randint(0, 100))
        bg_ = f"rgba({red}, {green}, {blue}, {alpha})"
        if replied and (
            replied.text or (replied.document and "text" in replied.document.mime_type)
        ):
            message_id = replied.message_id
            if replied.document:
                await message.edit("`Downloading File...`")
                path_ = await message.client.download_media(
                    replied, file_name=Config.DOWN_PATH
                )
                async with aiofiles.open(path_) as file_:
                    code = await file_.read()
                os.remove(path_)
            else:
                code = replied.text
            if input_str:
                if "|" in input_str:
                    args = input_str.split("|")
                    if len(args) == 2:
                        theme = args[0].strip()
                        lang = args[1].strip()
                else:
                    theme = input_str
        elif input_str:
            message_id = message.message_id
            if "|" in input_str:
                args = input_str.split("|")
                if len(args) == 3:
                    theme = args[0].strip()
                    lang = args[1].strip()
                    code = args[2].strip()
                elif len(args) == 2:
                    theme = args[0].strip()
                    code = args[1].strip()
            else:
                code = input_str
        else:
            await message.err("need input text!")
            return
        await message.edit("`Creating a Carbon...`")
        code = quote_plus(code)
        await message.edit("`Processing... 20%`")
        carbon_path = os.path.join(Config.DOWN_PATH, "carbon.png")
        if os.path.isfile(carbon_path):
            os.remove(carbon_path)
        url = CARBON.format(theme=theme, lang=lang, code=code, bg=bg_)
        if len(url) > 6590:
            await message.err("input too large!")
            return
        chrome_options = webdriver.ChromeOptions()
        chrome_options.binary_location = Config.GOOGLE_CHROME_BIN
        chrome_options.add_argument("--headless")
        chrome_options.add_argument("--window-size=1920x1080")
        chrome_options.add_argument("--disable-dev-shm-usage")
        chrome_options.add_argument("--no-sandbox")
        chrome_options.add_argument("--disable-gpu")
        prefs = {"download.default_directory": Config.DOWN_PATH}
        chrome_options.add_experimental_option("prefs", prefs)
        driver = webdriver.Chrome(chrome_options=chrome_options)
        driver.get(url)
        await message.edit("`Processing... 40%`")
        driver.command_executor._commands[
            "send_command"
        ] = (  # pylint: disable=protected-access
            "POST",
            "/session/$sessionId/chromium/send_command",
        )
        params = {
            "cmd": "Page.setDownloadBehavior",
            "params": {"behavior": "allow", "downloadPath": Config.DOWN_PATH},
        }
        driver.execute("send_command", params)
        # driver.find_element_by_xpath("//button[contains(text(),'Export')]").click()
        driver.find_element_by_id("export-menu").click()
        await asyncio.sleep(1)
        await message.edit("`Processing... 60%`")
        driver.find_element_by_xpath("//button[contains(text(),'4x')]").click()
        await asyncio.sleep(1)
        driver.find_element_by_id("export-png").click()
        await message.edit("`Processing... 80%`")
        while not os.path.isfile(carbon_path):
            await asyncio.sleep(0.5)
        await message.edit("`Processing... 100%`")
        await message.edit("`Uploading Carbon...`")
        await asyncio.gather(
            message.delete(),
            message.client.send_document(
                chat_id=message.chat.id,
                document=carbon_path,
                reply_to_message_id=message_id,
            ),
        )
        os.remove(carbon_path)
        driver.quit()