search.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from search_engine_parser import GoogleSearch
  2. from pyrogram.types import Message
  3. from pyrogram import filters
  4. from requests import get
  5. from wbb import app
  6. from wbb.utils import cust_filter
  7. __MODULE__ = "Search"
  8. __HELP__ = '''/ud - Search For Something In Urban Dictionary
  9. /google - Search For Something On google
  10. /so - Search For Something On StackOverflow
  11. /gh - Search For Something On Github'''
  12. # ud - urbandictionary
  13. @app.on_message(cust_filter.command(commands=("ud")) & ~filters.edited)
  14. async def urbandict(_, message: Message):
  15. text = message.text.replace("/ud ", '')
  16. api = "http://api.urbandictionary.com/v0/define?term="
  17. if text != '':
  18. try:
  19. results = get(f"{api}{text}").json()
  20. reply_text = f'Definition: {results["list"][0]["definition"]}'
  21. reply_text += f'\n\nExample: {results["list"][0]["example"]}'
  22. except IndexError:
  23. reply_text = ("Sorry could not find any matching results!")
  24. ignore_chars = "[]"
  25. reply = reply_text
  26. for chars in ignore_chars:
  27. reply = reply.replace(chars, "")
  28. if len(reply) >= 4096:
  29. reply = reply[:4096]
  30. await message.reply_text(reply)
  31. else:
  32. await message.reply_text('"/ud" Needs An Argument.')
  33. # google
  34. @app.on_message(cust_filter.command(commands=("google")) & ~filters.edited)
  35. async def google(_, message: Message):
  36. text = message.text.replace("/google ", '')
  37. if text != '':
  38. gresults = await GoogleSearch().async_search(text, 1)
  39. result = ""
  40. for i in range(4):
  41. title = gresults["titles"][i].replace("\n", " ")
  42. source = gresults["links"][i]
  43. description = gresults["descriptions"][i]
  44. result += f"[{title}]({source})\n"
  45. result += f"`{description}`\n\n"
  46. await message.reply_text(result, disable_web_page_preview=True)
  47. else:
  48. await message.reply_text('"/google" Needs An Argument')
  49. # StackOverflow [This is also a google search with some added args]
  50. @app.on_message(cust_filter.command(commands=("so")) & ~filters.edited)
  51. async def stack(_, message: Message):
  52. gett = message.text.replace("/so ", '')
  53. text = gett + ' site:stackoverflow.com'
  54. if gett != '':
  55. gresults = await GoogleSearch().async_search(text, 1)
  56. result = ""
  57. for i in range(4):
  58. title = gresults["titles"][i].replace("\n", " ")
  59. source = gresults["links"][i]
  60. description = gresults["descriptions"][i]
  61. result += f"[{title}]({source})\n"
  62. result += f"`{description}`\n\n"
  63. await message.reply_text(result, disable_web_page_preview=True)
  64. else:
  65. await message.reply_text('"/so" Needs An Argument')
  66. # Github [This is also a google search with some added args]
  67. @app.on_message(cust_filter.command(commands=("gh")) & ~filters.edited)
  68. async def github(_, message: Message):
  69. gett = message.text.replace("/gh ", '')
  70. text = gett + ' site:github.com'
  71. if gett != '':
  72. gresults = await GoogleSearch().async_search(text, 1)
  73. result = ""
  74. for i in range(4):
  75. title = gresults["titles"][i].replace("\n", " ")
  76. source = gresults["links"][i]
  77. description = gresults["descriptions"][i]
  78. result += f"[{title}]({source})\n"
  79. result += f"`{description}`\n\n"
  80. await message.reply_text(result, disable_web_page_preview=True)
  81. else:
  82. await message.reply_text('"/gh" Needs An Argument')