misc.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. __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. /random - Generate Random Complex Passwords
  17. /http - Get Cats Reference Photo For Http Error Codes
  18. /encrypt - Encrypt Text [Can Only Be Decrypted By This Bot]
  19. /decrypt - Decrypt Text
  20. /ipinfo - Get Info About An Ip Address
  21. /cheat - Get Programming Related Help
  22. /weather - To Get Weather Info
  23. /tr - Translate A Message
  24. #RTFM - Check it lol'''
  25. @app.on_message(cust_filter.command(commands=("commit")) & ~filters.edited)
  26. @capture_err
  27. async def commit(_, message: Message):
  28. await message.reply_text((await random_line('wbb/utils/commit.txt')))
  29. @app.on_message(filters.command("RTFM", "#"))
  30. @capture_err
  31. async def rtfm(_, message):
  32. await message.delete()
  33. if not message.reply_to_message:
  34. await message.reply_text("Reply To A Message lol")
  35. return
  36. await message.reply_to_message.reply_text("Are You Lost? READ THE FUCKING DOCS!")
  37. @app.on_message(cust_filter.command(commands=("runs")) & ~filters.edited)
  38. @capture_err
  39. async def runs(_, message: Message):
  40. await message.reply_text((await random_line('wbb/utils/runs.txt')))
  41. @app.on_message(cust_filter.command(commands=("id")) & ~filters.edited)
  42. @capture_err
  43. async def get_id(_, message: Message):
  44. if len(message.command) != 1:
  45. username = message.text.split(None, 1)[1]
  46. user_id = (await app.get_users(username)).id
  47. msg = f"{username}'s ID is `{user_id}`"
  48. await message.reply_text(msg)
  49. elif len(message.command) == 1 and not message.reply_to_message:
  50. chat_id = message.chat.id
  51. msg = f"{message.chat.title}'s ID is `{chat_id}`"
  52. await message.reply_text(msg)
  53. elif len(message.command) == 1 and message.reply_to_message:
  54. from_user_id = message.reply_to_message.from_user.id
  55. from_user_mention = message.reply_to_message.from_user.mention
  56. msg = f"{from_user_mention}'s ID is `{from_user_id}`"
  57. await message.reply_text(msg)
  58. # Random
  59. @app.on_message(cust_filter.command(commands=('random')) & ~filters.edited)
  60. @capture_err
  61. async def random(_, message: Message):
  62. if len(message.command) != 2:
  63. await message.reply_text('"/random" Needs An Argurment.'
  64. ' Ex: `/random 5`')
  65. return
  66. length = message.text.split(None, 1)[1]
  67. try:
  68. if 1 < int(length) < 1000:
  69. alphabet = string.ascii_letters + string.digits
  70. password = ''.join(secrets.choice(alphabet) for i in
  71. range(int(length)))
  72. await message.reply_text(f"`{password}`")
  73. else:
  74. await message.reply_text('Specify A Length Between 1-1000')
  75. except ValueError:
  76. await message.reply_text("Strings Won't Work!, Pass A"
  77. + " Positive Integer Between 1-1000")
  78. # Encrypt
  79. @app.on_message(cust_filter.command(commands=('encrypt')) & ~filters.edited)
  80. @capture_err
  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. @capture_err
  94. async def decrypt(_, message: Message):
  95. if not message.reply_to_message:
  96. await message.reply_text('Reply To A Message To Decrypt It.')
  97. return
  98. text = message.reply_to_message.text
  99. text_in_bytes = bytes(text, 'utf-8')
  100. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  101. decoded_text = cipher_suite.decrypt(text_in_bytes)
  102. bytes_in_text = decoded_text.decode("utf-8")
  103. await message.reply_text(bytes_in_text)
  104. # Cheat.sh
  105. @app.on_message(cust_filter.command(commands=("cheat")) & ~filters.edited)
  106. @capture_err
  107. async def cheat(_, message: Message):
  108. if len(message.command) < 3:
  109. await message.reply_text("/cheat [language] [query]")
  110. return
  111. text = message.text.split(None, 1)[1]
  112. try:
  113. ftext = text.split()
  114. language = ftext[0]
  115. query = ftext[1]
  116. r = requests.get(f"http://cht.sh/{language}/{query}?QT")
  117. reply = r.text
  118. if not reply:
  119. await message.reply_text("Found Literally Nothing!")
  120. return
  121. await message.reply_text(f"`{reply}`")
  122. except Exception as e:
  123. await message.reply_text(str(e))
  124. print(str(e))
  125. # Weather
  126. @app.on_message(cust_filter.command(commands=("weather")) & ~filters.edited)
  127. @capture_err
  128. async def weather(_, message: Message):
  129. city = message.text.split(None, 1)[1]
  130. if len(message.command) != 2:
  131. await message.reply_text("/weather [city]")
  132. return
  133. r = requests.get(f"https://wttr.in/{city}?mnTC0")
  134. data = r.text
  135. await message.reply_text(f"`{data}`")
  136. # Translate
  137. @app.on_message(cust_filter.command(commands=("tr")) & ~filters.edited)
  138. @capture_err
  139. async def tr(_, message: Message):
  140. lang = message.text.split(None, 1)[1]
  141. if not message.reply_to_message or lang == "":
  142. await message.reply_text(
  143. "Reply to a message with /tr [language code]"
  144. + "\nGet supported language list from here -"
  145. + " https://py-googletrans.readthedocs.io/en"
  146. + "/latest/#googletrans-languages"
  147. )
  148. return
  149. text = message.reply_to_message.text
  150. i = Translator().translate(text, dest=lang)
  151. await message.reply_text(i.text)
  152. @app.on_message(filters.command('bun'))
  153. @capture_err
  154. async def bunn(_, message):
  155. if message.reply_to_message:
  156. await message.reply_to_message.reply_sticker('CAACAgUAAx0CWIlO9AABARyRYBhyjKXFATVhu7AGQwip3TzSFiMAAuMBAAJ7usBUIu2xBtXTmuweBA')
  157. await app.send_message(message.chat.id, text="Eat Bun")
  158. return
  159. if not message.reply_to_message:
  160. await message.reply_sticker('CAACAgUAAx0CWIlO9AABARyRYBhyjKXFATVhu7AGQwip3TzSFiMAAuMBAAJ7usBUIu2xBtXTmuweBA')
  161. await app.send_message(message.chat.id, text="Eat Bun")