#
# Ultroid - UserBot
#
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ >
# PLease read the GNU Affero General Public License in
# .
"""
✘ Commands Available -
• `Get some Random Content.`
• `{i}random dog`
• `{i}random duck`
• `{i}random cat`
• `{i}random fox`
• `{i}random quote`
• `{i}random word`
• `{i}random car`
• `{i}random celebrity`
"""
from bs4 import BeautifulSoup as bs
import re
from . import HNDLR, async_searcher, ultroid_cmd
# These Api's are Collected From
# ---- https://github.com/public-apis/public-apis
API_LIST = {
"cat": "https://aws.random.cat/meow",
"dog": "https://random.dog/woof.json",
"duck": "https://random-d.uk/api/random",
"fox": "https://randomfox.ca/floof/",
# "funfact": "https://asli-fun-fact-api.herokuapp.com/",
"quote": "https://api.themotivate365.com/stoic-quote",
"quotable": "http://api.quotable.io/random",
# "words": "https://random-word-api.herokuapp.com/word?number=10",
# "food": "https://foodish-api.herokuapp.com/api/",
"car": "https://forza-api.tk/",
}
SCRAP_LIST = {
"celebrity": "https://www.randomcelebritygenerator.com/",
"word": "https://randomword.com/",
}
@ultroid_cmd(pattern="random ?(.*)")
async def random_magic(event):
if "randomuser" in event.text:
return
match = event.pattern_match.group(1)
if not (match and match in [*list(API_LIST.keys()), *list(SCRAP_LIST.keys())]):
return await event.eor(f"`Input Missing/Wrong..`\n`{HNDLR}help random`")
text, bsC, file = None, None, None
ret = match in SCRAP_LIST
try:
req = await async_searcher(
API_LIST.get(match) or SCRAP_LIST.get(match),
re_json=not ret,
re_content=ret,
)
except Exception as er:
return await event.eor(str(er))
if ret:
bsC = bs(req, "html.parser", from_encoding="utf-8")
if match == "cat":
file = req["file"]
elif match in ["dog", "duck"]:
file = req["url"]
elif match in ["car", "fox", "food"]:
file = req["image"]
elif match == "funfact":
text = req["data"]["fact"]
elif match == "quote":
text = f"**{req['data']['quote']}**\n\n~ {req['data']['author']}"
elif match == "quotable":
text = f'`{req["content"]}`' + "~ `{req['author']}`"
elif match == "word":
req = req.decode("utf-8")
word = re.search(r'
([^<]+)
', req).group(1)
definition = re.search(r'([^<]*)
', req).group(1)
text = f"**Random Word**\n- `{word}` : `{definition}`"
elif match == "words":
text = "**• Random Words**\n\n"
for word in req:
text += f"--`{word}`\n"
elif match == "celebrity" and bsC:
file = SCRAP_LIST[match] + bsC.find("img", "featured-celebrity-image")["src"]
name = bsC.find("div", "info").find("h1").text
text = f"• **Name :** `{name}`\n"
desc = bsC.find("p", "fame").text.replace("\n", "")
text += f" - __{desc}__\n\n"
bd = bsC.find("p", "birth-dates").text.replace("\n", "")
text += f"• **Birth Dates :** {bd}\n"
text += "-" * 10
if text and not file:
return await event.eor(text)
await event.reply(text, file=file)
await event.delete()