|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import base64 |
|
import inspect |
|
from datetime import datetime |
|
from html import unescape |
|
from random import choice |
|
from re import compile as re_compile |
|
|
|
from bs4 import BeautifulSoup as bs |
|
from telethon import Button |
|
from telethon.tl.alltlobjects import LAYER, tlobjects |
|
from telethon.tl.types import DocumentAttributeAudio as Audio |
|
from telethon.tl.types import InputWebDocument as wb |
|
|
|
from pyUltroid.fns.misc import google_search |
|
from pyUltroid.fns.tools import ( |
|
_webupload_cache, |
|
async_searcher, |
|
get_ofox, |
|
saavn_search, |
|
webuploader, |
|
) |
|
|
|
from . import * |
|
from . import _ult_cache |
|
|
|
SUP_BUTTONS = [ |
|
[ |
|
Button.url("• Repo •", url="https://github.com/TeamUltroid/Ultroid"), |
|
Button.url("• Support •", url="t.me/UltroidSupportChat"), |
|
], |
|
] |
|
|
|
ofox = "https://graph.org/file/231f0049fcd722824f13b.jpg" |
|
gugirl = "https://graph.org/file/0df54ae4541abca96aa11.jpg" |
|
ultpic = "https://graph.org/file/4136aa1650bc9d4109cc5.jpg" |
|
|
|
apis = [ |
|
"QUl6YVN5QXlEQnNZM1dSdEI1WVBDNmFCX3c4SkF5NlpkWE5jNkZV", |
|
"QUl6YVN5QkYwenhMbFlsUE1wOXh3TVFxVktDUVJxOERnZHJMWHNn", |
|
"QUl6YVN5RGRPS253blB3VklRX2xiSDVzWUU0Rm9YakFLSVFWMERR", |
|
] |
|
|
|
|
|
@in_pattern("ofox", owner=True) |
|
async def _(e): |
|
try: |
|
match = e.text.split(" ", maxsplit=1)[1] |
|
except IndexError: |
|
kkkk = e.builder.article( |
|
title="Enter Device Codename", |
|
thumb=wb(ofox, 0, "image/jpeg", []), |
|
text="**OFᴏx🦊Rᴇᴄᴏᴠᴇʀʏ**\n\nYou didn't search anything", |
|
buttons=Button.switch_inline("Sᴇᴀʀᴄʜ Aɢᴀɪɴ", query="ofox ", same_peer=True), |
|
) |
|
return await e.answer([kkkk]) |
|
device, releases = await get_ofox(match) |
|
if device.get("detail") is None: |
|
fox = [] |
|
fullname = device["full_name"] |
|
codename = device["codename"] |
|
str(device["supported"]) |
|
maintainer = device["maintainer"]["name"] |
|
link = f"https://orangefox.download/device/{codename}" |
|
for data in releases["data"]: |
|
release = data["type"] |
|
version = data["version"] |
|
size = humanbytes(data["size"]) |
|
release_date = datetime.utcfromtimestamp(data["date"]).strftime("%Y-%m-%d") |
|
text = f"[\xad]({ofox})**OʀᴀɴɢᴇFᴏx Rᴇᴄᴏᴠᴇʀʏ Fᴏʀ**\n\n" |
|
text += f"` Fᴜʟʟ Nᴀᴍᴇ: {fullname}`\n" |
|
text += f"` Cᴏᴅᴇɴᴀᴍᴇ: {codename}`\n" |
|
text += f"` Mᴀɪɴᴛᴀɪɴᴇʀ: {maintainer}`\n" |
|
text += f"` Bᴜɪʟᴅ Tʏᴘᴇ: {release}`\n" |
|
text += f"` Vᴇʀsɪᴏɴ: {version}`\n" |
|
text += f"` Sɪᴢᴇ: {size}`\n" |
|
text += f"` Bᴜɪʟᴅ Dᴀᴛᴇ: {release_date}`" |
|
fox.append( |
|
await e.builder.article( |
|
title=f"{fullname}", |
|
description=f"{version}\n{release_date}", |
|
text=text, |
|
thumb=wb(ofox, 0, "image/jpeg", []), |
|
link_preview=True, |
|
buttons=[ |
|
Button.url("Dᴏᴡɴʟᴏᴀᴅ", url=f"{link}"), |
|
Button.switch_inline( |
|
"Sᴇᴀʀᴄʜ Aɢᴀɪɴ", query="ofox ", same_peer=True |
|
), |
|
], |
|
) |
|
) |
|
await e.answer( |
|
fox, switch_pm="OrangeFox Recovery Search.", switch_pm_param="start" |
|
) |
|
else: |
|
await e.answer( |
|
[], switch_pm="OrangeFox Recovery Search.", switch_pm_param="start" |
|
) |
|
|
|
|
|
@in_pattern("fl2lnk ?(.*)", owner=True) |
|
async def _(e): |
|
match = e.pattern_match.group(1) |
|
chat_id, msg_id = match.split(":") |
|
filename = _webupload_cache[int(chat_id)][int(msg_id)] |
|
if "/" in filename: |
|
filename = filename.split("/")[-1] |
|
__cache = f"{chat_id}:{msg_id}" |
|
buttons = [ |
|
[ |
|
Button.inline("anonfiles", data=f"flanonfiles//{__cache}"), |
|
Button.inline("transfer", data=f"fltransfer//{__cache}"), |
|
], |
|
[ |
|
Button.inline("bayfiles", data=f"flbayfiles//{__cache}"), |
|
Button.inline("x0.at", data=f"flx0.at//{__cache}"), |
|
], |
|
[ |
|
Button.inline("file.io", data=f"flfile.io//{__cache}"), |
|
Button.inline("siasky", data=f"flsiasky//{__cache}"), |
|
], |
|
] |
|
try: |
|
lnk = [ |
|
await e.builder.article( |
|
title=f"Upload {filename}", |
|
text=f"**File:**\n{filename}", |
|
buttons=buttons, |
|
) |
|
] |
|
except BaseException as er: |
|
LOGS.exception(er) |
|
lnk = [ |
|
await e.builder.article( |
|
title="fl2lnk", |
|
text="File not found", |
|
) |
|
] |
|
await e.answer(lnk, switch_pm="File to Link.", switch_pm_param="start") |
|
|
|
|
|
@callback( |
|
re_compile( |
|
"fl(.*)", |
|
), |
|
owner=True, |
|
) |
|
async def _(e): |
|
t = (e.data).decode("UTF-8") |
|
data = t[2:] |
|
host = data.split("//")[0] |
|
chat_id, msg_id = data.split("//")[1].split(":") |
|
filename = _webupload_cache[int(chat_id)][int(msg_id)] |
|
if "/" in filename: |
|
filename = filename.split("/")[-1] |
|
await e.edit(f"Uploading `{filename}` on {host}") |
|
link = (await webuploader(chat_id, msg_id, host)).strip().replace("\n", "") |
|
await e.edit(f"Uploaded `{filename}` on {host}.", buttons=Button.url("View", link)) |
|
|
|
|
|
@in_pattern("repo", owner=True) |
|
async def repo(e): |
|
res = [ |
|
await e.builder.article( |
|
title="Ultroid Userbot", |
|
description="Userbot | Telethon", |
|
thumb=wb(ultpic, 0, "image/jpeg", []), |
|
text="• **ULTROID USERBOT** •", |
|
buttons=SUP_BUTTONS, |
|
), |
|
] |
|
await e.answer(res, switch_pm="Ultroid Repo.", switch_pm_param="start") |
|
|
|
|
|
@in_pattern("go", owner=True) |
|
async def gsearch(q_event): |
|
try: |
|
match = q_event.text.split(maxsplit=1)[1] |
|
except IndexError: |
|
return await q_event.answer( |
|
[], switch_pm="Google Search. Enter a query!", switch_pm_param="start" |
|
) |
|
searcher = [] |
|
gresults = await google_search(match) |
|
for i in gresults: |
|
try: |
|
title = i["title"] |
|
link = i["link"] |
|
desc = i["description"] |
|
searcher.append( |
|
await q_event.builder.article( |
|
title=title, |
|
description=desc, |
|
thumb=wb(gugirl, 0, "image/jpeg", []), |
|
text=f"**Gᴏᴏɢʟᴇ Sᴇᴀʀᴄʜ**\n\n**••Tɪᴛʟᴇ••**\n`{title}`\n\n**••Dᴇsᴄʀɪᴘᴛɪᴏɴ••**\n`{desc}`", |
|
link_preview=False, |
|
buttons=[ |
|
[Button.url("Lɪɴᴋ", url=f"{link}")], |
|
[ |
|
Button.switch_inline( |
|
"Sᴇᴀʀᴄʜ Aɢᴀɪɴ", |
|
query="go ", |
|
same_peer=True, |
|
), |
|
Button.switch_inline( |
|
"Sʜᴀʀᴇ", |
|
query=f"go {match}", |
|
same_peer=False, |
|
), |
|
], |
|
], |
|
), |
|
) |
|
except IndexError: |
|
break |
|
await q_event.answer(searcher, switch_pm="Google Search.", switch_pm_param="start") |
|
|
|
|
|
@in_pattern("mods", owner=True) |
|
async def _(e): |
|
try: |
|
quer = e.text.split(" ", maxsplit=1)[1] |
|
except IndexError: |
|
return await e.answer( |
|
[], switch_pm="Mod Apps Search. Enter app name!", switch_pm_param="start" |
|
) |
|
start = 0 * 3 + 1 |
|
da = base64.b64decode(choice(apis)).decode("ascii") |
|
url = f"https://www.googleapis.com/customsearch/v1?key={da}&cx=25b3b50edb928435b&q={quer}&start={start}" |
|
data = await async_searcher(url, re_json=True) |
|
search_items = data.get("items", []) |
|
modss = [] |
|
for a in search_items: |
|
title = a.get("title") |
|
desc = a.get("snippet") |
|
link = a.get("link") |
|
text = f"**••Tɪᴛʟᴇ••** `{title}`\n\n" |
|
text += f"**Dᴇsᴄʀɪᴘᴛɪᴏɴ** `{desc}`" |
|
modss.append( |
|
await e.builder.article( |
|
title=title, |
|
description=desc, |
|
text=text, |
|
link_preview=True, |
|
buttons=[ |
|
[Button.url("Dᴏᴡɴʟᴏᴀᴅ", url=f"{link}")], |
|
[ |
|
Button.switch_inline( |
|
"Mᴏʀᴇ Mᴏᴅs", |
|
query="mods ", |
|
same_peer=True, |
|
), |
|
Button.switch_inline( |
|
"Sʜᴀʀᴇ", |
|
query=f"mods {quer}", |
|
same_peer=False, |
|
), |
|
], |
|
], |
|
), |
|
) |
|
await e.answer(modss, switch_pm="Search Mod Applications.", switch_pm_param="start") |
|
|
|
|
|
APP_CACHE = {} |
|
RECENTS = {} |
|
PLAY_API = "https://googleplay.onrender.com/api/apps?q=" |
|
|
|
|
|
@in_pattern("app", owner=True) |
|
async def _(e): |
|
try: |
|
f = e.text.split(maxsplit=1)[1].lower() |
|
except IndexError: |
|
get_string("instu_1") |
|
res = [] |
|
if APP_CACHE and RECENTS.get(e.sender_id): |
|
res.extend( |
|
APP_CACHE[a][0] for a in RECENTS[e.sender_id] if APP_CACHE.get(a) |
|
) |
|
return await e.answer( |
|
res, switch_pm=get_string("instu_2"), switch_pm_param="start" |
|
) |
|
try: |
|
return await e.answer( |
|
APP_CACHE[f], switch_pm="Application Searcher.", switch_pm_param="start" |
|
) |
|
except KeyError: |
|
pass |
|
foles = [] |
|
url = PLAY_API + f.replace(" ", "+") |
|
aap = await async_searcher(url, re_json=True) |
|
for z in aap["results"][:50]: |
|
url = "https://play.google.com/store/apps/details?id=" + z["appId"] |
|
name = z["title"] |
|
desc = unescape(z["summary"])[:300].replace("<br>", "\n") + "..." |
|
dev = z["developer"]["devId"] |
|
text = f"**••Aᴘᴘ Nᴀᴍᴇ••** [{name}]({url})\n" |
|
text += f"**••Dᴇᴠᴇʟᴏᴘᴇʀ••** `{dev}`\n" |
|
text += f"**••Dᴇsᴄʀɪᴘᴛɪᴏɴ••**\n`{desc}`" |
|
foles.append( |
|
await e.builder.article( |
|
title=name, |
|
description=dev, |
|
thumb=wb(z["icon"], 0, "image/jpeg", []), |
|
text=text, |
|
link_preview=True, |
|
buttons=[ |
|
[Button.url("Lɪɴᴋ", url=url)], |
|
[ |
|
Button.switch_inline( |
|
"Mᴏʀᴇ Aᴘᴘs", |
|
query="app ", |
|
same_peer=True, |
|
), |
|
Button.switch_inline( |
|
"Sʜᴀʀᴇ", |
|
query=f"app {f}", |
|
same_peer=False, |
|
), |
|
], |
|
], |
|
), |
|
) |
|
APP_CACHE.update({f: foles}) |
|
if RECENTS.get(e.sender_id): |
|
RECENTS[e.sender_id].append(f) |
|
else: |
|
RECENTS.update({e.sender_id: [f]}) |
|
await e.answer(foles, switch_pm="Application Searcher.", switch_pm_param="start") |
|
|
|
|
|
PISTON_URI = "https://emkc.org/api/v2/piston/" |
|
PISTON_LANGS = {} |
|
|
|
|
|
@in_pattern("run", owner=True) |
|
async def piston_run(event): |
|
try: |
|
lang = event.text.split()[1] |
|
code = event.text.split(maxsplit=2)[2] |
|
except IndexError: |
|
result = await event.builder.article( |
|
title="Bad Query", |
|
description="Usage: [Language] [code]", |
|
thumb=wb( |
|
"https://graph.org/file/e33c57fc5f1044547e4d8.jpg", 0, "image/jpeg", [] |
|
), |
|
text=f'**Inline Usage**\n\n`@{asst.me.username} run python print("hello world")`\n\n[Language List](https://graph.org/Ultroid-09-01-6)', |
|
) |
|
return await event.answer([result]) |
|
if not PISTON_LANGS: |
|
se = await async_searcher(f"{PISTON_URI}runtimes", re_json=True) |
|
PISTON_LANGS.update({lang.pop("language"): lang for lang in se}) |
|
if lang in PISTON_LANGS.keys(): |
|
version = PISTON_LANGS[lang]["version"] |
|
else: |
|
result = await event.builder.article( |
|
title="Unsupported Language", |
|
description="Usage: [Language] [code]", |
|
thumb=wb( |
|
"https://graph.org/file/e33c57fc5f1044547e4d8.jpg", 0, "image/jpeg", [] |
|
), |
|
text=f'**Inline Usage**\n\n`@{asst.me.username} run python print("hello world")`\n\n[Language List](https://graph.org/Ultroid-09-01-6)', |
|
) |
|
return await event.answer([result]) |
|
output = await async_searcher( |
|
f"{PISTON_URI}execute", |
|
post=True, |
|
json={ |
|
"language": lang, |
|
"version": version, |
|
"files": [{"content": code}], |
|
}, |
|
re_json=True, |
|
) |
|
|
|
output = output["run"]["output"] or get_string("instu_4") |
|
if len(output) > 3000: |
|
output = f"{output[:3000]}..." |
|
result = await event.builder.article( |
|
title="Result", |
|
description=output, |
|
text=f"• **Language:**\n`{lang}`\n\n• **Code:**\n`{code}`\n\n• **Result:**\n`{output}`", |
|
thumb=wb( |
|
"https://graph.org/file/871ee4a481f58117dccc4.jpg", 0, "image/jpeg", [] |
|
), |
|
buttons=Button.switch_inline("Fork", query=event.text, same_peer=True), |
|
) |
|
await event.answer([result], switch_pm="• Piston •", switch_pm_param="start") |
|
|
|
|
|
FDROID_ = {} |
|
|
|
|
|
@in_pattern("fdroid", owner=True) |
|
async def do_magic(event): |
|
try: |
|
match = event.text.split(" ", maxsplit=1)[1].lower() |
|
except IndexError: |
|
return await event.answer( |
|
[], switch_pm="Enter Query to Search", switch_pm_param="start" |
|
) |
|
if FDROID_.get(match): |
|
return await event.answer( |
|
FDROID_[match], switch_pm=f"• Results for {match}", switch_pm_param="start" |
|
) |
|
link = "https://search.f-droid.org/?q=" + match.replace(" ", "+") |
|
content = await async_searcher(link, re_content=True) |
|
BSC = bs(content, "html.parser", from_encoding="utf-8") |
|
ress = [] |
|
for dat in BSC.find_all("a", "package-header")[:10]: |
|
image = dat.find("img", "package-icon")["src"] |
|
if image.endswith("/"): |
|
image = "https://graph.org/file/a8dd4a92c5a53a89d0eff.jpg" |
|
title = dat.find("h4", "package-name").text.strip() |
|
desc = dat.find("span", "package-summary").text.strip() |
|
text = f"• **Name :** `{title}`\n\n" |
|
text += f"• **Description :** `{desc}`\n" |
|
text += f"• **License :** `{dat.find('span', 'package-license').text.strip()}`" |
|
imga = wb(image, 0, "image/jpeg", []) |
|
ress.append( |
|
await event.builder.article( |
|
title=title, |
|
type="photo", |
|
description=desc, |
|
text=text, |
|
content=imga, |
|
thumb=imga, |
|
include_media=True, |
|
buttons=[ |
|
Button.inline( |
|
"• Download •", "fd" + dat["href"].split("packages/")[-1] |
|
), |
|
Button.switch_inline("• Share •", query=event.text), |
|
], |
|
) |
|
) |
|
msg = f"Showing {len(ress)} Results!" if ress else "No Results Found" |
|
FDROID_.update({match: ress}) |
|
await event.answer(ress, switch_pm=msg, switch_pm_param="start") |
|
|
|
|
|
|
|
_bearer_collected = [ |
|
"AAAAAAAAAAAAAAAAAAAAALIKKgEAAAAA1DRuS%2BI7ZRKiagD6KHYmreaXomo%3DP5Vaje4UTtEkODg0fX7nCh5laSrchhtLxeyEqxXpv0w9ZKspLD", |
|
"AAAAAAAAAAAAAAAAAAAAAL5iUAEAAAAAmo6FYRjqdKlI3cNziIm%2BHUQB9Xs%3DS31pj0mxARMTOk2g9dvQ1yP9wknvY4FPBPUlE00smJcncw4dPR", |
|
"AAAAAAAAAAAAAAAAAAAAAN6sVgEAAAAAMMjMMWrwgGyv7YQOWN%2FSAsO5SGM%3Dg8MG9Jq93Rlllaok6eht7HvRCruN4Vpzp4NaVsZaaHHWSTzKI8", |
|
] |
|
|
|
|
|
@in_pattern("twitter", owner=True) |
|
async def twitter_search(event): |
|
try: |
|
match = event.text.split(maxsplit=1)[1].lower() |
|
except IndexError: |
|
return await event.answer( |
|
[], switch_pm="Enter Query to Search", switch_pm_param="start" |
|
) |
|
try: |
|
return await event.answer( |
|
_ult_cache["twitter"][match], |
|
switch_pm="• Twitter Search •", |
|
switch_pm_param="start", |
|
) |
|
except KeyError: |
|
pass |
|
headers = {"Authorization": f"bearer {choice(_bearer_collected)}"} |
|
res = await async_searcher( |
|
f"https://api.twitter.com/1.1/users/search.json?q={match}", |
|
headers=headers, |
|
re_json=True, |
|
) |
|
reso = [] |
|
for user in res: |
|
thumb = wb(user["profile_image_url_https"], 0, "image/jpeg", []) |
|
if user.get("profile_banner_url"): |
|
url = user["profile_banner_url"] |
|
text = f"[\xad]({url})• **Name :** `{user['name']}`\n" |
|
else: |
|
text = f"• **Name :** `{user['name']}`\n" |
|
text += f"• **Description :** `{user['description']}`\n" |
|
text += f"• **Username :** `@{user['screen_name']}`\n" |
|
text += f"• **Followers :** `{user['followers_count']}` • **Following :** `{user['friends_count']}`\n" |
|
pro_ = "https://twitter.com/" + user["screen_name"] |
|
text += f"• **Link :** [Click Here]({pro_})\n_" |
|
reso.append( |
|
await event.builder.article( |
|
title=user["name"], |
|
description=user["description"], |
|
url=pro_, |
|
text=text, |
|
thumb=thumb, |
|
) |
|
) |
|
swi_ = f"🐦 Showing {len(reso)} Results!" if reso else "No User Found :(" |
|
await event.answer(reso, switch_pm=swi_, switch_pm_param="start") |
|
if _ult_cache.get("twitter"): |
|
_ult_cache["twitter"].update({match: reso}) |
|
else: |
|
_ult_cache.update({"twitter": {match: reso}}) |
|
|
|
|
|
_savn_cache = {} |
|
|
|
|
|
@in_pattern("saavn", owner=True) |
|
async def savn_s(event): |
|
try: |
|
query = event.text.split(maxsplit=1)[1].lower() |
|
except IndexError: |
|
return await event.answer( |
|
[], switch_pm="Enter Query to search 🔍", switch_pm_param="start" |
|
) |
|
if query in _savn_cache: |
|
return await event.answer( |
|
_savn_cache[query], |
|
switch_pm=f"Showing Results for {query}", |
|
switch_pm_param="start", |
|
) |
|
results = await saavn_search(query) |
|
swi = "🎵 Saavn Search" if results else "No Results Found!" |
|
res = [] |
|
for song in results: |
|
thumb = wb(song["image"], 0, "image/jpeg", []) |
|
text = f"• **Title :** {song['title']}" |
|
text += f"\n• **Year :** {song['year']}" |
|
text += f"\n• **Lang :** {song['language']}" |
|
text += f"\n• **Artist :** {song['artists']}" |
|
text += f"\n• **Release Date :** {song['release_date']}" |
|
res.append( |
|
await event.builder.article( |
|
title=song["title"], |
|
description=song["artists"], |
|
type="audio", |
|
text=text, |
|
include_media=True, |
|
buttons=Button.switch_inline( |
|
"Search Again 🔍", query="saavn", same_peer=True |
|
), |
|
thumb=thumb, |
|
content=wb( |
|
song["url"], |
|
0, |
|
"audio/mp4", |
|
[ |
|
Audio( |
|
title=song["title"], |
|
duration=int(song["duration"]), |
|
performer=song["artists"], |
|
) |
|
], |
|
), |
|
) |
|
) |
|
await event.answer(res, switch_pm=swi, switch_pm_param="start") |
|
_savn_cache.update({query: res}) |
|
|
|
|
|
@in_pattern("tl", owner=True) |
|
async def inline_tl(ult): |
|
try: |
|
match = ult.text.split(maxsplit=1)[1] |
|
except IndexError: |
|
text = f"**Telegram TlObjects Searcher.**\n__(Don't use if you don't know what it is!)__\n\n• Example Usage\n`@{asst.me.username} tl GetFullUserRequest`" |
|
return await ult.answer( |
|
[ |
|
await ult.builder.article( |
|
title="How to Use?", |
|
description="Tl Searcher by Ultroid", |
|
url="https://t.me/TeamUltroid", |
|
text=text, |
|
) |
|
], |
|
switch_pm="Tl Search 🔍", |
|
switch_pm_param="start", |
|
) |
|
res = [] |
|
for key in tlobjects.values(): |
|
if match.lower() in key.__name__.lower(): |
|
tyyp = "Function" if "tl.functions." in str(key) else "Type" |
|
text = f"**Name:** `{key.__name__}`\n" |
|
text += f"**Category:** `{tyyp}`\n" |
|
text += f"\n`from {key.__module__} import {key.__name__}`\n\n" |
|
if args := str(inspect.signature(key))[1:][:-1]: |
|
text += "**Parameter:**\n" |
|
for para in args.split(","): |
|
text += " " * 4 + "`" + para + "`\n" |
|
text += f"\n**Layer:** `{LAYER}`" |
|
res.append( |
|
await ult.builder.article( |
|
title=key.__name__, |
|
description=tyyp, |
|
url="https://t.me/TeamUltroid", |
|
text=text[:4000], |
|
) |
|
) |
|
mo = f"Showing {len(res)} results!" if res else f"No Results for {match}!" |
|
await ult.answer(res[:50], switch_pm=mo, switch_pm_param="start") |
|
|
|
|
|
InlinePlugin.update( |
|
{ |
|
"Pʟᴀʏ Sᴛᴏʀᴇ Aᴘᴘs": "app telegram", |
|
"Mᴏᴅᴅᴇᴅ Aᴘᴘs": "mods minecraft", |
|
"Sᴇᴀʀᴄʜ Oɴ Gᴏᴏɢʟᴇ": "go TeamUltroid", |
|
"WʜɪSᴘᴇʀ": "wspr @username Hello🎉", |
|
"YᴏᴜTᴜʙᴇ Dᴏᴡɴʟᴏᴀᴅᴇʀ": "yt Ed Sheeran Perfect", |
|
"Piston Eval": "run javascript console.log('Hello Ultroid')", |
|
"OʀᴀɴɢᴇFᴏx🦊": "ofox beryllium", |
|
"Tᴡɪᴛᴛᴇʀ Usᴇʀ": "twitter theultroid", |
|
"Fᴅʀᴏɪᴅ Sᴇᴀʀᴄʜ": "fdroid telegram", |
|
"Sᴀᴀᴠɴ sᴇᴀʀᴄʜ": "saavn", |
|
"Tʟ Sᴇᴀʀᴄʜ": "tl", |
|
} |
|
) |
|
|