misc.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. import secrets
  2. import string
  3. import requests
  4. from pyrogram import filters
  5. from pyrogram.types import Message
  6. from googletrans import Translator
  7. from cryptography.fernet import Fernet
  8. from wbb import app, FERNET_ENCRYPTION_KEY
  9. from wbb.utils import cust_filter, random_line
  10. from wbb.utils.errors import capture_err
  11. from wbb.utils.json_prettify import json_prettify
  12. from wbb.utils.fetch import fetch
  13. from wbb.utils.nekobin import neko
  14. __MODULE__ = "Misc"
  15. __HELP__ = '''/commit - Generate Funny Commit Messages
  16. /runs - Idk Test Yourself
  17. /id - Get Chat_ID or User_ID
  18. /random - Generate Random Complex Passwords
  19. /encrypt - Encrypt Text [Can Only Be Decrypted By This Bot]
  20. /decrypt - Decrypt Text
  21. /cheat - Get Programming Related Help
  22. /weather - To Get Weather Info
  23. /tr [en] - Translate A Message
  24. /json [URL] - Get Response From An API or Something.
  25. #RTFM - Check it lol'''
  26. @app.on_message(cust_filter.command(commands=("commit")) & ~filters.edited)
  27. @capture_err
  28. async def commit(_, message: Message):
  29. await message.reply_text((await random_line('wbb/utils/commit.txt')))
  30. @app.on_message(filters.command("RTFM", "#"))
  31. @capture_err
  32. async def rtfm(_, message):
  33. await message.delete()
  34. if not message.reply_to_message:
  35. await message.reply_text("Reply To A Message lol")
  36. return
  37. await message.reply_to_message.reply_text("Are You Lost? READ THE FUCKING DOCS!")
  38. @app.on_message(cust_filter.command(commands=("runs")) & ~filters.edited)
  39. @capture_err
  40. async def runs(_, message: Message):
  41. await message.reply_text((await random_line('wbb/utils/runs.txt')))
  42. @app.on_message(cust_filter.command(commands=("id")) & ~filters.edited)
  43. @capture_err
  44. async def get_id(_, message: Message):
  45. if len(message.command) != 1:
  46. username = message.text.split(None, 1)[1]
  47. user_id = (await app.get_users(username)).id
  48. msg = f"{username}'s ID is `{user_id}`"
  49. await message.reply_text(msg)
  50. elif len(message.command) == 1 and not message.reply_to_message:
  51. chat_id = message.chat.id
  52. msg = f"{message.chat.title}'s ID is `{chat_id}`"
  53. await message.reply_text(msg)
  54. elif len(message.command) == 1 and message.reply_to_message:
  55. from_user_id = message.reply_to_message.from_user.id
  56. from_user_mention = message.reply_to_message.from_user.mention
  57. msg = f"{from_user_mention}'s ID is `{from_user_id}`"
  58. await message.reply_text(msg)
  59. # Random
  60. @app.on_message(cust_filter.command(commands=('random')) & ~filters.edited)
  61. @capture_err
  62. async def random(_, message: Message):
  63. if len(message.command) != 2:
  64. await message.reply_text('"/random" Needs An Argurment.'
  65. ' Ex: `/random 5`')
  66. return
  67. length = message.text.split(None, 1)[1]
  68. try:
  69. if 1 < int(length) < 1000:
  70. alphabet = string.ascii_letters + string.digits
  71. password = ''.join(secrets.choice(alphabet) for i in
  72. range(int(length)))
  73. await message.reply_text(f"`{password}`")
  74. else:
  75. await message.reply_text('Specify A Length Between 1-1000')
  76. except ValueError:
  77. await message.reply_text("Strings Won't Work!, Pass A"
  78. + " Positive Integer Between 1-1000")
  79. # Encrypt
  80. @app.on_message(cust_filter.command(commands=('encrypt')) & ~filters.edited)
  81. @capture_err
  82. async def encrypt(_, message: Message):
  83. if not message.reply_to_message:
  84. await message.reply_text('Reply To A Message To Encrypt It.')
  85. return
  86. text = message.reply_to_message.text
  87. text_in_bytes = bytes(text, 'utf-8')
  88. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  89. encrypted_text = cipher_suite.encrypt(text_in_bytes)
  90. bytes_in_text = encrypted_text.decode("utf-8")
  91. await message.reply_text(bytes_in_text)
  92. # Decrypt
  93. @app.on_message(cust_filter.command(commands=('decrypt')) & ~filters.edited)
  94. @capture_err
  95. async def decrypt(_, message: Message):
  96. if not message.reply_to_message:
  97. await message.reply_text('Reply To A Message To Decrypt It.')
  98. return
  99. text = message.reply_to_message.text
  100. text_in_bytes = bytes(text, 'utf-8')
  101. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  102. decoded_text = cipher_suite.decrypt(text_in_bytes)
  103. bytes_in_text = decoded_text.decode("utf-8")
  104. await message.reply_text(bytes_in_text)
  105. # Cheat.sh
  106. @app.on_message(cust_filter.command(commands=("cheat")) & ~filters.edited)
  107. @capture_err
  108. async def cheat(_, message: Message):
  109. if len(message.command) < 3:
  110. await message.reply_text("/cheat [language] [query]")
  111. return
  112. text = message.text.split(None, 1)[1]
  113. m = await message.reply_text("Searching")
  114. try:
  115. ftext = text.split()
  116. language = ftext[0]
  117. query = ftext[1]
  118. data = requests.get(f"http://cht.sh/{language}/{query}?QT").text
  119. if not data:
  120. await m.edit("Found Literally Nothing!")
  121. return
  122. await m.edit(f"`{data}`")
  123. except Exception as e:
  124. await m.edit(str(e))
  125. print(str(e))
  126. # Weather
  127. @app.on_message(cust_filter.command(commands=("weather")) & ~filters.edited)
  128. @capture_err
  129. async def weather(_, message: Message):
  130. if len(message.command) != 2:
  131. await message.reply_text("/weather [city]")
  132. return
  133. city = message.text.split(None, 1)[1]
  134. m = await message.reply_text("Fetching Data")
  135. r = requests.get(f"https://wttr.in/{city}?mnTC0")
  136. data = r.text
  137. await m.edit(f"`{data}`")
  138. # Translate
  139. @app.on_message(cust_filter.command(commands=("tr")) & ~filters.edited)
  140. @capture_err
  141. async def tr(_, message):
  142. if len(message.command) != 2:
  143. await message.reply_text("/tr [LANGUAGE_CODE]")
  144. return
  145. lang = message.text.split(None, 1)[1]
  146. if not message.reply_to_message or not lang:
  147. await message.reply_text(
  148. "Reply to a message with /tr [language code]"
  149. + "\nGet supported language list from here -"
  150. + " https://py-googletrans.readthedocs.io/en"
  151. + "/latest/#googletrans-languages"
  152. )
  153. return
  154. text = message.reply_to_message.text
  155. i = Translator().translate(text, dest=lang)
  156. await message.reply_text(i.text)
  157. fetch_limit = 0
  158. @app.on_message(filters.command("json") & ~filters.edited)
  159. @capture_err
  160. async def json_fetch(_, message):
  161. global fetch_limit
  162. if len(message.command) != 2:
  163. await message.reply_text("/json [URL]")
  164. return
  165. elif fetch_limit > 500:
  166. await message.reply_text("Today's Quota Exceeded!, lol")
  167. return
  168. url = message.text.split(None, 1)[1]
  169. try:
  170. data = await fetch(url)
  171. data = await json_prettify(data)
  172. fetch_limit += 1
  173. if len(data) < 4090:
  174. await message.reply_text(data)
  175. else:
  176. neko_link = await neko(data)
  177. await message.reply_text(f"[OUTPUT_TOO_LONG]({neko_link})", disable_web_page_preview=False)
  178. except Exception as e:
  179. await message.reply_text(str(e))
  180. print(str(e))
  181. @app.on_message(filters.command('bun'))
  182. @capture_err
  183. async def bunn(_, message):
  184. if message.reply_to_message:
  185. await message.reply_to_message.reply_sticker('CAACAgUAAx0CWIlO9AABARyRYBhyjKXFATVhu7AGQwip3TzSFiMAAuMBAAJ7usBUIu2xBtXTmuweBA')
  186. await app.send_message(message.chat.id, text="Eat Bun")
  187. return
  188. if not message.reply_to_message:
  189. await message.reply_sticker('CAACAgUAAx0CWIlO9AABARyRYBhyjKXFATVhu7AGQwip3TzSFiMAAuMBAAJ7usBUIu2xBtXTmuweBA')
  190. await app.send_message(message.chat.id, text="Eat Bun")