misc.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import secrets
  2. import string
  3. import requests
  4. from pyrogram import filters
  5. from pyrogram.types import Message
  6. from badwords import listOfBadWords as badWords
  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. /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. @app.on_message(cust_filter.command(commands=("commit")) & ~filters.edited)
  25. async def commit(_, message: Message):
  26. await message.reply_text((await random_line('wbb/utils/commit.txt')))
  27. @app.on_message(cust_filter.command(commands=("runs")) & ~filters.edited)
  28. async def runs(_, message: Message):
  29. await message.reply_text((await random_line('wbb/utils/runs.txt')))
  30. @app.on_message(cust_filter.command(commands=("id")) & ~filters.edited)
  31. async def get_id(_, message: Message):
  32. if len(message.command) != 1:
  33. username = message.text.split(None, 1)[1]
  34. user_id = (await app.get_users(username)).id
  35. msg = f"{username}'s ID is `{user_id}`"
  36. await message.reply_text(msg)
  37. elif len(message.command) == 1 and not message.reply_to_message:
  38. chat_id = message.chat.id
  39. msg = f"{message.chat.title}'s ID is `{chat_id}`"
  40. await message.reply_text(msg)
  41. elif len(message.command) == 1 and message.reply_to_message:
  42. from_user_id = message.reply_to_message.from_user.id
  43. from_user_mention = message.reply_to_message.from_user.mention
  44. msg = f"{from_user_mention}'s ID is `{from_user_id}`"
  45. await message.reply_text(msg)
  46. # Random
  47. @app.on_message(cust_filter.command(commands=('random')) & ~filters.edited)
  48. async def random(_, message: Message):
  49. if len(message.command) != 2:
  50. await message.reply_text('"/random" Needs An Argurment.'
  51. ' Ex: `/random 5`')
  52. random
  53. length = message.text.split(None, 1)[1]
  54. try:
  55. if 1 < int(length) < 1000:
  56. alphabet = string.ascii_letters + string.digits
  57. password = ''.join(secrets.choice(alphabet) for i in
  58. range(int(length)))
  59. await message.reply_text(f"`{password}`")
  60. else:
  61. await message.reply_text('Specify A Length Between 1-1000')
  62. except ValueError:
  63. await message.reply_text("Strings Won't Work!, Pass A"
  64. + " Positive Integer Between 1-1000")
  65. # Encrypt
  66. @app.on_message(cust_filter.command(commands=('encrypt')) & ~filters.edited)
  67. async def encrypt(_, message: Message):
  68. if not message.reply_to_message:
  69. await message.reply_text('Reply To A Message To Encrypt It.')
  70. return
  71. text = message.reply_to_message.text
  72. text_in_bytes = bytes(text, 'utf-8')
  73. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  74. encrypted_text = cipher_suite.encrypt(text_in_bytes)
  75. bytes_in_text = encrypted_text.decode("utf-8")
  76. await message.reply_text(bytes_in_text)
  77. # Decrypt
  78. @app.on_message(cust_filter.command(commands=('decrypt')) & ~filters.edited)
  79. async def decrypt(_, message: Message):
  80. if not message.reply_to_message:
  81. await message.reply_text('Reply To A Message To Decrypt It.')
  82. return
  83. text = message.reply_to_message.text
  84. text_in_bytes = bytes(text, 'utf-8')
  85. cipher_suite = Fernet(FERNET_ENCRYPTION_KEY)
  86. decoded_text = cipher_suite.decrypt(text_in_bytes)
  87. bytes_in_text = decoded_text.decode("utf-8")
  88. await message.reply_text(bytes_in_text)
  89. # Cheat.sh
  90. @app.on_message(cust_filter.command(commands=("cheat")) & ~filters.edited)
  91. async def cheat(_, message: Message):
  92. text = message.text.split(None, 1)[1]
  93. ftext = text.split()
  94. try:
  95. language = ftext[0]
  96. except IndexError:
  97. await message.reply_text("/cheat [language] [query]")
  98. return
  99. try:
  100. query = ftext[1]
  101. except IndexError:
  102. await message.reply_text("/cheat [language] [query]")
  103. return
  104. r = requests.get(f"http://cht.sh/{language}/{query}?QT")
  105. reply = r.text
  106. await message.reply_text(f"`{reply}`")
  107. # Weather
  108. @app.on_message(cust_filter.command(commands=("weather")) & ~filters.edited)
  109. async def weather(_, message: Message):
  110. city = message.text.split(None, 1)[1]
  111. if len(message.command) != 2:
  112. await message.reply_text("/weather [city]")
  113. return
  114. r = requests.get(f"https://wttr.in/{city}?mnTC0")
  115. data = r.text
  116. await message.reply_text(f"`{data}`")
  117. # Translate
  118. @app.on_message(cust_filter.command(commands=("tr")) & ~filters.edited)
  119. async def tr(_, message: Message):
  120. lang = message.text.split(None, 1)[1]
  121. if not message.reply_to_message or lang == "":
  122. await message.reply_text(
  123. "Reply to a message with /tr [language code]"
  124. + "\nGet supported language list from here -"
  125. + " https://py-googletrans.readthedocs.io/en"
  126. + "/latest/#googletrans-languages"
  127. )
  128. return
  129. text = message.reply_to_message.text
  130. i = Translator().translate(text, dest=lang)
  131. await message.reply_text(i.text)
  132. @app.on_message(filters.all)
  133. async def badwordsfilter2(_, message):
  134. badMsg = message.text.split(' ')
  135. for badWord in badMsg:
  136. if badWord in bad_words:
  137. await message.delete()
  138. await message.reply_text(f"NoU {word}")