|
|
|
|
|
|
|
|
|
|
|
|
|
import json |
|
import random |
|
|
|
from pyrogram import Client, filters |
|
from pyrogram.types import InputMediaPhoto, Message |
|
|
|
from Mikobot import app |
|
from Mikobot.state import state |
|
|
|
|
|
|
|
BINGSEARCH_URL = "https://sugoi-api.vercel.app/search" |
|
NEWS_URL = "https://sugoi-api.vercel.app/news?keyword={}" |
|
|
|
|
|
|
|
@app.on_message(filters.command("news")) |
|
async def news(_, message: Message): |
|
keyword = ( |
|
message.text.split(" ", 1)[1].strip() if len(message.text.split()) > 1 else "" |
|
) |
|
url = NEWS_URL.format(keyword) |
|
|
|
try: |
|
response = await state.get(url) |
|
news_data = response.json() |
|
|
|
if "error" in news_data: |
|
error_message = news_data["error"] |
|
await message.reply_text(f"Error: {error_message}") |
|
else: |
|
if len(news_data) > 0: |
|
news_item = random.choice(news_data) |
|
|
|
title = news_item["title"] |
|
excerpt = news_item["excerpt"] |
|
source = news_item["source"] |
|
relative_time = news_item["relative_time"] |
|
news_url = news_item["url"] |
|
|
|
message_text = f"π§ππ§ππ: {title}\nπ¦π’π¨π₯ππ: {source}\nπ§ππ π: {relative_time}\nππ«πππ₯π£π§: {excerpt}\nπ¨π₯π: {news_url}" |
|
await message.reply_text(message_text) |
|
else: |
|
await message.reply_text("No news found.") |
|
|
|
except Exception as e: |
|
await message.reply_text(f"Error: {str(e)}") |
|
|
|
|
|
@app.on_message(filters.command("bingsearch")) |
|
async def bing_search(client: Client, message: Message): |
|
try: |
|
if len(message.command) == 1: |
|
await message.reply_text("Please provide a keyword to search.") |
|
return |
|
|
|
keyword = " ".join( |
|
message.command[1:] |
|
) |
|
params = {"keyword": keyword} |
|
|
|
response = await state.get( |
|
BINGSEARCH_URL, params=params |
|
) |
|
|
|
if response.status_code == 200: |
|
results = response.json() |
|
if not results: |
|
await message.reply_text("No results found.") |
|
else: |
|
message_text = "" |
|
for result in results[:7]: |
|
title = result.get("title", "") |
|
link = result.get("link", "") |
|
message_text += f"{title}\n{link}\n\n" |
|
await message.reply_text(message_text.strip()) |
|
else: |
|
await message.reply_text("Sorry, something went wrong with the search.") |
|
except Exception as e: |
|
await message.reply_text(f"An error occurred: {str(e)}") |
|
|
|
|
|
|
|
@app.on_message(filters.command("bingimg")) |
|
async def bingimg_search(client: Client, message: Message): |
|
try: |
|
text = message.text.split(None, 1)[ |
|
1 |
|
] |
|
except IndexError: |
|
return await message.reply_text( |
|
"Provide me a query to search!" |
|
) |
|
|
|
search_message = await message.reply_text("π") |
|
|
|
|
|
bingimg_url = "https://sugoi-api.vercel.app/bingimg?keyword=" + text |
|
resp = await state.get(bingimg_url) |
|
images = json.loads(resp.text) |
|
|
|
media = [] |
|
count = 0 |
|
for img in images: |
|
if count == 7: |
|
break |
|
|
|
|
|
media.append(InputMediaPhoto(media=img)) |
|
count += 1 |
|
|
|
|
|
await message.reply_media_group(media=media) |
|
|
|
|
|
await search_message.delete() |
|
await message.delete() |
|
|
|
|
|
|
|
@app.on_message(filters.command("googleimg")) |
|
async def googleimg_search(client: Client, message: Message): |
|
try: |
|
text = message.text.split(None, 1)[ |
|
1 |
|
] |
|
except IndexError: |
|
return await message.reply_text( |
|
"Provide me a query to search!" |
|
) |
|
|
|
search_message = await message.reply_text("π") |
|
|
|
|
|
googleimg_url = "https://sugoi-api.vercel.app/googleimg?keyword=" + text |
|
resp = await state.get(googleimg_url) |
|
images = json.loads(resp.text) |
|
|
|
media = [] |
|
count = 0 |
|
for img in images: |
|
if count == 7: |
|
break |
|
|
|
|
|
media.append(InputMediaPhoto(media=img)) |
|
count += 1 |
|
|
|
|
|
await message.reply_media_group(media=media) |
|
|
|
|
|
await search_message.delete() |
|
await message.delete() |
|
|
|
|
|
|
|
|
|
|
|
|
|
__mod_name__ = "SEARCH" |
|
|
|
__help__ = """ |
|
π π¦πππ₯ππ |
|
|
|
β *Available commands:* |
|
|
|
Β» /googleimg <search query>: It retrieves and displays images obtained through a Google image search. |
|
|
|
Β» /bingimg <search query>: It retrieves and displays images obtained through a Bing image search. |
|
|
|
Β» /news <search query> : search news. |
|
|
|
Β» /bingsearch <search query> : get search result with links. |
|
|
|
β *Example:* |
|
β `/bingsearch app`: return search results. |
|
""" |
|
|
|
|