sycgram/plugins/google.py
2022-04-09 13:35:49 +08:00

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()