randydev commited on
Commit
3b5a9e0
·
verified ·
1 Parent(s): 0ae53fc
Files changed (1) hide show
  1. akn/AllDownloaderBot/admins.py +18 -4
akn/AllDownloaderBot/admins.py CHANGED
@@ -4,15 +4,20 @@ from pyrogram.types import *
4
  from pyrogram.enums import *
5
  from akn.utils.database import db
6
 
 
 
7
  unmute_permissions = ChatPermissions(
8
  can_send_messages=True,
9
  can_send_media_messages=True,
10
  can_send_polls=True,
 
 
11
  can_change_info=False,
12
  can_invite_users=True,
13
- can_pin_messages=False,
14
  )
15
 
 
16
  async def extract_userid(message, text: str):
17
  def is_int(text: str):
18
  try:
@@ -51,7 +56,9 @@ async def arz_update_admin_cache(client, chat_id):
51
  async def xarzunmute_cbok(client, callback):
52
  chat_id = int(callback.matches[0].group(1))
53
  user_id = int(callback.matches[0].group(2))
54
-
 
 
55
  admins = cached_admins.get(chat_id, [])
56
  chat_data = await db.alldl_bot.find_one({"chat_ids": chat_id})
57
  admins = chat_data.get("chat_admins", []) if chat_data else []
@@ -62,18 +69,23 @@ async def xarzunmute_cbok(client, callback):
62
  await callback.answer("⚠️ Only admins can unmute!", show_alert=True)
63
  return
64
  try:
 
65
  await client.restrict_chat_member(chat_id, user_id, unmute_permissions)
66
  await callback.message.edit_text(
67
- f"✅ User {user_id} unmuted by @{callback.from_user.username}",
68
  reply_markup=None
69
  )
70
  except Exception as e:
 
71
  await callback.message.edit_text(f"❌ Failed: {str(e)}")
72
 
73
  @Client.on_callback_query(filters.regex(r"^arzunban_(\d+)_(\d+)$"))
74
  async def xarzunban_cbok(client, callback):
75
  chat_id = int(callback.matches[0].group(1))
76
  user_id = int(callback.matches[0].group(2))
 
 
 
77
  chat_data = await db.alldl_bot.find_one({"chat_ids": chat_id})
78
  admins = chat_data.get("chat_admins", []) if chat_data else []
79
  if not admins:
@@ -83,12 +95,14 @@ async def xarzunban_cbok(client, callback):
83
  await callback.answer("⚠️ Only admins can unmute!", show_alert=True)
84
  return
85
  try:
 
86
  await client.unban_chat_member(chat_id, user_id)
87
  await callback.message.edit_text(
88
- f"✅ User {user_id} unbanned by @{callback.from_user.username}",
89
  reply_markup=None
90
  )
91
  except Exception as e:
 
92
  await callback.message.edit_text(f"❌ Failed: {str(e)}")
93
 
94
  async def extract_user_and_reason(message, sender_chat=False):
 
4
  from pyrogram.enums import *
5
  from akn.utils.database import db
6
 
7
+ from pyrogram.types import ChatPermissions
8
+
9
  unmute_permissions = ChatPermissions(
10
  can_send_messages=True,
11
  can_send_media_messages=True,
12
  can_send_polls=True,
13
+ can_send_other_messages=True,
14
+ can_add_web_page_previews=True,
15
  can_change_info=False,
16
  can_invite_users=True,
17
+ can_pin_messages=False
18
  )
19
 
20
+
21
  async def extract_userid(message, text: str):
22
  def is_int(text: str):
23
  try:
 
56
  async def xarzunmute_cbok(client, callback):
57
  chat_id = int(callback.matches[0].group(1))
58
  user_id = int(callback.matches[0].group(2))
59
+ chat_member = await client.get_chat_member(chat_id, client.me.id)
60
+ if not chat_member or not chat_member.can_restrict_members:
61
+ await callback.answer("⚠️ Bot needs 'Restrict Members' permission!", show_alert=True)
62
  admins = cached_admins.get(chat_id, [])
63
  chat_data = await db.alldl_bot.find_one({"chat_ids": chat_id})
64
  admins = chat_data.get("chat_admins", []) if chat_data else []
 
69
  await callback.answer("⚠️ Only admins can unmute!", show_alert=True)
70
  return
71
  try:
72
+ user_mention = callback.from_user.mention
73
  await client.restrict_chat_member(chat_id, user_id, unmute_permissions)
74
  await callback.message.edit_text(
75
+ f"✅ User {user_id} unmuted by {user_mention}",
76
  reply_markup=None
77
  )
78
  except Exception as e:
79
+ LOGS.error(f"Error xarzunmute_cbok: {str(e)} ")
80
  await callback.message.edit_text(f"❌ Failed: {str(e)}")
81
 
82
  @Client.on_callback_query(filters.regex(r"^arzunban_(\d+)_(\d+)$"))
83
  async def xarzunban_cbok(client, callback):
84
  chat_id = int(callback.matches[0].group(1))
85
  user_id = int(callback.matches[0].group(2))
86
+ chat_member = await client.get_chat_member(chat_id, client.me.id)
87
+ if not chat_member or not chat_member.can_restrict_members:
88
+ await callback.answer("⚠️ Bot needs 'Restrict Members' permission!", show_alert=True)
89
  chat_data = await db.alldl_bot.find_one({"chat_ids": chat_id})
90
  admins = chat_data.get("chat_admins", []) if chat_data else []
91
  if not admins:
 
95
  await callback.answer("⚠️ Only admins can unmute!", show_alert=True)
96
  return
97
  try:
98
+ user_mention = callback.from_user.mention
99
  await client.unban_chat_member(chat_id, user_id)
100
  await callback.message.edit_text(
101
+ f"✅ User {user_id} unbanned by {user_mention}",
102
  reply_markup=None
103
  )
104
  except Exception as e:
105
+ LOGS.error(f"Error xarzunban_cbok: {str(e)} ")
106
  await callback.message.edit_text(f"❌ Failed: {str(e)}")
107
 
108
  async def extract_user_and_reason(message, sender_chat=False):