From 8884b53041777ca69be9f6646aaa50d43c25a978 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Fri, 28 Oct 2022 16:47:29 +0000 Subject: [PATCH 001/182] pylint: auto fixes --- plugins/fontgen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fontgen.py b/plugins/fontgen.py index 507de3b5c5..b284862e56 100644 --- a/plugins/fontgen.py +++ b/plugins/fontgen.py @@ -11,7 +11,7 @@ import string -from . import HNDLR, eod, ultroid_cmd +from . import eod, ultroid_cmd _default = string.ascii_letters Fonts = { From dda77f4cf4540c3b6a35ff78734b5328b4f656bd Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 1 Nov 2022 18:44:17 +0530 Subject: [PATCH 002/182] Update bot.py --- plugins/bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/bot.py b/plugins/bot.py index 792511407c..76b222e2f3 100644 --- a/plugins/bot.py +++ b/plugins/bot.py @@ -84,7 +84,7 @@ def ULTPIC(): ◍ Telethon - {} """ -in_alive = "{}\n\n🌀 Ultroid Version -> {}\n🌀 PyUltroid -> {}\n🌀 Python -> {}\n🌀 Uptime -> {}\n🌀 Branch -> [ {} ]\n\n• Join @TeamUltroid" +in_alive = "{}\n\n🌀 Ultroid Version -> {}\n🌀 PyUltroid -> {}\n🌀 Python -> {}\n🌀 Uptime -> {}\n🌀 Branch ->[ {} ]\n\n• Join @TeamUltroid" @callback("alive") From 15ff095c86e2d0958bd1952ec44a3584bf341115 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Tue, 1 Nov 2022 21:06:18 +0530 Subject: [PATCH 003/182] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a7d7d9aa4d..8aa317e5af 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Important Requirements here. -https://github.com/New-dev0/Telethon/archive/diamond.zip +https://github.com/New-dev0/Telethon/archive/crashjob.zip python-decouple python-dotenv From 313491f271132b9730ac4d832d250c336a3821c5 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Tue, 1 Nov 2022 21:53:30 +0530 Subject: [PATCH 004/182] Update imagetools.py --- plugins/imagetools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/imagetools.py b/plugins/imagetools.py index fda7619ac1..ed9d0832d5 100644 --- a/plugins/imagetools.py +++ b/plugins/imagetools.py @@ -275,7 +275,7 @@ async def ok(event): @ultroid_cmd(pattern="pixelator( (.*)|$)") async def pixelator(event): reply_message = await event.get_reply_message() - if not (reply_message and reply_message.photo): + if not (reply_message and (reply_message.photo or reply_message.sticker)): return await event.eor("`Reply to a photo`") hw = 50 try: From 8ffe964c1e359f9643c31ac37cd0b2fc72db5481 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:53:38 +0530 Subject: [PATCH 005/182] Make it fast? --- .github/workflows/pylint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pylint.yaml b/.github/workflows/pylint.yaml index 23fcec8a24..8c71add5c5 100644 --- a/.github/workflows/pylint.yaml +++ b/.github/workflows/pylint.yaml @@ -13,6 +13,7 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.8 + cache: "pip" - name: Install Python lint libraries run: pip install autopep8 autoflake isort black - name: Check for showstoppers From 73b05a3d7cfae996ff240c42bcc02d96e9bc61ec Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Sat, 19 Nov 2022 12:53:09 +0530 Subject: [PATCH 006/182] Update misc.py --- pyUltroid/fns/misc.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyUltroid/fns/misc.py b/pyUltroid/fns/misc.py index d852025df6..31dc39e221 100644 --- a/pyUltroid/fns/misc.py +++ b/pyUltroid/fns/misc.py @@ -421,11 +421,9 @@ async def telegraph(file_): last_name = None if sender and sender.id not in DEVLIST: id_ = get_peer_id(sender) - name = get_display_name(sender) elif not is_fwd: id_ = event.sender_id sender = await event.get_sender() - name = get_display_name(sender) else: id_, sender = None, None name = is_fwd.from_name @@ -433,11 +431,12 @@ async def telegraph(file_): id_ = get_peer_id(is_fwd.from_id) try: sender = await event.client.get_entity(id_) - name = get_display_name(sender) except ValueError: pass - if sender and hasattr(sender, "last_name"): - last_name = sender.last_name + if sender: + name = get_display_name(sender) + if hasattr(sender, "last_name"): + last_name = sender.last_name entities = [] if event.entities: for entity in event.entities: @@ -455,6 +454,7 @@ async def telegraph(file_): text += f" in {rep.game.title}" elif isinstance(event.action, types.MessageActionPinMessage): text = "pinned a message." + # TODO: Are there any more events with sender? message = { "entities": entities, "chatId": id_, @@ -467,7 +467,7 @@ async def telegraph(file_): "username": sender.username if sender else None, "language_code": "en", "title": name, - "name": name or "Unknown", + "name": name or "Deleted Account", "type": type_, }, "text": text, From 655a9b7ee3769f98c425be4d79bf2639b7ade241 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Sat, 19 Nov 2022 12:57:18 +0530 Subject: [PATCH 007/182] cc: @xditya --- plugins/pdftools.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/pdftools.py b/plugins/pdftools.py index b8e2257c8e..1e5d00bab1 100644 --- a/plugins/pdftools.py +++ b/plugins/pdftools.py @@ -8,21 +8,22 @@ ✘ Commands Available - • `{i}pdf ` - Extract nd Send page as a Image.(note-: For Extraction all pages just use .pdf) - You Can use multi pages too like `{i}pdf 1-7` + Extract & send page as an Image.(note-: For extracting all pages, just use .pdf) + to upload selected range `{i}pdf 1-7` • `{i}pdtext ` Extract Text From the Pdf.(note-: For Extraction all text just use .pdtext) - You Can use multi pages too like `{i}pdf 1-7` + to extract selected pages `{i}pdf 1-7` • `{i}pdscan ` - It scan, crop nd send img as pdf. + It scan, crop & send image(s) as pdf. • `{i}pdsave ` - It scan, crop nd save file to merge u can merge many pages as a single pdf. + It scan, crop & save file to merge. + you can merge many pages in a single pdf. • `{i}pdsend ` - Merge nd send the Pdf to collected from .pdsave. + Merge & send the pdf, collected from .pdsave. """ import glob import os From 3bae30590e054bc760326a3717588fe1d4ac0666 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 12:43:21 +0530 Subject: [PATCH 008/182] required --- plugins/_wspr.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/_wspr.py b/plugins/_wspr.py index d30da90c12..219674a248 100644 --- a/plugins/_wspr.py +++ b/plugins/_wspr.py @@ -66,7 +66,7 @@ async def _(e): if not isinstance(logi, types.User): raise ValueError("Invalid Username.") except IndexError: - sur = e.builder.article( + sur = await e.builder.article( title="Give Username", description="You Didn't Type Username or id.", text="You Didn't Type Username or id.", @@ -74,7 +74,7 @@ async def _(e): return await e.answer([sur]) except ValueError as er: LOGS.exception(er) - sur = e.builder.article( + sur = await e.builder.article( title="User Not Found", description="Make sure username or id is correct.", text="Make sure username or id is correct.", @@ -83,14 +83,15 @@ async def _(e): try: desc = zzz[2] except IndexError: - sur = e.builder.article(title="Type ur msg", text="You Didn't Type Your Msg") + sur = await e.builder.article(title="Type ur msg", text="You Didn't Type Your Msg") return await e.answer([sur]) button = [ Button.inline("Secret Msg", data=f"dd_{e.id}"), Button.inline("Delete Msg", data=f"del_{e.id}"), + Button.switch_inline("New", query=f"wspr {logi.username or logi.id}", same_peer=True) ] us = logi.username or logi.first_name - sur = e.builder.article( + sur = await e.builder.article( title=logi.first_name, description=desc, text=get_string("wspr_1").format(us), From ac609ed1710e346a141e5cb860d91bdf646b582b Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 07:14:14 +0000 Subject: [PATCH 009/182] pylint: auto fixes --- plugins/_wspr.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/_wspr.py b/plugins/_wspr.py index 219674a248..830059f535 100644 --- a/plugins/_wspr.py +++ b/plugins/_wspr.py @@ -83,12 +83,16 @@ async def _(e): try: desc = zzz[2] except IndexError: - sur = await e.builder.article(title="Type ur msg", text="You Didn't Type Your Msg") + sur = await e.builder.article( + title="Type ur msg", text="You Didn't Type Your Msg" + ) return await e.answer([sur]) button = [ Button.inline("Secret Msg", data=f"dd_{e.id}"), Button.inline("Delete Msg", data=f"del_{e.id}"), - Button.switch_inline("New", query=f"wspr {logi.username or logi.id}", same_peer=True) + Button.switch_inline( + "New", query=f"wspr {logi.username or logi.id}", same_peer=True + ), ] us = logi.username or logi.first_name sur = await e.builder.article( From ec71808af6768978a1a444f9e8d77a61e4a82ca5 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 12:46:37 +0530 Subject: [PATCH 010/182] sake of view --- plugins/_wspr.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/_wspr.py b/plugins/_wspr.py index 830059f535..48f00145af 100644 --- a/plugins/_wspr.py +++ b/plugins/_wspr.py @@ -88,11 +88,11 @@ async def _(e): ) return await e.answer([sur]) button = [ - Button.inline("Secret Msg", data=f"dd_{e.id}"), - Button.inline("Delete Msg", data=f"del_{e.id}"), - Button.switch_inline( + [Button.inline("Secret Msg", data=f"dd_{e.id}"), + Button.inline("Delete Msg", data=f"del_{e.id}")], + [Button.switch_inline( "New", query=f"wspr {logi.username or logi.id}", same_peer=True - ), + )] ] us = logi.username or logi.first_name sur = await e.builder.article( From cc4c616b4af0772937ee269703e2adf7c66be556 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 07:17:27 +0000 Subject: [PATCH 011/182] pylint: auto fixes --- plugins/_wspr.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/_wspr.py b/plugins/_wspr.py index 48f00145af..19323558ca 100644 --- a/plugins/_wspr.py +++ b/plugins/_wspr.py @@ -88,11 +88,15 @@ async def _(e): ) return await e.answer([sur]) button = [ - [Button.inline("Secret Msg", data=f"dd_{e.id}"), - Button.inline("Delete Msg", data=f"del_{e.id}")], - [Button.switch_inline( - "New", query=f"wspr {logi.username or logi.id}", same_peer=True - )] + [ + Button.inline("Secret Msg", data=f"dd_{e.id}"), + Button.inline("Delete Msg", data=f"del_{e.id}"), + ], + [ + Button.switch_inline( + "New", query=f"wspr {logi.username or logi.id}", same_peer=True + ) + ], ] us = logi.username or logi.first_name sur = await e.builder.article( From 0a223d29a2129304d5806e9162bf4214455869f6 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 12:49:59 +0530 Subject: [PATCH 012/182] Update mediatools.py --- plugins/mediatools.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/mediatools.py b/plugins/mediatools.py index 3ed6d30137..6510d5a2ac 100644 --- a/plugins/mediatools.py +++ b/plugins/mediatools.py @@ -123,18 +123,18 @@ async def rotate_(ult): reply = await ult.get_reply_message() msg = await ult.eor(get_string("com_1")) photo = reply.game.photo if reply.game else None - if photo or reply.photo or reply.sticker: - media = await ult.client.download_media(photo or reply) - img = cv2.imread(media) - new_ = rotate_image(img, match) - file = "ult.png" - cv2.imwrite(file, new_) - elif reply.video: + if reply.video: media = await reply.download_media() file = f"{media}.mp4" await bash( f'ffmpeg -i "{media}" -c copy -metadata:s:v:0 rotate={match} "{file}" -y' ) + elif photo or reply.photo or reply.sticker: + media = await ult.client.download_media(photo or reply) + img = cv2.imread(media) + new_ = rotate_image(img, match) + file = "ult.png" + cv2.imwrite(file, new_) else: return await msg.edit("`Unsupported Media..\nReply to Photo/Video`") if os.path.exists(file): From 7feed938f30bada3a851fa964ea211b24d943ede Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 12:54:59 +0530 Subject: [PATCH 013/182] Update logo.py --- plugins/logo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/logo.py b/plugins/logo.py index 49b949bb3a..8005d28483 100644 --- a/plugins/logo.py +++ b/plugins/logo.py @@ -45,7 +45,7 @@ async def logo_gen(event): bg_ = await temp.download_media() if not bg_: if event.client._bot: - SRCH = ["blur background", "background", "neon lights", "wallpaper"] + SRCH = ["blur background", "background", "neon lights", "nature", "abstract", "space", "3d render"] res = await unsplashsearch(random.choice(SRCH), limit=1) bg_ = await download_file(res[0], "resources/downloads/logo.png") else: From e31079beaed6ce9495f6fcf7a82af6255d8e11ce Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 07:25:55 +0000 Subject: [PATCH 014/182] pylint: auto fixes --- plugins/logo.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/logo.py b/plugins/logo.py index 8005d28483..ab0dd47c7f 100644 --- a/plugins/logo.py +++ b/plugins/logo.py @@ -45,7 +45,15 @@ async def logo_gen(event): bg_ = await temp.download_media() if not bg_: if event.client._bot: - SRCH = ["blur background", "background", "neon lights", "nature", "abstract", "space", "3d render"] + SRCH = [ + "blur background", + "background", + "neon lights", + "nature", + "abstract", + "space", + "3d render", + ] res = await unsplashsearch(random.choice(SRCH), limit=1) bg_ = await download_file(res[0], "resources/downloads/logo.png") else: From 56f475498fb1d5aca84fc2af47ea19d0166ec96e Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 13:00:05 +0530 Subject: [PATCH 015/182] Update tools.py --- plugins/tools.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/tools.py b/plugins/tools.py index 030ca7cb59..6ea181ca37 100644 --- a/plugins/tools.py +++ b/plugins/tools.py @@ -38,6 +38,7 @@ """ import glob import io +import secrets import os from asyncio.exceptions import TimeoutError as AsyncTimeout @@ -421,9 +422,9 @@ async def magic(event): except IndexError: return await event.eor("`Provide url to turn into tiny...`") match, id_ = match.split(), None - data = {} - if len(match) > 1: - data["id"] = match[1] + data = { + "id": match[1] if len(match) > 1 else secrets.token_urlsafe(6) + } url = match[0] data["link"] = url data = await async_searcher( From 72936ce6ac83615b55f934e3959c0bd376e8c85d Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 07:30:51 +0000 Subject: [PATCH 016/182] pylint: auto fixes --- plugins/tools.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/tools.py b/plugins/tools.py index 6ea181ca37..95b2fca59c 100644 --- a/plugins/tools.py +++ b/plugins/tools.py @@ -38,8 +38,8 @@ """ import glob import io -import secrets import os +import secrets from asyncio.exceptions import TimeoutError as AsyncTimeout try: @@ -422,9 +422,7 @@ async def magic(event): except IndexError: return await event.eor("`Provide url to turn into tiny...`") match, id_ = match.split(), None - data = { - "id": match[1] if len(match) > 1 else secrets.token_urlsafe(6) - } + data = {"id": match[1] if len(match) > 1 else secrets.token_urlsafe(6)} url = match[0] data["link"] = url data = await async_searcher( From ff01af68b1535ac8251c1d2b2790c3a7dd384de9 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 13:26:31 +0530 Subject: [PATCH 017/182] Update logo.py --- plugins/logo.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/logo.py b/plugins/logo.py index ab0dd47c7f..c647fb86e2 100644 --- a/plugins/logo.py +++ b/plugins/logo.py @@ -18,7 +18,10 @@ import random from telethon.tl.types import InputMessagesFilterPhotos - +try: + from PIL import Image +except ImportError: + Image = None from pyUltroid.fns.misc import unsplashsearch from pyUltroid.fns.tools import LogoHelper @@ -56,6 +59,11 @@ async def logo_gen(event): ] res = await unsplashsearch(random.choice(SRCH), limit=1) bg_ = await download_file(res[0], "resources/downloads/logo.png") + newimg = "resources/downloads/unsplash-temp.jpg" + img_ = Image.open(bg_) + img_.resize((5000, 5000)).save(newimg) + os.remove(bg_) + bg_ = newimg else: pics = [] async for i in event.client.iter_messages( From 1964b9f4b216e9f2aa98377a4cf8119605d14f0d Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 07:57:26 +0000 Subject: [PATCH 018/182] pylint: auto fixes --- plugins/logo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/logo.py b/plugins/logo.py index c647fb86e2..1e81994156 100644 --- a/plugins/logo.py +++ b/plugins/logo.py @@ -18,10 +18,11 @@ import random from telethon.tl.types import InputMessagesFilterPhotos + try: - from PIL import Image + from PIL import Image except ImportError: - Image = None + Image = None from pyUltroid.fns.misc import unsplashsearch from pyUltroid.fns.tools import LogoHelper From 71367e72c20d4f8b9a0da858ab4db74a1b15f349 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 13:38:19 +0530 Subject: [PATCH 019/182] Update _chatactions.py --- plugins/_chatactions.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/plugins/_chatactions.py b/plugins/_chatactions.py index 255650e86f..f320aa21ef 100644 --- a/plugins/_chatactions.py +++ b/plugins/_chatactions.py @@ -196,7 +196,7 @@ async def DummyHandler(ult): @ultroid_bot.on(events.NewMessage(incoming=True)) async def chatBot_replies(e): sender = await e.get_sender() - if not isinstance(sender, types.User): + if not isinstance(sender, types.User) or sender.bot: return key = udB.get_key("CHATBOT_USERS") or {} if e.text and key.get(e.chat_id) and sender.id in key[e.chat_id]: @@ -206,11 +206,9 @@ async def chatBot_replies(e): await asyncio.sleep(sleep) await e.reply(msg) chat = await e.get_chat() - if e.is_group and not sender.bot: - if sender.username: + if e.is_group and sender.username: await uname_stuff(e.sender_id, sender.username, sender.first_name) - elif e.is_private and not sender.bot: - if chat.username: + elif e.is_private and chat.username: await uname_stuff(e.sender_id, chat.username, chat.first_name) if detector and is_profan(e.chat_id) and e.text: x, y = detector(e.text) @@ -220,11 +218,11 @@ async def chatBot_replies(e): @ultroid_bot.on(events.Raw(types.UpdateUserName)) async def uname_change(e): - await uname_stuff(e.user_id, e.username, e.first_name) + await uname_stuff(e.user_id, e.usernames[0] if e.usernames else None, e.first_name) async def uname_stuff(id, uname, name): - if udB.get_key("USERNAME_LOG") == "True": + if udB.get_key("USERNAME_LOG"): old_ = udB.get_key("USERNAME_DB") or {} old = old_.get(id) # Ignore Name Logs From 7f8fa9f8a15d9155e0e4e96c1b795ddfbbb4fa7f Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 08:09:15 +0000 Subject: [PATCH 020/182] pylint: auto fixes --- plugins/_chatactions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/_chatactions.py b/plugins/_chatactions.py index f320aa21ef..16fc7b6cc2 100644 --- a/plugins/_chatactions.py +++ b/plugins/_chatactions.py @@ -207,9 +207,9 @@ async def chatBot_replies(e): await e.reply(msg) chat = await e.get_chat() if e.is_group and sender.username: - await uname_stuff(e.sender_id, sender.username, sender.first_name) + await uname_stuff(e.sender_id, sender.username, sender.first_name) elif e.is_private and chat.username: - await uname_stuff(e.sender_id, chat.username, chat.first_name) + await uname_stuff(e.sender_id, chat.username, chat.first_name) if detector and is_profan(e.chat_id) and e.text: x, y = detector(e.text) if y: From e918b7229ddc71b18d1578754fbe0a51207eac08 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 13:54:13 +0530 Subject: [PATCH 021/182] values filter --- plugins/utilities.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index 7265ca8ec6..ef5d0eb81a 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -512,11 +512,13 @@ async def _(event): else: msg = event reply_to_id = event.message.id - if match and hasattr(msg, match): - msg = getattr(msg, match) + if match and msg := getattr(msg, match.split()[0], None): if hasattr(msg, "to_json"): try: - msg = json_parser(msg.to_json(ensure_ascii=False), indent=1) + msg = msg.to_json(ensure_ascii=False, indent=1) + if "-t" in match: + data = json_parser(tjson) + msg = {key: data[key] for key in data.keys() if data[key]} except Exception as e: LOGS.exception(e) msg = str(msg) From a8c08b5c44dedeff393f69ad8ef8e4ed9aab05f5 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 13:57:17 +0530 Subject: [PATCH 022/182] Update utilities.py --- plugins/utilities.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index ef5d0eb81a..a018955f79 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -512,7 +512,8 @@ async def _(event): else: msg = event reply_to_id = event.message.id - if match and msg := getattr(msg, match.split()[0], None): + if match and hasattr(msg, match.split()[0]): + msg = getattr(msg, match.split()[0]) if hasattr(msg, "to_json"): try: msg = msg.to_json(ensure_ascii=False, indent=1) From 48f1459cb9e5e3b9b19d6e3213294a46c16a3e5c Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 14:00:33 +0530 Subject: [PATCH 023/182] Update utilities.py --- plugins/utilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index a018955f79..b5cc7b6d95 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -518,7 +518,7 @@ async def _(event): try: msg = msg.to_json(ensure_ascii=False, indent=1) if "-t" in match: - data = json_parser(tjson) + data = json_parser(msg) msg = {key: data[key] for key in data.keys() if data[key]} except Exception as e: LOGS.exception(e) From 2c8dd2f6d82aa2b530200bbc3ca4df3a0174d40d Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 14:06:11 +0530 Subject: [PATCH 024/182] Update utilities.py --- plugins/utilities.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index b5cc7b6d95..6725d47e1f 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -517,14 +517,17 @@ async def _(event): if hasattr(msg, "to_json"): try: msg = msg.to_json(ensure_ascii=False, indent=1) - if "-t" in match: - data = json_parser(msg) - msg = {key: data[key] for key in data.keys() if data[key]} except Exception as e: LOGS.exception(e) msg = str(msg) else: msg = json_parser(msg.to_json(), indent=1) + if "-t" in match: + try: + data = json_parser(msg) + msg = json_parser({key: data[key] for key in data.keys() if data[key]}, indent=1) + except Exception as er: + pass if len(msg) > 4096: with io.BytesIO(str.encode(msg)) as out_file: out_file.name = "json-ult.txt" From 76a406d517f840d045adfb95b7780f22bf889f08 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 08:37:11 +0000 Subject: [PATCH 025/182] pylint: auto fixes --- plugins/utilities.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index 6725d47e1f..2c524b98d2 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -523,11 +523,13 @@ async def _(event): else: msg = json_parser(msg.to_json(), indent=1) if "-t" in match: - try: - data = json_parser(msg) - msg = json_parser({key: data[key] for key in data.keys() if data[key]}, indent=1) - except Exception as er: - pass + try: + data = json_parser(msg) + msg = json_parser( + {key: data[key] for key in data.keys() if data[key]}, indent=1 + ) + except Exception: + pass if len(msg) > 4096: with io.BytesIO(str.encode(msg)) as out_file: out_file.name = "json-ult.txt" From 35d4cf418bcb3cbe4c62b8a2cb0efd4b478275d7 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 15:52:17 +0530 Subject: [PATCH 026/182] Update utilities.py --- plugins/utilities.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index 2c524b98d2..cb25d9abd2 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -73,6 +73,7 @@ from telethon.errors.rpcerrorlist import ChatForwardsRestrictedError, UserBotError from telethon.events import NewMessage +from telethon.tl.types import TLObject from telethon.tl.custom import Dialog from telethon.tl.functions.channels import ( GetAdminedPublicChannelsRequest, @@ -519,7 +520,10 @@ async def _(event): msg = msg.to_json(ensure_ascii=False, indent=1) except Exception as e: LOGS.exception(e) - msg = str(msg) + try: + msg = TLObject.stringify(msg) + except Exception: + msg = str(msg) else: msg = json_parser(msg.to_json(), indent=1) if "-t" in match: From f7d56c699935f62dc3254e4783d9213ca15f77f3 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 10:23:18 +0000 Subject: [PATCH 027/182] pylint: auto fixes --- plugins/utilities.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index cb25d9abd2..774c7109d4 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -73,7 +73,6 @@ from telethon.errors.rpcerrorlist import ChatForwardsRestrictedError, UserBotError from telethon.events import NewMessage -from telethon.tl.types import TLObject from telethon.tl.custom import Dialog from telethon.tl.functions.channels import ( GetAdminedPublicChannelsRequest, @@ -83,7 +82,15 @@ from telethon.tl.functions.contacts import GetBlockedRequest from telethon.tl.functions.messages import AddChatUserRequest, GetAllStickersRequest from telethon.tl.functions.users import GetFullUserRequest -from telethon.tl.types import Channel, Chat, InputMediaPoll, Poll, PollAnswer, User +from telethon.tl.types import ( + Channel, + Chat, + InputMediaPoll, + Poll, + PollAnswer, + TLObject, + User, +) from telethon.utils import get_peer_id from . import ( From 8787cfa60b6178b1e2207de82ce6890b6c982b54 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 19:28:05 +0530 Subject: [PATCH 028/182] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8aa317e5af..9ca5b3894f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Important Requirements here. -https://github.com/New-dev0/Telethon/archive/crashjob.zip +https://github.com/New-dev0/Telethon/archive/platy.zip python-decouple python-dotenv From 829ac0577498564f575c549f0889ab27dd13f638 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Mon, 21 Nov 2022 20:02:20 +0530 Subject: [PATCH 029/182] Update utilities.py --- plugins/utilities.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index 774c7109d4..3e7317e048 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -522,15 +522,16 @@ async def _(event): reply_to_id = event.message.id if match and hasattr(msg, match.split()[0]): msg = getattr(msg, match.split()[0]) - if hasattr(msg, "to_json"): - try: - msg = msg.to_json(ensure_ascii=False, indent=1) - except Exception as e: - LOGS.exception(e) try: - msg = TLObject.stringify(msg) + if hasattr(msg, "to_json"): + msg = msg.to_json(ensure_ascii=False, indent=1) + elif hasattr(msg, "to_dict"): + msg = json_parser(msg.to_dict(), indent=1) + else: + msg = TLObject.stringify(msg) except Exception: - msg = str(msg) + pass + msg = str(msg) else: msg = json_parser(msg.to_json(), indent=1) if "-t" in match: From ed2830d8ae3de39b3c9e91504bd97e60707a550b Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 21 Nov 2022 14:33:22 +0000 Subject: [PATCH 030/182] pylint: auto fixes --- plugins/utilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/utilities.py b/plugins/utilities.py index 3e7317e048..3ea9c46343 100644 --- a/plugins/utilities.py +++ b/plugins/utilities.py @@ -524,7 +524,7 @@ async def _(event): msg = getattr(msg, match.split()[0]) try: if hasattr(msg, "to_json"): - msg = msg.to_json(ensure_ascii=False, indent=1) + msg = msg.to_json(ensure_ascii=False, indent=1) elif hasattr(msg, "to_dict"): msg = json_parser(msg.to_dict(), indent=1) else: From 0cff1c575e78946d453adceab81a655a82c45950 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Fri, 25 Nov 2022 08:59:17 +0530 Subject: [PATCH 031/182] Fix rmbg --- pyUltroid/fns/misc.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pyUltroid/fns/misc.py b/pyUltroid/fns/misc.py index 31dc39e221..f40b72c449 100644 --- a/pyUltroid/fns/misc.py +++ b/pyUltroid/fns/misc.py @@ -35,11 +35,9 @@ from .tools import async_searcher, check_filename, json_parser try: - import aiofiles import aiohttp except ImportError: aiohttp = None - aiofiles = None try: from instagrapi import Client @@ -184,9 +182,8 @@ async def ReTrieveFile(input_file_name): return False, (await out.json()) name = check_filename("ult-rmbg.png") - file = await aiofiles.open(name, "wb") - await file.write(await out.read()) - await file.close() + with open(name, "wb") as file: + file.write(await out.read()) return True, name From 393acdfd5d958f806914564b0a226c262798164b Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Tue, 29 Nov 2022 11:00:15 +0530 Subject: [PATCH 032/182] Update devtools.py --- plugins/devtools.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/devtools.py b/plugins/devtools.py index f128c579c8..50b73207d9 100644 --- a/plugins/devtools.py +++ b/plugins/devtools.py @@ -152,6 +152,8 @@ def _parse_eval(value=None): return json_parser(value, indent=1) except BaseException: pass + elif isinstance(value, list): + return str([_parse_eval(child) for child in value]) return str(value) From 1eebabbca90e40ca0fa9000addbb996dc7a90b01 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Tue, 29 Nov 2022 11:05:52 +0530 Subject: [PATCH 033/182] Update devtools.py --- plugins/devtools.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/devtools.py b/plugins/devtools.py index 50b73207d9..a112705d2f 100644 --- a/plugins/devtools.py +++ b/plugins/devtools.py @@ -153,7 +153,13 @@ def _parse_eval(value=None): except BaseException: pass elif isinstance(value, list): - return str([_parse_eval(child) for child in value]) + newlist = "[" + for index, child in enumerate(value): + newlist += "\n " + str(_parse_eval(child)) + if index < len(value) - 1: + newlist += "," + newlist += "\n]" + return newlist return str(value) From 0cd7025651ccb573cf9865cafebe1f41fbf85463 Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 5 Dec 2022 11:40:01 +0530 Subject: [PATCH 034/182] Why not? --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9ca5b3894f..9d62d1cc13 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ # Important Requirements here. -https://github.com/New-dev0/Telethon/archive/platy.zip +#https://github.com/New-dev0/Telethon/archive/platy.zip +https://github.com/buddhhu/Telethon-Patch/archive/refs/heads/main.zip python-decouple python-dotenv From cd9ef75b2b3e387170cb5a9c50c41fd49e4327ba Mon Sep 17 00:00:00 2001 From: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Date: Mon, 5 Dec 2022 11:48:59 +0530 Subject: [PATCH 035/182] Update __main__.py --- pyUltroid/__main__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyUltroid/__main__.py b/pyUltroid/__main__.py index 56a4d607e5..5a1f3c0d35 100644 --- a/pyUltroid/__main__.py +++ b/pyUltroid/__main__.py @@ -24,6 +24,9 @@ def main(): ) from .startup.loader import load_other_plugins + # Do not save session while bot is running. (Fixes session generator) + [delattr(sess, "save") for sess in [asst.session, ultroid_bot.session] if hasattr(sess, "save")] + # Option to Auto Update On Restarts.. if ( udB.get_key("UPDATE_ON_RESTART") From 6979fcb985a8482f868074b2c09f32d0cddc0765 Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Tue, 6 Dec 2022 22:05:41 +0530 Subject: [PATCH 036/182] Update __main__.py --- pyUltroid/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyUltroid/__main__.py b/pyUltroid/__main__.py index 5a1f3c0d35..d75ee4ef9a 100644 --- a/pyUltroid/__main__.py +++ b/pyUltroid/__main__.py @@ -25,7 +25,7 @@ def main(): from .startup.loader import load_other_plugins # Do not save session while bot is running. (Fixes session generator) - [delattr(sess, "save") for sess in [asst.session, ultroid_bot.session] if hasattr(sess, "save")] + # [delattr(sess, "save") for sess in [asst.session, ultroid_bot.session] if hasattr(sess, "save")] # Option to Auto Update On Restarts.. if ( From 4435f6d75402dfb70caae3e4edf95b3940cb0281 Mon Sep 17 00:00:00 2001 From: Dark Date: Mon, 12 Dec 2022 21:41:22 +0800 Subject: [PATCH 037/182] Update malay lang and change code to "ms" (#395) --- strings/strings/ms.yml | 647 +++++++++++++++++++++++++++++++++++++++++ strings/strings/my.yml | 573 ------------------------------------ 2 files changed, 647 insertions(+), 573 deletions(-) create mode 100644 strings/strings/ms.yml delete mode 100644 strings/strings/my.yml diff --git a/strings/strings/ms.yml b/strings/strings/ms.yml new file mode 100644 index 0000000000..5785495060 --- /dev/null +++ b/strings/strings/ms.yml @@ -0,0 +1,647 @@ +name: Malay +natively: Bahasa Melayu + +authors: + - yuno74 + - DarkBeamerYT + +# pyUltroid +py_c1: "Sesi string yang salah. Salin tampal dengan betul!" +py_c2: "Tiada sesi string yang dijumpai. Berhenti..." +py_c3: "VC_SESSION anda telah tamat tempoh. Membuang VC_SESSION daripada redis...\nMemperbaharuikan/Ubahkan nya untuk mengguna Perbualan Suara/Video daripada akaun VC..." +py_d1: "`Anda tidak dapat mengguna perintah ini buat masa kini. Hubungi pemilik bot ini!`" +py_d2: "`Sudo User Penuh Diperlukan...`" +py_d3: "`Gunakan ini di dalam group/channel.`" +py_d4: "**⚠️ Terhad kepada Developer sahaja!**\nJika anda tahu perkara ini lakukan, dan ingin meneruskan, gunakan\n`{}setdb I_DEV True`.\n\nIni mungkin berbahaya." +py_d5: "`Saya bukanlah admin.`" +py_d6: "Perintah ini tidak dapat digunakan oleh bot!" +py_d7: "Perbualan sudah dihidupkan, sila tunggu kemudian dan cuba lagi." +py_d8: "`Menghantar media atau pelekat tidak dibenarkan dalam group ini.`" + +# commons +com_1: "`Memproses...`" +com_2: "`Mencari...`" +com_3: "`Input tidak sah`" +com_4: "`Media tidak disokong..`" +com_5: "Sedang muat turun..." +com_6: "Sedang muat naik..." +com_7: "`Ada sesuatu yang tidak kena.`" + +#chatactions +can_1: "#GBanned_User telah menyertai.\n\n**Pengguna** : {}\n**Sebab**: {}\n\n`Pengguna telah diban.`" +can_2: "∆ #UsernameUpdate\n\n@{} telah menukar usernamenya kepada @{}" +can_3: "∆ #UsernameUpdate\n\n{} telah membuang usernamenya. (@{})" +can_4: "∆ Username #UsernameUpdate\n\n{} yang baharu --> @{}" + +# help +help_1: "`{}` bukan plugin yang sah!" +help_2: "Bot tidak bertindak balas terhadap pertanyaan sebaris.\nDicadangkan untuk menggunakan `{}restart`" +help_3: "`Sila hidupkan mod sebaris untuk bot anda dari` @BotFather." +help_4: "• Plugins" +help_5: "Tambahan •" +help_6: "••Voice Chat" +help_7: "Tambahan Inline••" +help_8: "⚙️ Alatan Pemilik" +help_9: "Tetapan ⚙️" +help_10: "••ᴛᴜᴛᴜᴘ••" +help_11: "Nama Plugin-{}\n✘ Perintah Tersedia -\n\n" +help_12: "Voice Chat Bot tidak aktif! Gunakan .setdb VCBOT True untuk mengaktifkan!" +help_13: "Gunakan '{}setdb ADDONS True' untuk memuatkan tambahan yang sah" + +# userlogs +userlogs_1: "Chat Id yang anda telah letak di dalam Tag Logger salah , Tolong memperbetulkannya." +userlogs_2: "Tambah saya ke dalam chat Tag Logger anda untuk menlog tags" +userlogs_3: "Tinggalkan Chat" +userlogs_4: "Bot Pembantu Anda Tidak Dapat Menghantar Mesej di dalam chat tag log.\nTambahkannya untuk mendapat Tag Logs anda.." +userlogs_5: "Tinggalkan `{}`" + +# admintools +adm_1: "`Saya tidak dapat teka siapakah dia!`" +adm_2: "`Hmm.. Nampaknya saya tiada hak di sini!`" +adm_3: "`Berikan lah masa juga..`" +pro_1: "`Balas kepada pengguna untuk mempromosikannya!`" +pro_2: "{} `sekarang lah admin {} dengan tajuk {}.`" +de_1: "`Balas kepada pengguna untuk menurunkan pangkatnya!`" +de_2: "{} `bukan lagi admin di dalam {}`" +ban_1: "`Balas kepada pengguna atau berikan username untuk melarangnya!`" +ban_2: " `Maaf, tapi saya tidak boleh melarang developer saya 😂`" +ban_3: "`Saya tidak mempunyai hak untuk melarang orang.`" +ban_4: "{} **telah dilarang oleh** {} **di dalam** `{}`" +ban_5: "\n**Sebab**: `{}`" +tban_1: "`Balas kepada seseorang atau memberi ID nya...`" +tban_2: "`Berjaya melarang` {} `di dalam {} kerana {}`" +unban_1: "`Balas kepada pengguna atau berikan username untuk unban nya!`" +unban_2: "`Saya tidak mempunyai hak untuk unban orang.`" +unban_3: "{} **telah diban oleh** {} **di dalam** `{}`" +kick_1: "`Saya tidak mempunyai hak untuk mengeluarkan pengguna.`" +kick_2: " `Maaf, tapi saya tidak boleh mengeluarkan developer saya`😂" +kick_3: "`Saya tidak boleh mengeluarkannya...`" +kick_4: "{} **telah dikeluarkan oleh** {} **di dalam** `{}`" +pin_1: "`Balas mesej untuk menyematkannya!`" +pinned_1: "Tiada mesej yang disemat dijumpa!" +pinned_2: "Mesej yang disemat di dalam chat semasa adalah di [sini]({})." +unpin_1: "Sama ada membalas mesej, atau gunakan `{}unpin all`" +listpin_1: "Tiada mesej yang disematkan dalam group ini!" +purge_1: "`Balas kepada mesej sebagai permulaan purge.`" +purgeall_1: "`Balas kepada mesej seseorang untuk dipadamkan.`" +purgeall_2: "Berjaya purge semua mesej daripada {}" + +# akinator +aki_1: "Permainan telah ditamatkan...." +aki_2: "Mulakan Permainan" +aki_3: "Masa tamat !" + +# antiflood +antiflood_1: "`Tetapan Antiflood telah disable`" +antiflood_2: "`Tiada had flood di dalam chat ini.`" +antiflood_3: "`Anda telah dimute.`" +antiflood_4: "`Berjaya mengemas kini tetapan antiflood kepada {} dalam sembang ini.`" +antiflood_5: "`Had flood di dalam chat ini adalah {}.`" + +# ascii +ascii_1: "`Balas kepada imej.`" +ascii_2: "`Sedang menukar kepada html...`" + +# audiotools +audiotools_1: "Balas kepada audio atau video.." +audiotools_2: "Berjaya muat turun, sekarang menukar kepada voice" +audiotools_3: "`Beri masa dalam format untuk trim`" +audiotools_4: "`Data yang salah`" +audiotools_5: "`Mencuba untuk muat turun...`" +audiotools_6: "`Masa trim yang salah`" +audiotools_7: "Audio telah ditrim daripada `{}` kepada `{}`" +audiotools_8: "`Balas kepada fail video..`" +audiotools_9: "`Audio tidak dijumpai...`" +audiotools_10: "`Audio yang telah diekstrak daripada Video...`" + +# asstcmd +asstcmd_1: "`Gunakan perintah ini dengan Balas dan perkataan untuk menggunakan perintah.`" +asstcmd_2: "`Beri saya perintah yang anda mahu buang.`" +asstcmd_3: "Berjaya Perintah: `/{}` Dibuang." +asstcmd_4: "Berjaya Perintah : `/{}` disimpan." +asstcmd_5: "Tiada perintah dijumpa" +asstcmd_6: "**SEMUA PERINTAH PEMBANTU**\n\n" + +# autocorrect +act_1: "Ciri AUTOCORRECT Hidup" +act_2: "Ciri AUTOCORRECT Tutup" + +# autopic +autopic_1: "`Berikan sesuatu untuk dicari...`" +autopic_2: "Tiada keputusan ditemui untuk `{}`" +autopic_3: "Mempunyai koleksi `{}` berkaitan dengan carian anda !\nMemulakan Autopic !" +autopic_4: "AUTOPIC tidak digunakan !!" +autopic_5: "AUTOPIC Berhenti!" + +# inline +inline_1: "[ʙᴀɴᴛᴜᴀɴ ᴜʟᴛʀᴏɪᴅ](t.me/UltroidSupportChat)\n\n**ᴍᴇɴᴜ ʙᴀɴᴛᴜᴀɴ ᴅᴀʀɪᴘᴀᴅᴀ {}.\n\nPʟᴜɢɪɴs ~ {}**" +inline_2: "[ʙᴀɴᴛᴜᴀɴ ᴜʟᴛʀᴏɪᴅ](t.me/UltroidSupportChat)\n\n**ᴍᴇɴᴜ ʙᴀɴᴛᴜᴀɴ ᴅᴀʀɪᴘᴀᴅᴀ {}.\n\nAᴅᴅᴏɴs ~ {}**" +inline_3: "[ʙᴀɴᴛᴜᴀɴ ᴜʟᴛʀᴏɪᴅ](t.me/UltroidSupportChat)\n\n**ᴍᴇɴᴜ ʙᴀɴᴛᴜᴀɴ ᴅᴀʀɪᴘᴀᴅᴀ {}.\n\nAᴅᴅᴏɴs ~ {}\n\nBuat **`.setdb ADDONS True`** ᴅᴀɴ ʀᴇsᴛᴀʀᴛ ᴜɴᴛᴜᴋ ᴍᴇɴᴅᴀᴘᴀᴛ ᴀᴅᴅᴏɴs..**" +inline_4: "** Bᴏᴛ {}\n\nᴍᴇɴᴜ ᴜᴛᴀᴍᴀ\n\nPʟᴜɢɪɴs ~ {}\nAᴅᴅᴏɴs ~ {}\nᴊᴜᴍʟᴀʜ ᴘᴇʀɪɴᴛᴀʜ ~ {}**" +inline_5: "**Mᴇɴᴜ ᴛᴇʟᴀʜ ᴅɪᴛᴜᴛᴜᴘ**" +inline_6: "**Menu Bantuan Voice Chat untuk {}**\n**Perintah yang ada:** `{}`\n\n@TeamUltroid" +inline_7: "Taip .help {} untuk mendapatkan senarai perintah." +inline_8: "Klik butang di bawah untuk mengemaskini!" +inline_9: "Anda Sudah Pada Versi Terkini" + +# tagnotif +tagnot_1: "{} telah tag anda di dalam {}\n\n```{}```\n\n[📨 Mesej 📨]({})" +tagnot_2: "{} telah tag anda di dalam {}\n\n [📨 Mesej 📨]({})" + +# whisper +wspr_1: "@{} mesej rahsia untuk anda.\nPadamkan mesej anda selepas membaca.\nAtau mesej seterusnya tidak akan dikemas kini." +wspr_2: "Mesej dipadam" +wspr_3: "Tambah beberapa id atau username juga" +wspr_4: "User {} Tidak Dijumpai\nCari Lagi" +wspr_5: "Anda tidak boleh melakukan ini" + +# afk +afk_1: "`Tidak lagi Afk\n\nTidak ada untuk ~ {}`" +afk_2: "#AFK\nSet mod AFK kepada **tidak aktif**\n +Tidak ada untuk `{}`" +afk_3: "`Saya sedang AFK.\nTerakhir dilihat {} lepas.`\n\n**Sebab:** `{}`" +afk_4: "`Saya sedang AFK.\n\nTerakhir dilihat {} lepas.`" +afk_5: "`Saya akan pergi AFK.`\n\n**Sebab:** `{}`" +afk_6: "Saya akan pergi AFK." + +# bot +bot_1: "Hey, I am alive." +bot_2: "Stats" +bot_3: "Repo" +bot_4: "Support" +bot_5: "• `Restarting...`" +alive_1: "**The Ultroid Userbot...**\n\n**{}**\n\n✵ **Owner** - `{}`\n✵ **Ultroid** - `{}`\n✵ **Py-Ultroid** - `{}`\n✵ **UpTime** - `{}`\n✵ **Python** - `{}`\n✵ **Telethon** - `{}`\n✵ **Branch** - `{}`" +log: "**Heroku** Ultroid Logs.\nPasted [here]({}) too!" +ping: "**Pong !!** `{}ms`\n**Uptime** - `{}`" +usage: "**⚙️ Dyno Usage ⚙️**:\n\n-> **Dyno usage for** `{}`:\n • **{}h** **{}m |** `[{}%]`\n-> **Dyno hours quota remaining this month**:\n • **{}h** **{}m |** `[{}%]`\n\n**Total Disk Space**: `{}`\n**Used**: `{}`\n**Free**: `{}`\n\n**📊 Data Usage 📊**\n**Upload**: `{}`\n**Down**: `{}`\n\n**CPU**: `{}%`\n**RAM**: `{}%`\n**DISK**: `{}%`" +usage_simple: "**Total Disk Space**: `{}`\n**Used**: `{}`\n**Free**: `{}`\n\n**📊 Data Usage 📊**\n**Upload**: `{}`\n**Down**: `{}`\n\n**CPU**: `{}%`\n**RAM**: `{}%`\n**DISK**: `{}%`" +shutdown: "GoodBye {}.\n`Shutting down...`" + +# blacklist +blk_1: "`Give the word to blacklist..`" +blk_2: "Done : `{}` Blacklisted here." +blk_3: "`Give the word to remove from blacklist..`" +blk_4: "Done : `{}` Removed from Blacklist." +blk_5: "Blacklist Found In This Chats Are :\n\n" +blk_6: "No Blacklist word Found Here" + +# broadcast +bd_1: "`Adding to db...`" +bd_2: "`Trying to add all admin channels to db...`" +bd_3: "**Done.**\nChats already in Database: {}\nNewly Added: {}" +bd_4: "Channels added!" +bd_5: "`Added to database!`" +bd_6: "`Channel is already is database!`" +bd_7: "Removed from database" +bd_8: "`Removing...`" +bd_9: "Channel is already removed from database. " + +# calculator +calc_1: "• Kalkulator Inline Ultroid •" +calc_2: "Buka Kalkulator Lagi" + +# channel hacks +cha_1: "invalid Channel given" +cha_2: "Source added succesfully" +cha_3: "Source channel already added" +cha_4: "Source database cleared." +cha_5: "Source removed from database" +cha_6: "Source channel is already removed from database." +cha_7: "Destination channels in database:" +cha_8: "Source channels in database:" + +# carbon +carbon_1: "Dikarbonkan oleh [{}](tg://user?id={})" +carbon_2: "`Balas kepada mesej atau fail yang boleh dibaca..`" +carbon_3: "`Bagi warna khas untuk membuat karbon...`" + +# chat_bot +chab_1: "Reply to a user or give me his id/username to add an AI ChatBot!" +chab_2: "`No user has AI added.`" +chab_3: "**Total List Of AI Enabled Users In This Chat :**\n\n" + +# chats +chats_1: "`Cant delete this chat.`" +chats_2: "`I m not an admin`" +chats_3: "#Deleted\nDeleted {}" +chats_4: "Your [{}]({}) Group Made Boss!" +chats_5: "Join @TeamUltroid" +chats_6: "Your {} Group/Channel Has been made Boss!" + +# clean action +clan_1: "Added Clean Action Setting For this Chat" +clan_2: "Removed Clean Action Setting For this Chat" +clan_3: "`Invalid ID`" +clan_4: "`No Chat Added`" +clan_5: "Clean Actions are already enabled in this Chat." + +# converter +cvt_1: "`Reply to any media/Document.`" +cvt_2: "Give The name and extension of file" +cvt_3: "`Reply to media..`" +cvt_4: "`Reply to img or file with thumbnail.`" +cvt_5: "Replied file has no thumbnail.`" +cvt_6: "Added [This]({}) As Your Custom Thumbnail" +cvt_7: "`Reply to a readable file`" +cvt_8: "`Not A Readable File.`" + +# eventsofday +eod_1: "🎊 **Events of the Day**\n\n" +eod_2: "• **Events for {}/2022**\n\n" + +# core +core_1: "Module Found" +core_2: "{}.py use .paste to paste in neko and raw.." +core_3: "Search Again..?" +core_4: "Module {} Found" +core_5: "{}.py use .paste to paste in neko and raw.." +core_6: "Module {}.py Not Found" +core_7: "No Such Module" +core_8: "No Module Named {}.py" +core_9: "`Give name of plugin which u want to unload`" +core_10: "**Uɴʟᴏᴀᴅᴇᴅ** `{}` **Sᴜᴄᴄᴇssғᴜʟʟʏ.**" +core_11: "**Yᴏᴜ Cᴀɴ'ᴛ Uɴʟᴏᴀᴅ Oғғɪᴄɪᴀʟ Pʟᴜɢɪɴs**" +core_12: "**Nᴏ Pʟᴜɢɪɴ Nᴀᴍᴇᴅ** `{}`" +core_13: "`Give name of plugin which u want to uninstall`" +core_14: "**Uɴɪɴsᴛᴀʟʟᴇᴅ** `{}` **Sᴜᴄᴄᴇssғᴜʟʟʏ.**" +core_15: "**Yᴏᴜ Cᴀɴ'ᴛ Uɴɪɴsᴛᴀʟʟ Oғғɪᴄɪᴀʟ Pʟᴜɢɪɴs**" +core_16: "`Give name of plugin which u want to load`" +core_17: "**Sᴜᴄᴄᴇssғᴜʟʟʏ Lᴏᴀᴅᴇᴅ** `{}`" +core_18: "**Could not load** `{}` **because of the following error.**\n`{}`" + +# devtools +devs_1: "`No cmd given`" +devs_2: "`Give some python cmd`" +devs_3: "`Give Some C++ Code..`" + +# dm +dm_1: "`Give Chat username or id where to send.`" +dm_2: "`Give text to send or reply to msg`" +dm_3: "⚜️ Message Delivered! ⚜️" +dm_4: "Error : {}\nRead Usage : `{}help other`" +dm_5: "`Check in Private.`" +dm_6: "`No message found to deliver :(`" + +# echo +echo_1: "**Activated Echo For Users:**\n\n" + +# fake action +fka_1: "Starting Fake Action For {} sec." + +# fedutils +sf_1: "Starting a Mass-FedBan..." +sf_2: "`No user designated!`" +sf_3: "You can't ban my dev you noob!!" +sf_4: "`Seems like rose isn't responding, or, the plugin is misbehaving`" +sf_5: "You can only use fed commands once every 5 minutes" +sf_6: "Try again after 5 mins." +sf_7: "Unable to collect FedAdminList. Retrying ({}/3)..." +sf_8: "Error" +sf_9: "Unable to collect FedAdminList." +sf_10: "FBaning in {} feds." +sf_11: "Specified FBan Group ID is incorrect." +sf_12: "{} Excluded." +sf_13: "Error in removing FedAdmin file.\n{}" +sf_14: "SuperFBan Completed.\nTotal Feds - {}.\nExcluded - {}.\n Affected {} feds.\n#TB" +sf_15: "Starting a Mass-UnFedBan..." +sf_16: "SuperUnFBan Completed.\nTotal Feds - {}.\nExcluded - {}.\n Affected {} feds.\n#TB" +sf_17: "`Give me someones id, or reply to somones message to check his/her fedstat.`" +sf_18: "List of feds {} has been banned in.\n\nCollected using Ultroid." +sf_19: "**Error**\n `Unblock` @MissRose_Bot `and try again!" +sf_20: "`Extracting information...`" +sf_21: "\n\nFedInfo Extracted by Ultroid" +sf_22: "No user was designated." +sf_23: "**Error**\n `Unblock` @MissRose_Bot `and try again!" + +# filter +flr_1: "`Use this command word to set as filter and reply...`" +flr_2: "Filters Found In This Chats Are\n\n" +flr_3: "`Give the filter to remove..`" +flr_4: "Done : Filter `{}` Saved." +flr_5: "Done : Filter `{}` Removed." +flr_6: "No Filters Found Here" + +# fontgen +fgn_1: "**Available Fonts**\n\n" + +# force subscribe +fsub_1: "Give Channel where you want User to Join !" +fsub_2: "Give Correct Channel Username or id" +fsub_3: "ForceSub was not Active in this Chat !" +fsub_4: "Join Channel" +fsub_5: "Unmute Me" +fsub_6: "Please Join That Channel !\nThen Click This Button !" +fsub_7: "This Message is Not for You" +fsub_8: "Thanks For Joining ! " + +# extra +ex_1: "`Reply to message..`" + +# gdrive +gdrive_1: "`You have already authorised with Google Drive`" +gdrive_2: "Go [here](https://console.developers.google.com/flows/enableapi?apiid=drive) and get your `GDRIVE_CLIENT_ID` and `GDRIVE_CLIENT_SECRET`\n\nSend your GDRIVE_CLIENT_ID and GDRIVE_CLIENT_SECRET as this.\n`GDRIVE_CLIENT_ID GDRIVE_CLIENT_SECRET` separated by space." +gdrive_3: "`Wrong Client Id`" +gdrive_4: "`Something went wrong! Authorise again.\nIf the same happens, contact `@TeamUltroid" +gdrive_5: "`Success!\nYou are all set to use Google Drive with Ultroid Userbot.`" +gdrive_6: "`Go `[here](t.me/{}?start=set)` and setup G-Drive`" +gdrive_7: "Successfully uploaded [{}]({}) on G-Drive" + +# get addons +gas_1: "Please provide a raw link!" + +# greetings +grt_1: "`Welcome note saved`" +grt_2: "Please use this in a group and not PMs!" +grt_3: "`Reply to message which u want to set as welcome`" +grt_4: "`No welcome was set!`" +grt_5: "`Welcome Note Deleted`" +grt_6: "`No goodbye was set!`" +grt_7: "`Reply to message which u want to set as goodbye`" + +# glitch +glitch_1: "`Glitching...`" + +# mediainfo +mdi_1: "More Explained Info" + +# nightmode +nightm_1: "Give Time in correct format" +nightm_2: "Setted time successfully" +nightm_3: "Done, Added Current Chat To Night Mode" +nightm_4: "Done, Removed Current Chat from Night Mode" +nightm_5: "Something Went Wrong" + +# pmpermit +pmperm_1: "Please wait for me to respond or you will be blocked and reported as spam!!" +pmperm_2: "Eyy, I told you not to spam!\nYou've been blocked and reported, for now." +pmperm_3: "Reply to someone's message or try this command in private." + +# schedule_msg +schdl_1: "`Scheduled msg Succesfully`" +schdl_2: "`Incorrect Format`" + +# searches +srch_1: "`Search for whom? Give me a user name!!`" +srch_2: "`No such user found...`" +srch_3: "`Song not found...`" + +# snip +snip_1: "Give word to set as snip and reply to a message." +snip_2: "Give the word to remove..." +snip_3: "No Snips Found Here." + +# specialtools +spcltool_1: "Reply To Audio or video." +spcltool_2: "`Done.. Now reply to video In which u want to add this Audio`" +spcltool_3: "Reply To video" +spcltool_4: "`First reply an audio with .raw`" +spcltool_5: "Downloaded Successfully, Now Adding Your Audio to video" +spcltool_6: "`Put input in dd/mm/yyyy format`" +spcltool_7: "`Happy Birthday To U🎉🎊`" +spcltool_8: "Give something to search.." +spcltool_9: "Found Nothing" + +# sudo +sudo_1: "`Reply to a msg or add it's id/username.`" +sudo_2: "You cant add yourself as Sudo User..." +sudo_3: "`No SUDO User was assigned ...`" +sudo_4: "`Bots can't be added as Sudo Users.`" + +# unsplash +unspl_1: "No Results Found !" + +# updater +upd_1: "`Checking for updates...`" +upd_2: "`Oops.. Updater cannot continue due to some problems.`\n\n**LOGTRACE:**\n" +upd_3: "**New UPDATE available for [[{}]]({}/tree/{}):\n\nCHANGELOG**\n\n{}" +upd_4: "`Changelog is too big, view the file to see it.`" +upd_5: "Click the below button to update." +upd_6: "\n`Your BOT is` **up-to-date** `with` **[[{}]]({}/tree/{})**\n" +upd_7: "`Fast Soft Updating...`" + +# upload download +udl_1: "`Reply to the file/media you want to download...`" +udl_2: "Download Successful..\nTo\n`{}`\nin `{}`" +udl_3: "`Give a specific path to file`" +udl_4: "`Trying to download...`" +udl_5: "`You forgot to give link :(`" +udl_6: "`This Directory is Empty.`" +udl_7: "`You can't do that!`" + +# vctools +vct_1: "`Voice Chat Started...`" +vct_2: "**Successfully Changed VC Title to** `{}`" +vct_3: "`Inviting Members to Voice Chat...`" +vct_4: "`Voice Chat Stopped...`" +vct_5: "`Invited {} users`" +vct_6: "No input Found!" + +# words +wrd_1: "• **Word :** `{}`\n• **Meaning :** __{}__\n\n• **Example :** __{}__" +wrd_2: "**Word** - `{}`\n\n**Synonyms** - \n" +wrd_3: "**Word** - `{}`\n\n**Antonyms** - \n" +wrd_4: "`Give a Word to Find Its Meaning..`" +wrd_5: "Synonyms" +wrd_6: "Antonyms" +wrd_7: "No synonym found!!\n\n`{}`" +wrd_8: "No Antonyms found!!\n\n`{}`" + +# profanitY +prof_1: "`Added This Chat for Profanity Filtering!`" +prof_2: "`Removed This Chat from Profanity Filtering!`" + +# notes +notes_1: "`Use this Command with Reply and word to use a note.`" +notes_2: "Done Note : `#{}` saved." +notes_3: "`Give me the note handler which you want to remove.`" +notes_4: "Notes Found In This Chats Are\n\n" +notes_5: "No Notes Found Here" + +# stickertools +sts_1: "`You haven't written any article, Waifu is going away.`" +sts_2: "`Reply to an Animated Sticker...`" +sts_3: "**Please select from {} **" +sts_4: "`Reply to Non Animated Sticker.`" +sts_5: "**Pack Kanged Successfully**.\n**Kanged Pack:** [link]({})" +sts_6: "`Reply to message/media...`" +sts_7: "`Sticker added in a Different Pack !\nThis Pack is Newly created!\nYour pack can be found` [here](t.me/addstickers/{})" +sts_8: "`Failed to add sticker, use` @Stickers `bot to add the sticker manually.`" +sts_9: "`Ooo Animated Sticker 👀...`" +sts_10: "`Reply to any media...`" +sts_11: "Kanging this Sticker..." +sts_12: "`Kanged!`\n`Emoji-` {}\n`Sticker Pack` [here](t.me/addstickers/{})" +sts_13: "`Switching to Pack {} due to insufficient space`" + +# whichsong +whs_1: "<• Reply to Audio File •>" +whs_2: "`Trying to identify the song....`" +whs_3: "Failed to Identify song :(" +whs_4: "**Song Recognised!**\nName: __{}__" + +# webupload +wbl_1: "`Provide a File Name pls..`" + +# writer +writer_1: "`Give Some Text Too`" + +# webshot +wbs_1: "`Give a URL please!`" +wbs_2: "Invalid URL!" +wbs_3: "**WebShot Generated**\n**URL**: {}" + +# youtube +youtube_1: "Give me a (youtube) URL to download audio from!" +youtube_2: "`Give A Direct Audio Link To Download`" +youtube_3: "Give me a (youtube) URL to download video from!" +youtube_4: "`Give A Direct Video Link To Download`" +youtube_5: "Give me a (youtube) search query to download audio from!" +youtube_6: "`Downloading audio song...`" +youtube_7: "Give me a (youtube) search query to download video from!" +youtube_8: "`Downloading video song...`" + +# ziptools +zip_1: "Reply to any media/Document." +zip_2: "First add All Files Via `{}addzip` then doZip to zip all files at one." +zip_3: "`Reply to zip file only`" + +# file share +fsh_1: "**List of files stored.:**" +fsh_2: "**File has been stored!**\n\n**Shareable link:** {}" +fsh_3: "`Reply to a message to make a shareable link!`" +fsh_4: "**No files stored!**" + +# getmsgs +gms_1: "Provide a valid message link!" +ls1: "`File doesn't exist or path is incorrect!`" +th_1: "`Please reply to a file to download its thumbnail!`" +th_2: "`Replied file has no thumbnail.`" + +# ------------------------- assistant --------------------------# + +ast_1: "Choose which API you want to set." +ast_2: "**remove.bg API**\nEnter your API key from remove.bg.\n\nUse /cancel to terminate the operation." +ast_3: "Hey {}. Please browse through the options" +ast_4: "List Of Available Languages." + +# inlinestuff +instu_1: "App search. Enter app name!" +instu_2: "Recent Searches.." +instu_3: "Enter Query to Search" +instu_4: "Success" + +# games +games_1: "Choose The Game 🎮" +games_2: "Choose Category!" +games_3: "Choose Difficulty Level" +games_4: "Choose Number of Questions.." +games_5: "Choose Time Interval..." +games_6: "**• Starting Quiz in 5 secs.** \n**• Level :** {}\n**• Qs :** {}" + +# callbackstuffs +clst_1: "`Userbot dyno build in progress, please wait for it to complete.`" +clst_2: "`Successfully Updated!\nRestarting, please wait...`" +clst_3: "■ Generating Changelogs..." +clst_4: "Something went wrong..." +clst_5: "Done!" + +# pmbot +pmbot_1: "**You need to join below chat(s) in order to chat with my master!\n\n**" +pmbot_2: "Please reply to someone to ban him." +pmbot_3: "User is already banned!" +pmbot_4: "`GoodBye! You have been banned.`\n**Further messages you send will not be forwarded.**" +pmbot_5: "Please reply to someone to Unban him." +pmbot_6: "User was never banned!" +pmbot_7: "`Congrats! You have been unbanned.`" + +# -------------------------- VcBot ------------------------------- # + +vcbot_1: "`Left the voice chat.`" +vcbot_2: "**ERROR:**\n{}" +vcbot_3: "• Volume Changed to `{}%` •" +vcbot_4: "`Please specify a volume from 1 to 200!`" +vcbot_5: "`Re-joining this voice chat.`" +vcbot_6: "You haven't connected to a voice chat!" +vcbot_7: "`Keep patience... It'll take some time.`" +vcbot_8: "Give only youtube playlist" +vcbot_9: "Are You Kidding Me?\nWhat to Play?" +vcbot_10: "Removed Chat from Vc AUTH Groups!" +vcbot_11: "`Getting Voice Chat Bot Users List...`" +vcbot_12: "`Muted playback in this chat.`" +vcbot_13: "`Resumed playback in this chat.`" +vcbot_14: "`Paused playback in this chat.`" +vcbot_15: "Please specify a song name or reply to a video file !" +vcbot_16: "Chat is Not in Vc Auth list..." +vcbot_17: "`Reply to user's msg or add it's id/username...`" +vcbot_18: "• Vc Auth List is Empty.." +vcbot_19: "Already Authed This Chat!" +vcbot_20: "`Downloading and converting...`" +vcbot_21: "• Nothing in queue!" +vcbot_22: "`Cleaned All Queues In Chat`" + +# Help Menus + +cmda: "✘ Commands Available" +help_admintools: "-\n\n• `.promote `\n• `.demote`\n Promote/Demote the user in the chat.\n\n• `.ban `\n• `.unban`\n Ban/Unban the user from the chat.\n\n• `.kick `\n Kick the user from the chat.\n\n• `.pin `\n Pin the message in the chat\n• `.tpin