49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import asyncio
|
|
import re
|
|
|
|
from core import command
|
|
from loguru import logger
|
|
from pyrogram import Client
|
|
from pyrogram.errors import FloodWait
|
|
from pyrogram.types import Message
|
|
from tools.googles import google_search
|
|
from tools.helpers import Parameters, show_cmd_tip, show_exception
|
|
|
|
|
|
@Client.on_message(command("google"))
|
|
async def google(_: Client, msg: Message):
|
|
"""谷歌搜索并展示第一页结果和链接"""
|
|
cmd, args = Parameters.get(msg)
|
|
replied_msg = msg.reply_to_message
|
|
if not args and replied_msg and (replied_msg.text or replied_msg.caption):
|
|
pattern = replied_msg.text or replied_msg.caption
|
|
elif args:
|
|
pattern = args
|
|
else:
|
|
return await show_cmd_tip(msg, cmd)
|
|
|
|
try:
|
|
res = await google_search(pattern)
|
|
links = '\n\n'.join(
|
|
f"[{title[0:30]}]({url})" for title, url in res.items()
|
|
)
|
|
pattern = re.sub(r'[_*`[]', '', pattern[0:30])
|
|
text = f"🔎 | **Google** | `{pattern}`\n{links}"
|
|
await msg.edit_text(
|
|
text=text,
|
|
parse_mode='md',
|
|
disable_web_page_preview=True
|
|
)
|
|
except FloodWait as e:
|
|
await asyncio.sleep(e.x)
|
|
await msg.edit_text(
|
|
text=text,
|
|
parse_mode='md',
|
|
disable_web_page_preview=True
|
|
)
|
|
except Exception as e:
|
|
logger.error(e)
|
|
await show_exception(msg, "Unable to connect to google")
|
|
finally:
|
|
await logger.complete()
|