admin.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. from pyrogram import filters
  2. from pyrogram.types import Message, ChatPermissions
  3. from wbb import OWNER_ID, SUDO_USER_ID, app
  4. from wbb.utils import cust_filter
  5. from wbb.utils.botinfo import BOT_ID
  6. __MODULE__ = "Admin"
  7. __HELP__ = '''/ban - Ban A User
  8. /unban - Unban A User
  9. /kick - Kick A User
  10. /purge - Purge Messages
  11. /del - Delete Replied Message
  12. /banme - Bans A User Who Issued The Command
  13. /kickme - Kicks A User Who Issued The Command
  14. /promote - Promote A Member
  15. /pin - Pin A Message
  16. /unpin - Unpin A Message
  17. /mute - Mute A User
  18. /unmute - Unmute A User'''
  19. SUDO = [OWNER_ID, SUDO_USER_ID]
  20. # Get List Of Admins In A Chat
  21. async def list_admins(group_id):
  22. list_of_admins = []
  23. async for member in app.iter_chat_members(
  24. group_id, filter="administrators"):
  25. list_of_admins.append(member.user.id)
  26. return list_of_admins
  27. # Get List Of Members In A Chat
  28. async def list_members(group_id):
  29. list_of_members = []
  30. async for member in app.iter_chat_members(group_id):
  31. list_of_members.append(member.user.id)
  32. return list_of_members
  33. # Purge Messages
  34. @app.on_message(cust_filter.command(commands=("purge")) & ~filters.edited)
  35. async def purge(client, message: Message):
  36. message_ids = []
  37. if message.chat.type not in ("supergroup", "channel"):
  38. return
  39. admins = await list_admins(message.chat.id)
  40. if message.from_user.id in admins \
  41. or message.from_user.id in SUDO:
  42. chat_id = message.chat.id
  43. from_user_id = message.from_user.id
  44. if (await app.get_chat_member(chat_id,
  45. from_user_id)).can_delete_messages \
  46. or (await app.get_chat_member(chat_id, from_user_id)).status \
  47. == 'creator' \
  48. or message.from_user.id in SUDO:
  49. if message.reply_to_message:
  50. for a_s_message_id in range(
  51. message.reply_to_message.message_id,
  52. message.message_id
  53. ):
  54. message_ids.append(a_s_message_id)
  55. if len(message_ids) == 100:
  56. await client.delete_messages(
  57. chat_id=message.chat.id,
  58. message_ids=message_ids,
  59. revoke=True
  60. )
  61. message_ids = []
  62. if len(message_ids) > 0:
  63. await client.delete_messages(
  64. chat_id=message.chat.id,
  65. message_ids=message_ids,
  66. revoke=True
  67. )
  68. else:
  69. await message.reply_text(
  70. "Reply To A Message To Delete It,"
  71. " Don't Make Fun Of Yourself!")
  72. else:
  73. await message.reply_text("Your Don't Have Enough Permissions!")
  74. await message.delete()
  75. # Kick members
  76. @app.on_message(cust_filter.command(commands=("kick")) & ~filters.edited)
  77. async def kick(_, message: Message):
  78. if (await app.get_chat_member(
  79. message.chat.id, message.from_user.id)).status == 'creator' \
  80. or (await app.get_chat_member(
  81. message.chat.id, message.from_user.id)).can_restrict_members \
  82. is True or message.from_user.id in SUDO:
  83. if len(message.command) == 2:
  84. username = (message.text.split(None, 1)[1])
  85. if (await app.get_users(username)).id in SUDO:
  86. await message.reply_text("You Wanna Kick The Elevated One?")
  87. else:
  88. if (await app.get_users(username)).id in \
  89. await list_members(message.chat.id):
  90. await message.chat.kick_member(username)
  91. await message.chat.unban_member(username)
  92. await message.reply_text(f"Kicked {username}")
  93. else:
  94. await message.reply_text("This user isn't here,"
  95. " consider kicking yourself.")
  96. if len(message.command) == 1 and message.reply_to_message:
  97. if message.reply_to_message.from_user.id in SUDO:
  98. await message.reply_text("You Wanna Kick The Elevated One?")
  99. else:
  100. if message.reply_to_message.from_user.id in \
  101. await list_members(message.chat.id):
  102. user_id = message.reply_to_message.from_user.id
  103. await message.reply_to_message.chat.kick_member(user_id)
  104. await message.reply_to_message.chat.unban_member(user_id)
  105. await message.reply_text("Kicked!")
  106. else:
  107. await message.reply_text("This user isn't here.")
  108. # Ban members
  109. @app.on_message(cust_filter.command(commands=("ban")) & ~filters.edited)
  110. async def ban(_, message: Message):
  111. if (await app.get_chat_member(
  112. message.chat.id, message.from_user.id)).status == 'creator' \
  113. or (await app.get_chat_member(
  114. message.chat.id, message.from_user.id)).can_restrict_members \
  115. is True or message.from_user.id in SUDO:
  116. if len(message.command) == 2:
  117. username = (message.text.split(None, 1)[1])
  118. if (await app.get_users(username)).id in SUDO:
  119. await message.reply_text("You Wanna Ban The Elevated One?")
  120. else:
  121. if (await app.get_users(username)).id in \
  122. await list_members(message.chat.id):
  123. await message.chat.kick_member(username)
  124. await message.reply_text(f"Banned! {username}")
  125. else:
  126. await message.reply_text("This user isn't here,"
  127. " consider banning yourself.")
  128. if len(message.command) == 1 and message.reply_to_message:
  129. if message.reply_to_message.from_user.id in SUDO:
  130. await message.reply_text("You Wanna Ban The Elevated One?")
  131. else:
  132. if message.reply_to_message.from_user.id in \
  133. await list_members(message.chat.id):
  134. user_id = message.reply_to_message.from_user.id
  135. await message.reply_to_message.chat.kick_member(user_id)
  136. await message.reply_text("Banned!")
  137. else:
  138. await message.reply_text("This user isn't here.")
  139. # Unban members
  140. @app.on_message(cust_filter.command(commands=("unban")) & ~filters.edited)
  141. async def unban(_, message: Message):
  142. if (await app.get_chat_member(
  143. message.chat.id, message.from_user.id)).status == 'creator' \
  144. or (await app.get_chat_member(
  145. message.chat.id, message.from_user.id)).can_restrict_members \
  146. is True or message.from_user.id in SUDO:
  147. if len(message.command) == 2:
  148. username = (message.text.split(None, 1)[1])
  149. if (await app.get_users(username)).id not in \
  150. await list_members(message.chat.id):
  151. await message.chat.unban_member(username)
  152. await message.reply_text(f"Unbanned! {username}")
  153. else:
  154. await message.reply_text("This user is already here,"
  155. " consider banning yourself.")
  156. if len(message.command) == 1 and message.reply_to_message:
  157. if message.reply_to_message.from_user.id not in \
  158. await list_members(message.chat.id):
  159. user_id = message.reply_to_message.from_user.id
  160. await message.chat.unban_member(user_id)
  161. await message.reply_text("Unbanned!")
  162. else:
  163. await message.reply_text("This user is already here.")
  164. # Delete messages
  165. @app.on_message(cust_filter.command(commands=("del")))
  166. async def delete(_, message: Message):
  167. admins = await list_admins(message.chat.id)
  168. chat_id = message.chat.id
  169. from_user_id = message.from_user.id
  170. if message.from_user.id in admins \
  171. or message.from_user.id in SUDO:
  172. if (await app.get_chat_member(chat_id,
  173. from_user_id)).can_delete_messages \
  174. or (await app.get_chat_member(chat_id, from_user_id)).status \
  175. == 'creator' \
  176. or message.from_user.id in SUDO:
  177. await message.reply_to_message.delete()
  178. await message.delete()
  179. else:
  180. await message.reply_text("You Don't Have Enough Permissions,"
  181. + " Consider Deleting Yourself!")
  182. # Promote Members
  183. @app.on_message(cust_filter.command(commands=("promote")) & ~filters.edited)
  184. async def promote(_, message: Message):
  185. admins = await list_admins(message.chat.id)
  186. chat_id = message.chat.id
  187. from_user_id = message.from_user.id
  188. if (await app.get_chat_member(chat_id,
  189. BOT_ID)).can_promote_members:
  190. if message.from_user.id in admins \
  191. or message.from_user.id in SUDO:
  192. if (await app.get_chat_member(chat_id,
  193. from_user_id)).can_promote_members \
  194. or (await app.get_chat_member(chat_id, from_user_id)).status \
  195. == 'creator' \
  196. or message.from_user.id in SUDO:
  197. if message.text != '/promote':
  198. username = message.text.replace('/promote', '')
  199. user_id = (await app.get_users(username)).id
  200. await message.chat.promote_member(
  201. user_id=user_id,
  202. can_change_info=True,
  203. can_invite_users=True,
  204. can_delete_messages=True)
  205. await message.reply_text('Promoted!')
  206. else:
  207. user_id = message.reply_to_message.from_user.id
  208. await message.chat.promote_member(
  209. user_id=user_id,
  210. can_change_info=True,
  211. can_invite_users=True,
  212. can_delete_messages=True)
  213. await message.reply_text('Promoted!')
  214. else:
  215. await message.reply_text("Yeah, I Can See You're An Admin,"
  216. + " But You Don't Have Permissions"
  217. + " To Promote Someone.")
  218. else:
  219. await message.reply_text("You're Not An Admin, Want A Good Ban?")
  220. else:
  221. await message.reply_text("Well, Your Know What?, I'M NOT AN ADMIN!"
  222. + " MAKE ME ADMIN!")
  223. # Pin Messages
  224. @app.on_message(cust_filter.command(commands=("pin")) & ~filters.edited)
  225. async def pin(_, message: Message):
  226. admins = await list_admins(message.chat.id)
  227. chat_id = message.chat.id
  228. from_user_id = message.from_user.id
  229. if message.from_user.id in admins \
  230. or message.from_user.id in SUDO:
  231. if (await app.get_chat_member(chat_id,
  232. from_user_id)).can_pin_messages \
  233. or (await app.get_chat_member(chat_id, from_user_id)).status \
  234. == 'creator' \
  235. or message.from_user.id in SUDO:
  236. await message.reply_to_message.pin(disable_notification=True)
  237. else:
  238. await message.reply_text("You're Not An Admin, Stop Spamming!")
  239. # Mute members
  240. @app.on_message(cust_filter.command(commands=("mute")) & ~filters.edited)
  241. async def mute(_, message: Message):
  242. chat_id = message.chat.id
  243. from_user_id = message.from_user.id
  244. if not message.reply_to_message:
  245. await message.reply_text("Reply To A User's Message!")
  246. return
  247. if (await app.get_chat_member(chat_id,
  248. from_user_id)).can_restrict_members \
  249. or (await app.get_chat_member(chat_id, from_user_id)).status \
  250. == 'creator' \
  251. or message.from_user.id in SUDO:
  252. victim = message.reply_to_message.from_user.id
  253. await message.chat.restrict_member(victim,
  254. permissions=ChatPermissions())
  255. await message.reply_text("Muted!")
  256. else:
  257. await message.reply_text("Get Yourself An Admin Tag!")
  258. # Unmute members
  259. @app.on_message(cust_filter.command(commands=("unmute")) & ~filters.edited)
  260. async def unmute(_, message: Message):
  261. chat_id = message.chat.id
  262. from_user_id = message.from_user.id
  263. if not message.reply_to_message:
  264. await message.reply_text("Reply To A User's Message!")
  265. return
  266. if (await app.get_chat_member(chat_id,
  267. from_user_id)).can_restrict_members \
  268. or (await app.get_chat_member(chat_id, from_user_id)).status \
  269. == 'creator' \
  270. or message.from_user.id in SUDO:
  271. victim = message.reply_to_message.from_user.id
  272. await message.chat.unban_member(victim)
  273. await message.reply_text("Unmuted!")
  274. else:
  275. await message.reply_text("Get Yourself An Admin Tag!")