admin.py 5.0 KB

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