admin.py 8.3 KB

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