admin.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import json
  2. import os
  3. from wbb import OWNER_ID, SUDO_USER_ID, app
  4. from wbb.utils import cust_filter
  5. __MODULE__ = "Admin"
  6. __HELP__ = "/purge - Purge Messages [Limit = 100]"
  7. SUDO = [OWNER_ID, SUDO_USER_ID]
  8. # Get The List Of Admins In A Chats
  9. async def list_admins(group_id):
  10. list_of_admins = []
  11. async for member in app.iter_chat_members(
  12. group_id, filter="administrators"):
  13. list_of_admins.append(member.user.id)
  14. return list_of_admins
  15. # Get Permissions Of an Admin
  16. async def check_perms(message, permission):
  17. permissions = await app.get_chat_member(
  18. chat_id=message.chat.id, user_id=message.from_user.id
  19. )
  20. try:
  21. os.remove('permissions.json')
  22. except FileNotFoundError:
  23. pass
  24. f = open("permissions.json", "a")
  25. f.write(str(permissions))
  26. f.close()
  27. with open('permissions.json') as faa:
  28. data = json.load(faa)
  29. perm = (data[permission]) # ex: permission = can_delete_messages
  30. os.remove('permissions.json')
  31. return perm
  32. # Purge Messages
  33. @app.on_message(cust_filter.command(commands=("purge")))
  34. async def purge(client, message):
  35. message_ids = []
  36. if message.chat.type not in (("supergroup", "channel")):
  37. return
  38. admins = await list_admins(message.chat.id)
  39. status = await check_perms(message, "status")
  40. try:
  41. can_delete = await check_perms(message, "can_delete_messages")
  42. except KeyError:
  43. can_delete = "false"
  44. # If user has no permissions to delete messages
  45. if status == 'member' or status == 'administrator':
  46. if can_delete == 'false' and message.from_user.id not in SUDO:
  47. await message.reply_text(
  48. "You Are Not Admin, Stop Spamming! else /bun"
  49. )
  50. # If user has permissions to delete messages
  51. if message.from_user.id in admins \
  52. or message.from_user.id in SUDO:
  53. if can_delete is True or status == 'creator' \
  54. or message.from_user.id in SUDO:
  55. if message.reply_to_message:
  56. for a_s_message_id in range(
  57. message.reply_to_message.message_id,
  58. message.message_id
  59. ):
  60. message_ids.append(a_s_message_id)
  61. if len(message_ids) == 100:
  62. await client.delete_messages(
  63. chat_id=message.chat.id,
  64. message_ids=message_ids,
  65. revoke=True
  66. )
  67. message_ids = []
  68. if len(message_ids) > 0:
  69. await client.delete_messages(
  70. chat_id=message.chat.id,
  71. message_ids=message_ids,
  72. revoke=True
  73. )
  74. # Kick members
  75. @app.on_message(cust_filter.command(commands=("kick")))
  76. async def kick(client, message):
  77. username = (message.text.split(None, 2)[1])
  78. reason = (message.text.split(None, 2)[2])
  79. admins = await list_admins(message.chat.id)
  80. if message.from_user.id in admins \
  81. or message.from_user.id in SUDO:
  82. if username != "":
  83. await message.chat.kick_member(username)
  84. await message.chat.unban_member(username)
  85. if reason != "":
  86. await message.reply_text(
  87. f"Kicked {username}!"
  88. f"Reason: {reason}")
  89. else:
  90. await message.reply_text(
  91. f"Kicked {username}!"
  92. f"Reason: Kicked without a reason! lol")
  93. else:
  94. id = message.reply_to_message.from_user.id
  95. await message.reply_to_message.chat.kick_member(id)
  96. await message.reply_to_message.chat.unban_member(id)
  97. if reason != "":
  98. await message.reply_text(
  99. f"Kicked {username}!"
  100. f"Reason: {reason}")
  101. else:
  102. await message.reply_text(
  103. f"Kicked {username}!"
  104. f"Reason: Kicked without a reason! lol")
  105. else:
  106. await message.reply_text("You Are Not Admin, Stop Spamming! else /bun")
  107. # Ban members
  108. @app.on_message(cust_filter.command(commands=("ban")))
  109. async def ban(client, message):
  110. username = (message.text.split(None, 1)[1])
  111. if username != "":
  112. await message.chat.kick_member(username)
  113. await message.reply_text(f"Banned {username}!")
  114. else:
  115. id = message.reply_to_message.from_user.id
  116. await message.reply_to_message.chat.kick_member(id)
  117. await message.reply_text(f"Banned {username}!")
  118. # Unban members
  119. @app.on_message(cust_filter.command(commands=("unban")))
  120. async def unban(client, message):
  121. username = (message.text.split(None, 1)[1])
  122. if username != "":
  123. await message.chat.unban_member(username)
  124. await message.reply_text(f"Unbanned {username}!")
  125. else:
  126. id = message.reply_to_message.from_user.id
  127. await message.reply_to_message.chat.unban_member(id)
  128. await message.reply_text(f"Unbanned {username}!")