admin.py 14 KB

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