| |
| |
| |
| |
| |
| |
|
|
| from . import get_help |
|
|
| __doc__ = get_help("help_beautify") |
|
|
|
|
| import os |
| import random |
|
|
| from telethon.utils import get_display_name |
| from urllib.parse import urlencode |
| from . import Carbon, ultroid_cmd, get_string, inline_mention |
| from secrets import token_hex |
|
|
| _colorspath = "resources/colorlist.txt" |
|
|
| if os.path.exists(_colorspath): |
| with open(_colorspath, "r") as f: |
| all_col = f.read().split() |
| else: |
| all_col = [] |
|
|
|
|
| @ultroid_cmd( |
| pattern="(rc|c)arbon", |
| ) |
| async def cr_bn(event): |
| xxxx = await event.eor(get_string("com_1")) |
| te = event.pattern_match.group(1) |
| col = random.choice(all_col) if te[0] == "r" else "White" |
| if event.reply_to_msg_id: |
| temp = await event.get_reply_message() |
| if temp.media: |
| b = await event.client.download_media(temp) |
| with open(b) as a: |
| code = a.read() |
| os.remove(b) |
| else: |
| code = temp.message |
| else: |
| try: |
| code = event.text.split(" ", maxsplit=1)[1] |
| except IndexError: |
| return await xxxx.eor(get_string("carbon_2")) |
| xx = await Carbon(code=code, file_name="ultroid_carbon", backgroundColor=col) |
| if isinstance(xx, dict): |
| await xxxx.edit(f"`{xx}`") |
| return |
| await xxxx.delete() |
| await event.reply( |
| f"Carbonised by {inline_mention(event.sender)}", |
| file=xx, |
| ) |
|
|
|
|
| @ultroid_cmd( |
| pattern="ccarbon( (.*)|$)", |
| ) |
| async def crbn(event): |
| match = event.pattern_match.group(1).strip() |
| if not match: |
| return await event.eor(get_string("carbon_3")) |
| msg = await event.eor(get_string("com_1")) |
| if event.reply_to_msg_id: |
| temp = await event.get_reply_message() |
| if temp.media: |
| b = await event.client.download_media(temp) |
| with open(b) as a: |
| code = a.read() |
| os.remove(b) |
| else: |
| code = temp.message |
| else: |
| try: |
| match = match.split(" ", maxsplit=1) |
| code = match[1] |
| match = match[0] |
| except IndexError: |
| return await msg.eor(get_string("carbon_2")) |
| xx = await Carbon(code=code, backgroundColor=match) |
| await msg.delete() |
| await event.reply( |
| f"Carbonised by {inline_mention(event.sender)}", |
| file=xx, |
| ) |
|
|
|
|
| RaySoTheme = [ |
| "meadow", |
| "breeze", |
| "raindrop", |
| "candy", |
| "crimson", |
| "falcon", |
| "sunset", |
| "noir", |
| "midnight", |
| "bitmap", |
| "ice", |
| "sand", |
| "forest", |
| "mono", |
| ] |
|
|
|
|
| @ultroid_cmd(pattern="rayso") |
| async def pass_on(ult): |
| try: |
| from playwright.async_api import async_playwright |
| except ImportError: |
| await ult.eor( |
| "`playwright` is not installed!\nPlease install it to use this command.." |
| ) |
| return |
|
|
| proc = await ult.eor(get_string("com_1")) |
| spli = ult.text.split() |
| theme, dark, title, text = None, True, get_display_name(ult.chat), None |
| if len(spli) > 1: |
| if spli[1] in RaySoTheme: |
| theme = spli[1] |
| if len(spli) > 2: |
| text = " ".join(spli[2:]) |
| else: |
| text = " ".join(spli[1:]) |
| if ult.is_reply: |
| try: |
| msg = await ult.get_reply_message() |
| text = msg.message if not text else text |
| title = get_display_name(msg.sender) |
| if not theme and spli[1] in RaySoTheme: |
| theme = spli[1] |
| except Exception as sam: |
| LOGS.exception(sam) |
| if not text: |
| await proc.eor("No text to beautify!") |
| return |
| if not theme: |
| theme = random.choice(RaySoTheme) |
| cleaned_text = "\n".join([line.strip() for line in text.splitlines()]) |
| name = token_hex(8) + ".png" |
| data = {"darkMode": dark, "theme": theme, "title": title} |
| url = f"https://ray.so/#{urlencode(data)}" |
| async with async_playwright() as play: |
| try: |
| browser = await play.chromium.launch() |
| page = await browser.new_page() |
| await page.goto(url) |
| await page.wait_for_load_state("networkidle") |
| try: |
| await page.wait_for_selector( |
| "div[class*='Editor_editor__']", timeout=60000 |
| ) |
| editor = await page.query_selector("div[class*='Editor_editor__']") |
| await editor.focus() |
| await editor.click() |
|
|
| for line in cleaned_text.split("\n"): |
| await page.keyboard.type(line) |
| await page.keyboard.press("Enter") |
|
|
| await page.evaluate( |
| """() => { |
| const button = document.querySelector('button[aria-label="Export as PNG"]'); |
| button.click(); |
| }""" |
| ) |
|
|
| async with page.expect_download() as download_info: |
| download = await download_info.value |
| await download.save_as(name) |
| except playwright._impl._errors.TimeoutError: |
| LOGS.error("Timeout error: Selector not found within 60 seconds.") |
| await proc.eor("Failed to find the editor within 60 seconds.") |
| return |
| except Exception as e: |
| LOGS.error(f"Error occurred during playwright operation: {e}") |
| await proc.eor("An error occurred during the operation.") |
| return |
| finally: |
| if os.path.exists(name): |
| try: |
| await ult.reply(file=name) |
| await proc.try_delete() |
| os.remove(name) |
| except Exception as e: |
| LOGS.error(f"Error occurred while replying with the file: {e}") |
| await proc.eor("Failed to send the file.") |
| else: |
| LOGS.error(f"Error: File {name} not found or inaccessible.") |
| await proc.eor("Failed to save the file.") |
|
|