Captain Ezio commited on
Commit
225c97e
·
1 Parent(s): 2a73bdb

fine now may be

Browse files
Files changed (1) hide show
  1. Powers/plugins/admin.py +83 -15
Powers/plugins/admin.py CHANGED
@@ -208,14 +208,7 @@ async def fullpromote_usr(c: Gojo, m: Message):
208
  try:
209
  await m.chat.promote_member(
210
  user_id=user_id,
211
- can_change_info=bot.privileges.can_change_info,
212
- can_invite_users=bot.privileges.can_invite_users,
213
- can_delete_messages=bot.privileges.can_delete_messages,
214
- can_restrict_members=bot.privileges.can_restrict_members,
215
- can_pin_messages=bot.privileges.can_pin_messages,
216
- can_promote_members=bot.privileges.can_promote_members,
217
- can_manage_chat=bot.privileges.can_manage_chat,
218
- can_manage_video_chats=bot.privileges.can_manage_video_chats,
219
  )
220
 
221
  title = ""
@@ -321,13 +314,15 @@ async def promote_usr(c: Gojo, m: Message):
321
  try:
322
  await m.chat.promote_member(
323
  user_id=user_id,
324
- can_change_info=bot.privileges.can_change_info,
325
- can_invite_users=bot.privileges.can_invite_users,
326
- can_delete_messages=bot.privileges.can_delete_messages,
327
- can_restrict_members=bot.privileges.can_restrict_members,
328
- can_pin_messages=bot.privileges.can_pin_messages,
329
- can_manage_chat=bot.privileges.can_manage_chat,
330
- can_manage_video_chats=bot.privileges.can_manage_video_chats,
 
 
331
  )
332
 
333
  title = "" # Deafult title
@@ -389,6 +384,79 @@ async def promote_usr(c: Gojo, m: Message):
389
  LOGGER.error(format_exc())
390
  return
391
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
392
 
393
  @Gojo.on_message(command("invitelink"))
394
  async def get_invitelink(c: Gojo, m: Message):
 
208
  try:
209
  await m.chat.promote_member(
210
  user_id=user_id,
211
+ privileges=bot.privileges
 
 
 
 
 
 
 
212
  )
213
 
214
  title = ""
 
314
  try:
315
  await m.chat.promote_member(
316
  user_id=user_id,
317
+ privileges=ChatPrivileges(
318
+ can_change_info=bot.privileges.can_change_info,
319
+ can_invite_users=bot.privileges.can_invite_users,
320
+ can_delete_messages=bot.privileges.can_delete_messages,
321
+ can_restrict_members=bot.privileges.can_restrict_members,
322
+ can_pin_messages=bot.privileges.can_pin_messages,
323
+ can_manage_chat=bot.privileges.can_manage_chat,
324
+ can_manage_video_chats=bot.privileges.can_manage_video_chats,
325
+ )
326
  )
327
 
328
  title = "" # Deafult title
 
384
  LOGGER.error(format_exc())
385
  return
386
 
387
+ @Gojo.on_message(command("demote") & promote_filter)
388
+ async def demote_usr(c: Gojo, m: Message):
389
+
390
+ global ADMIN_CACHE
391
+
392
+ if len(m.text.split()) == 1 and not m.reply_to_message:
393
+ await m.reply_text("I can't demote nothing.")
394
+ return
395
+
396
+ try:
397
+ user_id, user_first_name, _ = await extract_user(c, m)
398
+ except Exception:
399
+ return
400
+
401
+ if user_id == Config.BOT_ID:
402
+ await m.reply_text("Get an admin to demote me!")
403
+ return
404
+
405
+ # If user not already admin
406
+ try:
407
+ admin_list = {i[0] for i in ADMIN_CACHE[m.chat.id]}
408
+ except KeyError:
409
+ admin_list = {
410
+ i[0] for i in (await admin_cache_reload(m, "demote_cache_update"))
411
+ }
412
+
413
+ if user_id not in admin_list:
414
+ await m.reply_text(
415
+ "This user is not an admin, how am I supposed to re-demote them?",
416
+ )
417
+ return
418
+
419
+ try:
420
+ await m.chat.promote_member(
421
+ user_id=user_id,
422
+ privileges=ChatPrivileges(can_manage_chat=False),
423
+ )
424
+ LOGGER.info(f"{m.from_user.id} demoted {user_id} in {m.chat.id}")
425
+
426
+ # ----- Remove admin from cache -----
427
+ try:
428
+ admin_list = ADMIN_CACHE[m.chat.id]
429
+ user = next(user for user in admin_list if user[0] == user_id)
430
+ admin_list.remove(user)
431
+ ADMIN_CACHE[m.chat.id] = admin_list
432
+ except (KeyError, StopIteration):
433
+ await admin_cache_reload(m, "demote_key_stopiter_error")
434
+
435
+ await m.reply_text(
436
+ ("{demoter} demoted {demoted} in <b>{chat_title}</b>!").format(
437
+ demoter=(
438
+ await mention_html(
439
+ m.from_user.first_name,
440
+ m.from_user.id,
441
+ )
442
+ ),
443
+ demoted=(await mention_html(user_first_name, user_id)),
444
+ chat_title=m.chat.title,
445
+ ),
446
+ )
447
+
448
+ except ChatAdminRequired:
449
+ await m.reply_text("I am not admin aroung here.")
450
+ except RightForbidden:
451
+ await m.reply_text("I can't demote users here.")
452
+ except UserAdminInvalid:
453
+ await m.reply_text("Cannot act on this user, maybe I wasn't the one who changed their permissions.")
454
+ except RPCError as ef:
455
+ await m.reply_text(f"Some error occured, report to @{SUPPORT_GROUP} \n <b>Error:</b> <code>{ef}</code>")
456
+ LOGGER.error(ef)
457
+ LOGGER.error(format_exc())
458
+
459
+ return
460
 
461
  @Gojo.on_message(command("invitelink"))
462
  async def get_invitelink(c: Gojo, m: Message):