search.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. try:
  42. title = gresults["titles"][i].replace("\n", " ")
  43. source = gresults["links"][i]
  44. description = gresults["descriptions"][i]
  45. result += f"[{title}]({source})\n"
  46. result += f"`{description}`\n\n"
  47. except IndexError:
  48. pass
  49. await message.reply_text(result, disable_web_page_preview=True)
  50. else:
  51. await message.reply_text('"/google" Needs An Argument')
  52. # StackOverflow [This is also a google search with some added args]
  53. @app.on_message(cust_filter.command(commands=("so")) & ~filters.edited)
  54. async def stack(_, message: Message):
  55. gett = message.text.replace("/so ", '')
  56. text = gett + ' "site:stackoverflow.com"'
  57. if gett != '':
  58. gresults = await GoogleSearch().async_search(text, 1)
  59. result = ""
  60. for i in range(4):
  61. try:
  62. title = gresults["titles"][i].replace("\n", " ")
  63. source = gresults["links"][i]
  64. description = gresults["descriptions"][i]
  65. result += f"[{title}]({source})\n"
  66. result += f"`{description}`\n\n"
  67. except IndexError:
  68. pass
  69. await message.reply_text(result, disable_web_page_preview=True)
  70. else:
  71. await message.reply_text('"/so" Needs An Argument')
  72. # Github [This is also a google search with some added args]
  73. @app.on_message(cust_filter.command(commands=("gh")) & ~filters.edited)
  74. async def github(_, message: Message):
  75. gett = message.text.replace("/gh ", '')
  76. text = gett + ' "site:github.com"'
  77. if gett != '':
  78. gresults = await GoogleSearch().async_search(text, 1)
  79. result = ""
  80. for i in range(4):
  81. try:
  82. title = gresults["titles"][i].replace("\n", " ")
  83. source = gresults["links"][i]
  84. description = gresults["descriptions"][i]
  85. result += f"[{title}]({source})\n"
  86. result += f"`{description}`\n\n"
  87. except IndexError:
  88. pass
  89. await message.reply_text(result, disable_web_page_preview=True)
  90. else:
  91. await message.reply_text('"/gh" Needs An Argument')