admin.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. from pyrogram.types import Message
  2. from wbb import OWNER_ID, SUDO_USER_ID, app
  3. from wbb.utils import cust_filter
  4. __MODULE__ = "Admin"
  5. __HELP__ = "/ban - Ban A User\n" \
  6. "/unban - Unban A User\n" \
  7. "/kick - Kick A User\n" \
  8. "/purge - Purge Messages\n" \
  9. "/banme - Bans A User Who Issued The Command\n" \
  10. "/kickme - Kicks A User Who Issued The Command"
  11. SUDO = [OWNER_ID, SUDO_USER_ID]
  12. # Get List Of Admins In A Chat
  13. async def list_admins(group_id):
  14. list_of_admins = []
  15. async for member in app.iter_chat_members(
  16. group_id, filter="administrators"):
  17. list_of_admins.append(member.user.id)
  18. return list_of_admins
  19. # Get List Of Members In A Chat
  20. async def list_members(group_id):
  21. list_of_members = []
  22. async for member in app.iter_chat_members(group_id):
  23. list_of_members.append(member.user.id)
  24. return list_of_members
  25. # Purge Messages
  26. @app.on_message(cust_filter.command(commands=("purge")))
  27. async def purge(client, message: Message):
  28. message_ids = []
  29. if message.chat.type not in ("supergroup", "channel"):
  30. return
  31. admins = await list_admins(message.chat.id)
  32. if message.from_user.id in admins \
  33. or message.from_user.id in SUDO:
  34. chat_id = message.chat.id
  35. from_user_id = message.from_user.id
  36. if (await app.get_chat_member(chat_id,
  37. from_user_id)).can_delete_messages \
  38. or (await app.get_chat_member(chat_id, from_user_id)).status \
  39. == 'creator' \
  40. or message.from_user.id in SUDO:
  41. if message.reply_to_message:
  42. for a_s_message_id in range(
  43. message.reply_to_message.message_id,
  44. message.message_id
  45. ):
  46. message_ids.append(a_s_message_id)
  47. if len(message_ids) == 100:
  48. await client.delete_messages(
  49. chat_id=message.chat.id,
  50. message_ids=message_ids,
  51. revoke=True
  52. )
  53. message_ids = []
  54. if len(message_ids) > 0:
  55. await client.delete_messages(
  56. chat_id=message.chat.id,
  57. message_ids=message_ids,
  58. revoke=True
  59. )
  60. else:
  61. await message.reply_text(
  62. "Reply To A Message To Delete It,"
  63. " Don't Make Fun Of Yourself!")
  64. # Kick members
  65. @app.on_message(cust_filter.command(commands=("kick")))
  66. async def kick(client, message: Message):
  67. try:
  68. username = (message.text.split(None, 2)[1])
  69. except IndexError:
  70. username = ""
  71. if (await app.get_chat_member(
  72. message.chat.id, message.from_user.id)).status == 'creator' \
  73. or (await app.get_chat_member(
  74. message.chat.id, message.from_user.id)).can_restrict_members \
  75. is True or message.from_user.id in SUDO:
  76. if username != "":
  77. if username in SUDO or (await app.get_users(username)).id in SUDO:
  78. await message.reply_text("You Wanna Kick The Elevated One?")
  79. else:
  80. if (await app.get_users(username)).id in \
  81. await list_members(message.chat.id):
  82. await message.chat.kick_member(username)
  83. await message.chat.unban_member(username)
  84. await message.reply_text(f"Kicked {username}")
  85. else:
  86. await message.reply_text("This user isn't here,"
  87. " don't bully me!")
  88. else:
  89. if username in SUDO or message.reply_to_message.from_user.id \
  90. in SUDO:
  91. await message.reply_text("You Wanna Kick The Elevated One?")
  92. else:
  93. if message.reply_to_message.from_user.id in \
  94. await list_members(message.chat.id):
  95. user_id = message.reply_to_message.from_user.id
  96. await message.reply_to_message.chat.kick_member(user_id)
  97. await message.reply_to_message.chat.unban_member(user_id)
  98. await message.reply_text(f"Kicked {username}")
  99. else:
  100. await message.reply_text("This user isn't here,"
  101. " don't bully me!")
  102. # Ban members
  103. @app.on_message(cust_filter.command(commands=("ban")))
  104. async def ban(client, message: Message):
  105. try:
  106. username = (message.text.split(None, 2)[1])
  107. except IndexError:
  108. username = ""
  109. if (await app.get_chat_member(
  110. message.chat.id, message.from_user.id)).status == 'creator' \
  111. or (await app.get_chat_member(
  112. message.chat.id, message.from_user.id)).can_restrict_members \
  113. is True or message.from_user.id in SUDO:
  114. if username != "":
  115. if username in SUDO or (await app.get_users(username)).id in SUDO:
  116. await message.reply_text("You Wanna Ban The Elevated One?")
  117. else:
  118. if (await app.get_users(username)).id in \
  119. await list_members(message.chat.id):
  120. await message.chat.kick_member(username)
  121. await message.reply_text(f"Banned {username}")
  122. else:
  123. await message.reply_text("This user isn't here,"
  124. " don't bully me!")
  125. else:
  126. if username in SUDO or message.reply_to_message.from_user.id \
  127. in SUDO:
  128. await message.reply_text("You Wanna Ban The Elevated One?")
  129. else:
  130. if (await app.get_users(username)).id in \
  131. await list_members(message.chat.id):
  132. user_id = message.reply_to_message.from_user.id
  133. await message.reply_to_message.chat.kick_member(user_id)
  134. await message.reply_text(f"Banned {username}")
  135. else:
  136. await message.reply_text("This user isn't here,"
  137. " don't bully me!")
  138. # Unban members
  139. @app.on_message(cust_filter.command(commands=("unban")))
  140. async def unban(client, message: Message):
  141. try:
  142. username = (message.text.split(None, 2)[1])
  143. except IndexError:
  144. username = ""
  145. if (await app.get_chat_member(
  146. message.chat.id, message.from_user.id)).status == 'creator' \
  147. or (await app.get_chat_member(
  148. message.chat.id, message.from_user.id)).can_restrict_members \
  149. is True or message.from_user.id in SUDO:
  150. if username != "":
  151. if (await app.get_users(username)).id not in \
  152. await list_members(message.chat.id):
  153. await message.chat.unban_member(username)
  154. await message.reply_text(f"Unbanned {username}")
  155. else:
  156. await message.reply_text("This user is already here,"
  157. " don't bully me!")
  158. else:
  159. if (await app.get_users(username)).id not in \
  160. await list_members(message.chat.id):
  161. user_id = message.reply_to_message.from_user.id
  162. await message.reply_to_message.chat.unban_member(user_id)
  163. await message.reply_text(f"Unbanned {username}")
  164. else:
  165. await message.reply_text("This user is already here,"
  166. " don't bully me!")
  167. # Kick members on their own call
  168. @app.on_message(cust_filter.command(commands=("kickme")))
  169. async def kickme(client, message: Message):
  170. if message.from_user.id not in SUDO:
  171. await message.chat.kick_member(message.from_user.id)
  172. await message.chat.unban_member(message.from_user.id)
  173. await message.reply_text("Kicked!, Joke's on you, I'm into that shit!")
  174. else:
  175. await message.reply_text("It doesn't works that way mate.")
  176. # Ban members on their own call
  177. @app.on_message(cust_filter.command(commands=("banme")))
  178. async def banme(client, message: Message):
  179. if message.from_user.id not in SUDO:
  180. await message.chat.kick_member(message.from_user.id)
  181. await message.reply_text("Banned!, Joke's on you, I'm into that shit!")
  182. else:
  183. await message.reply_text("It doesn't works that way mate.")