Spaces:
Paused
Paused
Captain Ezio
commited on
Commit
·
31a92c3
1
Parent(s):
c45f067
fine now may be
Browse files- 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 |
-
|
| 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 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
|
|
|
|
|
|
| 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):
|