misc.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import secrets
  2. import string
  3. import requests
  4. import ipinfo
  5. from pyrogram import filters
  6. from pyrogram.types import Message
  7. from googletrans import Translator
  8. from cryptography.fernet import Fernet
  9. from wbb import app, FERNET_ENCRYPTION_KEY
  10. from wbb.utils import cust_filter, random_line
  11. __MODULE__ = "Misc"
  12. __HELP__ = '''/commit - Generate Funny Commit Messages
  13. /runs - Idk Test Yourself
  14. /quote - Get Random Linux Quotes
  15. /id - Get Chat_ID or User_ID
  16. /dev - Forward Anything To Developers [SPAM = GBAN]
  17. /random - Generate Random Complex Passwords
  18. /http - Get Cats Reference Photo For Http Error Codes
  19. /encrypt - Encrypt Text [Can Only Be Decrypted By This Bot]
  20. /decrypt - Decrypt Text
  21. /ipinfo - Get Info About An Ip Address
  22. /cheat - Get Programming Related Help
  23. /weather - To Get Weather Info
  24. /tr - Translate A Message'''
  25. @app.on_message(cust_filter.command(commands=("commit")) & ~filters.edited)
  26. async def commit(_, message: Message):
  27. await message.reply_text((await random_line('wbb/utils/commit.txt')))
  28. @app.on_message(cust_filter.command(commands=("runs")) & ~filters.edited)
  29. async def runs(_, message: Message):
  30. await message.reply_text((await random_line('wbb/utils/runs.txt')))
  31. @app.on_message(cust_filter.command(commands=("quote")) & ~filters.edited)
  32. async def quote(_, message: Message):
  33. await message.reply_text((await random_line('wbb/utils/quotes.txt')))
  34. @app.on_message(cust_filter.command(commands=("id")) & ~filters.edited)
  35. async def get_id(_, message: Message):
  36. if len(message.command) != 1:
  37. username = message.text.split(None, 1)[1]
  38. user_id = (await app.get_users(username)).id
  39. msg = f"{username}'s ID is `{user_id}`"
  40. await message.reply_text(msg)
  41. elif len(message.command) == 1 and not message.reply_to_message:
  42. chat_id = message.chat.id
  43. msg = f"{message.chat.title}'s ID is `{chat_id}`"
  44. await message.reply_text(msg)
  45. elif len(message.command) == 1 and message.reply_to_message:
  46. from_user_id = message.reply_to_message.from_user.id
  47. from_user_mention = message.reply_to_message.from_user.mention
  48. msg = f"{from_user_mention}'s ID is `{from_user_id}`"
  49. await message.reply_text(msg)
  50. # Random
  51. @app.on_message(cust_filter.command(commands=('random')) & ~filters.edited)
  52. async def random(_, message: Message):
  53. if len(message.command) != 2:
  54. await message.reply_text('"/random" Needs An Argurment.'
  55. ' Ex: `/random 5`')
  56. random
  57. length = message.text.split(None, 1)[1]
  58. try:
  59. if 1 < int(length) < 1000:
  60. alphabet = string.ascii_letters + string.digits
  61. password = ''.join(secrets.choice(alphabet) for i in
  62. range(int(length)))
  63. await message.reply_text(f"`{password}`")
  64. else:
  65. await message.reply_text('Specify A Length Between 1-1000')
  66. except ValueError:
  67. await message.reply_text("Strings Won't Work!, Pass A"
  68. + " Positive Integer Between 1-1000")
  69. # http cat search
  70. @app.on_message(cust_filter.command(commands=('http')) & ~filters.edited)
  71. async def http(_, message: Message):
  72. if len(message.command) != 2:
  73. await message.reply_text('"/http" Needs An Argument. Ex: `/http 404`')
  74. return
  75. code = message.text.split(None, 1)[1]
  76. url = f"https://http.cat/{code}"
  77. final = url.replace(' ', '')
  78. await message.reply_photo(final)
  79. # Encrypt
  80. @app.on_message(cust_filter.command(commands=('encrypt')) & ~filters.edited)
  81. async def encrypt(_, message: Message):
  82. if not message.reply_to_message:
  83. await message.reply_text('Reply To A Message To Encrypt It.')
  84. return
  85. text = message.reply_to_message.text
  86. text_in_bytes = bytes(text, 'utf-8')
  87. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  88. encrypted_text = cipher_suite.encrypt(text_in_bytes)
  89. bytes_in_text = encrypted_text.decode("utf-8")
  90. await message.reply_text(bytes_in_text)
  91. # Decrypt
  92. @app.on_message(cust_filter.command(commands=('decrypt')) & ~filters.edited)
  93. async def decrypt(_, message: Message):
  94. if not message.reply_to_message:
  95. await message.reply_text('Reply To A Message To Decrypt It.')
  96. return
  97. text = message.reply_to_message.text
  98. text_in_bytes = bytes(text, 'utf-8')
  99. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  100. decoded_text = cipher_suite.decrypt(text_in_bytes)
  101. bytes_in_text = decoded_text.decode("utf-8")
  102. await message.reply_text(bytes_in_text)
  103. # Ipinfo
  104. @app.on_message(cust_filter.command(commands=('ipinfo')) & ~filters.edited)
  105. async def ipaddrinfo(_, message: Message):
  106. if len(message.command) != 2:
  107. await message.reply_text('`/ipinfo` Requires An IP As Argument'
  108. + '. Ex - `/ipinfo 1.1.1.1`')
  109. return
  110. ipaddr = message.text.split(None, 1)[1]
  111. handler = ipinfo.getHandler()
  112. details = handler.getDetails(ipaddr)
  113. await message.reply_text(f'''`IP - {details.ip}
  114. City - {details.city}
  115. Region - {details.region}
  116. Country - {details.country}
  117. Location - {details.loc}
  118. ORG - {details.org}
  119. Postal - {details.postal}
  120. Timezone - {details.timezone}`''')
  121. # Cheat.sh
  122. @app.on_message(cust_filter.command(commands=("cheat")) & ~filters.edited)
  123. async def cheat(_, message: Message):
  124. text = message.text.split(None, 1)[1]
  125. ftext = text.split()
  126. try:
  127. language = ftext[0]
  128. except IndexError:
  129. await message.reply_text("/cheat [language] [query]")
  130. return
  131. try:
  132. query = ftext[1]
  133. except IndexError:
  134. await message.reply_text("/cheat [language] [query]")
  135. return
  136. r = requests.get(f"http://cht.sh/{language}/{query}?QT")
  137. reply = r.text
  138. await message.reply_text(f"`{reply}`")
  139. # Weather
  140. @app.on_message(cust_filter.command(commands=("weather")) & ~filters.edited)
  141. async def weather(_, message: Message):
  142. city = message.text.split(None, 1)[1]
  143. if len(message.command) != 2:
  144. await message.reply_text("/weather [city]")
  145. return
  146. r = requests.get(f"https://wttr.in/{city}?mnTC0")
  147. data = r.text
  148. await message.reply_text(f"`{data}`")
  149. # Translate
  150. @app.on_message(cust_filter.command(commands=("tr")) & ~filters.edited)
  151. async def tr(_, message: Message):
  152. lang = message.text.split(None, 1)[1]
  153. if not message.reply_to_message or lang == "":
  154. await message.reply_text(
  155. "Reply to a message with /tr [language code]"
  156. + "\nGet supported language list from here -"
  157. + " https://py-googletrans.readthedocs.io/en"
  158. + "/latest/#googletrans-languages"
  159. )
  160. return
  161. text = message.reply_to_message.text
  162. i = Translator().translate(text, dest=lang)
  163. await message.reply_text(i.text)