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